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.
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+