Doublons avec EQUIV et INDEX

Bonsoir,

J'ai pas mal cherché sur internet mais je n'ai pas trouvé la solution à mon problème...
J'utilise les fonctions EQUIV et INDEX pour venir recopier mes données des colonnes I et J de la feuille 2 dans les colonnes AD et AE sur la feuille 1 parce que rien n'est dans le même ordre puis surtout les plages de données des 2 feuilles sont aléatoires (colonnes toujours fixes par contre). Je préviens en cas de macro: grosse plages de données (16000 lignes sur chaque feuille en moyenne).

Mon soucis étant que j'obtiens des doublons qui ne sont du coup pas pris en compte.
Auriez-vous une solution ?
Merci d'avance : )

32book1.xlsx (21.72 Ko)

Bonjour,

Sur votre exemple, je n'ai pas vraiment compris où était le problème puisqu'il n'y a pas de doublon sur la feuille 1...

En tout cas, voici une proposition en modifiant (si c'est possible pour vous) le code concaténé, sur chacune des feuilles, de manière à ce qu'il intègre un compteur d'occurrence. Ca permettra d'avoir une clé unique.

J'ai créé des tableaux structurés.

53book1.xlsx (26.30 Ko)

Cdlt,

Bonjour,

Désolé je n'ai pas été assez clair, le soucis étant que j'ai plusieurs résultats de la feuille 2 pour une même ligne de la feuille 1, il faudrait soit que la ligne en feuille 1 se duplique automatiquement en fonction du nombre de résultats correspondant en feuille 2 et venir coller tous les résultats.
Soit que les résultats s'écrivent à la suite sur la même ligne en feuille 1.
N'hésitez pas si besoin d'autres explications

Merci de votre aide

Bonjour,

Voici un nouvel essai, cette fois avec une fonction personnalisée renvoyant une concaténation des résultats :

Function IndexConcat(rRenvoi As Range, vcherchee$, rCherche As Range) As String
tC = rCherche.Value
tR = rRenvoi.Value
Set dico = CreateObject("Scripting.Dictionary")
For i = LBound(tC) To UBound(tC)
    If tC(i, 1) = vcherchee Then
        If Not dico.exists(vcherchee) Then
            dico(vcherchee) = tR(i, 1)
        Else
            dico(vcherchee) = dico(vcherchee) & " - " & tR(i, 1)
        End If
    End If
Next i
IndexConcat = dico(vcherchee)
End Function

Elle est à utiliser ainsi :

=IndexConcat(PlageValeursàRenvoyer;ValeurCherchee;PlageRecherche)

Un peu comme un INDEX EQUIV (mêmes paramètres quasiment) mais sans le EQUIV.

Pour 16000 lignes, je ne sais pas par contre ce que ça donnera... Je me dis qu'une macro serait préférable, ou peut-être une autre solution...

14book1.xlsm (31.41 Ko)

Bonjour,

Si j'ai bien compris votre problème, vous souhaitez récupérer toutes les valeurs de la colonne I correspond à une valeur de la colonne D.
En "Sheet1", case AD2 vous pouvez essayer cette formule :

=CONCAT(FILTRE(Sheet2!$I$2:$I$62&";";Sheet2!$D$2:$D$62=$G2;""))

A priori la fonction FILTRE() est disponible sous Excel 2016, à confirmer.

Bonjour Oups,

Non, je crois que toutes ces fonctions FILTRE, TRI, etc ne sont disponibles que sur 365. Et CONCAT que je ne connaissais pas ne doit être disponible que dans les dernières versions ou 365 également.

Cdlt,

La fonction CONCAT() remplace CONCATENER(). Je pense que l'une ou l'autre devrait être disponible sur la version 2016.

Concernant la fonction FILTRE() j'avais fait une recherche qui me laisser croire que la fonction pouvait exister mais sans certitude. Si elle n'est disponible que sur 365 ça tombe à l'eau effectivement.

Oui, CONCATENER est sûrement disponible. En général, les anciennes fonctions/fonctionnalités demeurent pour assurer la compatibilité entre les versions.

Perso, je n'ai jamais vu une de ces versions malheureusement, le mieux que j'ai pu faire, c'est 2013 .

Cdlt,

Bonsoir,

Pour concat c’est la même chose effectivement.

Pour la fonction filtre, je regarde ça demain matin et je vous dirais mais ça ne me parle pas.

Et je regarde aussi la y’a solution 3GB

Merci à vous

Bonjour,

Un début de réponse avec Power Query.

Cdlt.

17book1.xlsx (31.78 Ko)
Rechercher des sujets similaires à "doublons equiv index"