Recherche v = vlookup

Bonjour,
Je rédige une MACRO.
Je souhaite automatiser une RECHERCHEV d'un fichier à un autre.

Une donnée du fichier F1 doit être rapatriée dans le fichier F2.

Nécessairement, d'un lancement à l'autre, la MACRO sera confrontée à des fichiers différents donc à des nombres de lignes différents.

_____Préalable :
Windows("F1.xlsx").Activate
derniereLigneF1 = Cells(Rows.Count, 1).End(xlUp).Row

Windows("F2.xlsx").Activate
derniereLigneF2 = Cells(Rows.Count, 1).End(xlUp).Row

_____Puis :

Windows("F2.xlsx").Activate

Range("B2").Select

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],[F1.xlsx]Feuil1!R1:R" & derniereLigneF1 & ",1,FALSE)"
Selection.AutoFill Destination:=Range("B2:B" & derniereLigneF2)

La MACRO plante avec cette notation & derniereLigneF1 &.
Effectivement, si le numéro de dernière ligne était inscrite, la MACRO ne planterait pas.

Comment rendre dynamique l'instruction VLOOKUP ?

Merci par avance pour votre aide.

Une petite idée ?

Bonjour Gi537719

Les up ne sont pas vraiment tolérés, d'autant plus quand 20mn se sont écoulés... merci de ne pas recommencer

Pour vos RechercheV(), utilisez plutôt : FormulaLocal ce qui sera plus simple à utiliser

Dans votre fichier, saisisez dans votre cellule, le RECHERCHEV() dont vous avez besoin
Ensuite vous avez juste à faire un copier/coller de la formule dans votre code VBA

A+

Bonjour BrunoM45,

Merci pour cette réponse.

Pour les UP, c'est bien noté.

Pour le RechercheV,, en recopiant dans la MACRO l'instruction créée sur une cellule, le RechercheV sera toujours indexé sur le nombre de colonnes du fichier sur lequel l'instruction a été créée.

Or, d'un fichier à l'autre, le fichier source varie en nombre de ligne.
C'est là toute ma problématique.

Re,

le RechercheV sera toujours indexé sur le nombre de colonnes du fichier sur lequel l'instruction a été créée

Tout à fait, il faut le "variabiliser" par la suite

Donnez-nous la ligne de code SVP ou mieux, le fichier

A+

Voici la ligne de code (plus exactement le contexte) :

_____Préalable :
Windows("F1.xlsx").Activate
derniereLigneF1 = Cells(Rows.Count, 1).End(xlUp).Row

Windows("F2.xlsx").Activate
derniereLigneF2 = Cells(Rows.Count, 1).End(xlUp).Row

_____Puis :

Windows("F2.xlsx").Activate

Range("B2").Select

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],[F1.xlsx]Feuil1!R1:R1048576",1,FALSE)"
Selection.AutoFill Destination:=Range("B2:B" & derniereLigneF2)

_____Question :

C'est le numéro de la ligne finale "R1048576" qu'il faut pouvoir "variabiliser".
La bonne valeur à utiliser est la variable derniereLigneF1 définie ci-avant.
Je bute sur la syntaxe.

J'avais essayé
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],[F1.xlsx]Feuil1!R:R" & derniereLigneF1 & ",1,FALSE)"

Mais ça ne fonctionne pas (j'espérais un fonctionnement à l'instar de Selection.AutoFill Destination:=Range("B2:B" & derniereLigneF2)) mais... non : ça plante.

Merci de votre aide.

Re,

Afin d'éviter de parler dans le vide et que vous puissiez comprendre ce dont je vous parlais à 13h25

Merci de joindre vos 2 fichiers anonymisé SVP

A+

Rechercher des sujets similaires à "recherche vlookup"