INDEX-EQUIV inter-fichier en VBA

Bonjour à tous,

J'essaie depuis des jours à générer l'équivalent d'un INDEX-EQUIV d'un fichier à un autre grâce à une macro sans succès.

Voici le problème:

Fichier 1 - Feuille 5 contient une liste de nombre en colonne A et une liste de mot en colonne M

Fichier 2 - Feuille 3 contient la même liste de nombre en colonne A mais mélanger aléatoirement.

Mon but est de mettre dans la colonne M du fichier 2 le mot correspondant grâce au fichier 1.

Exemple:

  • Fichier N°1:
    1 toto
    2 tata
    3 titi
    4 tutu
  • Fichier N°2 attendu:
    2 tata
    1 toto
    4 tutu
    3 titi

Sous Excel, voici la formule que j'utilise en M2 :

=INDEX('[Fichier 1.xlsx]Feuille 5'!$M:$M;EQUIV($A2;'[Fichier 1.xlsx]Feuille 5'!$A:$A);0)

J'ai essayé plein de choses :

  • Alimenter la value des cellules
  • Alimenter la formula et la formulaR1C1
  • Remplacer EQUIV par MATCH

Malgré tout mes essais, impossible d'y arriver.

Merci d'avance à la bonne âme qui acceptera de m'aider.

Bonjour,

à tester,

Set wk = Workbooks("Fichier 1.xlsx")
Set sh = wk.Sheets("Feuille 5")
t = Application.Index(sh.Range("M:M"), Application.Match(Range("A2"), sh.Range(" A:A")), 0)

Merci beaucoup, après l'avoir adapté, ça fonctionne super.

Voici mon code final :

    Set wk1 = Workbooks("Classeur1.xlsx")
        Set sh1 = wk1.Sheets("Feuil5")
       Set wk2 = Workbooks("Classeur2.xlsx")
        Set sh2 = wk2.Sheets("Feuil3")
        sh2.Range("M1:M" & lastRow()).Value = Application.Index(sh1.Range("M:M"), Application.Match(sh2.Range("A1:A" & lastRow()), sh1.Range("A:A")), 0)

Bonjour à tous,

Je ré-ouvre le sujet car j'ai un petit problème. Cela fonctionne mais pas intégralement.

Si jamais aucune donnée n'est trouvé, cela duplique la dernière donnée trouvée.

Je m'explique:

Imaginons qu'on a toto=0, tata=1 et tutu=2.

Si je demande le 1, ça me renvoie tata, c'est parfait.

Par contre, si je demande 42, ça me renvoie le dernier élément, tutu par exemple.

N'y a-t'il aucun moyen d'éviter ça en renvoyant N/A par exemple?

re,

tu ne peux pas modifier la formule de cette façon,

il faut mettre l'exemple donné dans un boucle.

t = Application.Index(sh.Range("M:M"), Application.Match(Range("A2"), sh.Range(" A:A")), 0)

J'ai essayé avec une boucle en calculant chaque résultat un par un mais le résultat est le même malheureusement

re,

voici un exemple,

Super, merci beaucoup, je enfin réussi a faire ce que je voulais

Rechercher des sujets similaires à "index equiv inter fichier vba"