Créer une macro à la place d'une recherche 2 critères (index (equiv))

Bonjour

je fais des recherches 2 critères par exemple avec la formule ci dessous appliquée aux fichiers joints

=INDEX('[listing élèves.xlsx]Feuil1'!$C$1:$C$200;EQUIV(A2&B2;'[listing élèves.xlsx]Feuil1'!$A1:$A200&'[listing élèves.xlsx]Feuil1'!$B1:$B200;0))

Ainsi j'importe les dates de naissance depuis listing élèves dans la colonnes Date de naissance du fichier "Liste d'appréciations"

Je voudrais pouvoir le faire via une macro car le fichier liste appréciations est beaucoup plus grand et change souvent, donc pour éviter de refaire systématiquement la formule index et peut être limiter l'espace de stockage, je cherche à faire la macro qui fera cette recherches mais pour l'instant je bloque

merci

Pour lier des tableaux enter eux, les fusionner et les exploiter, pas besoin de macro : Juste le module Power Query (en module pour Excel 2010; en natif pour 2016 et suivants)

Bonjour,

ta formule est erronée !

=INDEX('[listing élèves.xlsx]Feuil1'!$C$1:$C$200;EQUIV(A2&B2;'[listing élèves.xlsx]Feuil1'!$A1:$A200&'[listing élèves.xlsx]Feuil1'!$B1:$B200;0))

il faudrait que ce soit (note les $ en plus sur la plage du fichier listing élèves) :

=INDEX('[listing élèves.xlsx]Feuil1'!$C$2:$C$201;EQUIV(A2&B2;'[listing élèves.xlsx]Feuil1'!$A$2:$A$201&'[listing élèves.xlsx]Feuil1'!$B$2:$B$201;0))

et tu gagnerais en passant tes données en tableau

=INDEX('listing élèves.xlsx'!Tableau1[Date de naissance];EQUIV([@[Nom ]]&[@Prénom];'listing élèves.xlsx'!Tableau1[[Nom ]]&'listing élèves.xlsx'!Tableau1[Prénom];0))

Je voudrais pouvoir le faire via une macro car le fichier liste appréciations est beaucoup plus grand et change souvent, donc pour éviter de refaire systématiquement la formule index et peut être limiter l'espace de stockage, je cherche à faire la macro qui fera cette recherches mais pour l'instant je bloque

En passant en tableau, tu n'as pas à "refaire" index/equiv, même pas à tirer vers le bas, la formule est mise en place automatiquement lorsque tu ajoutes une ligne.

Maintenant, si tu voulais quand même cet automatisme, est-ce que tu souhaites avoir des liaisons entre les fichiers ou seulement importer la valeur ?

Pour PowerQuery, je te laisse avec Rrradassse qui te donnera de plus amples explications.

Bonjour ,

merci pour vos réponses

@ Steelson effectivement la formule en tableau est bien pratique. Je pense que ça va me convenir.

Pour répondre à ta deuxième question, à l'origine je cherchais simplement à importer les valeurs, sans liaison permanente. Du coup je reste juste un peu sur ma faim pour savoir comment faire ce code VBA.

@ Rrradassse, merci également, je vais regarder également powerQuery pour découvrir car je ne connais pas.

@ Rrradassse, sais tu ou je peux trouver un exemple de ce type de recherche dans powerquery?

D'avance merci

Pour ma part ...

Mest à jour le répertoire et si besoin le nom du fichier dans la macro

Sub lien()
Dim rep As String, rng As Range, fic As String
With ActiveSheet
' ######## à mettre à jour ##########
    rep = "C:\Users\Michel\Downloads"
    fic = "listing élèves.xlsx"
' #############################
    Workbooks.Open Filename:=rep & "\" & fic
    Set rng = .Range("K2:K" & .Cells(Rows.Count, 1).End(xlUp).Row)
    For Each cel In rng
        cel.FormulaArray = "=IFERROR(INDEX('" & fic & "'!Tableau1[Date de naissance],MATCH([@[Nom ]]&[@Prénom],'" & fic & "'!Tableau1[[Nom ]]&'" & fic & "'!Tableau1[Prénom],0)),""??"")"
    Next
    rng.Copy
    rng.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Workbooks(fic).Close
End With
End Sub

un grand merci

@ Rrradassse, sais tu ou je peux trouver un exemple de ce type de recherche dans powerquery?

D'avance merci

il s'agit des options pour fusionner 2 (ou plus) requettes. Regarde un peu les tutos sur Excel et les conversations qui en parlent ici

Merci

Rechercher des sujets similaires à "creer macro place recherche criteres index equiv"