Bonjour à tous,
Je souhaite faire un comparatif entre deux fichiers de versions différentes où figurent des lignes de commandes (le fichier ouvert V1.2, sur lequel est présent le bout de macro ci-dessous, et l'autre à aller chercher, V1.1 dans mon exemple) .
Grâce à l'enregistreur de macro, j'ai pu trouver la "traduction" VBA de la fonction RECHERCHEV, en mode "R1C1" mais j'aimerais la rendre un peu plus dynamique, et donner le choix à l'utilisateur d'aller chercher lui-même le fichier qu'il veut comparer (qui contient par défaut la feuille k€, cela peut rester fixe).
Pour cela je compte calculer la première valeur puis utiliser la méthode Autofill afin de remplir les n lignes de commandes non vides.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 'RECHERCHEV des commandes présentes dans la version précédente Range("A9").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(k!R[-5]C[4],'Chemin\...\[Fichier_V1.1]k'!C5,1,FALSE)" Selection.AutoFill Destination:=Range(Cells(9, 1), Cells(der_lig, 1))
Cette méthode marche parfaitement quand le chemin et donc le nom du classeur (Fichier_V1.1) est fixe, mais ce que je souhaiterais c'est rendre dynamique le chemin d'accès et la prise en compte dans VLOOKUP.
J'avais pensé à dimensionner un fichier "previous", que l'utilisateur sélectionnerait, puis intégrer le nouvel objet "previous" dans la VLOOKUP (l'onglet k€ ne bouge pas, k€ existe dans toutes les versions du fichier)
Mais c'est là que le bât blesse, j'ai essayé ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim previous previous = Application.GetOpenFilename(, , "Sélectionnez votre source de données") 'RECHERCHEV des commandes présentes dans la version précédente Range("A9").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(k!R[-5]C[4],'Chemin\...\[previous]k'!C5,1,FALSE)" Selection.AutoFill Destination:=Range(Cells(9, 1), Cells(der_lig, 1))
Cela ne marche pas ...
Alors ma question est assez simple : comment faire prendre en compte à VLOOKUP le fichier générique "previous" ?
D'avance, merci !
Partager