Bonjour, je vais essayer de vous exposer clairement mon soucis
J'ai un 1er fichier 1.xls qui comporte 3 colonnes: Nom_1 - Info1 - Info2
Un second fichier 2.xls dans un répertoire différent (non modifiable): Nom_2 - Nom_1 - Info1
Dans le second fichier la colonne Nom_1 est rentrée manuellement et Info1 est cherchée par un vlookup. Cependant comme le fichier est gros et partagé, j'ai voulu faire une macro pour effectuer ce vlookup.
La méthode (macro) que j'ai utilisé jusqu'ici est la suivante:
- J'utilise une case inutilisée et je lui mets la formule du vlookup comme dans Excel.
sheets(1).range("D1" ).formula = "=vlookup..."
- Ensuite je copie cette formule dans la case qui m'intéresse:
sheets(1).range("C2" ) = sheets(1).range("D1" ).value
Bien sûr tout ceci est une boucle, ça marche plutôt bien mais j'aimerai améliorer ça parce que je trouve cette méthode pas très orthodoxe et au final je n'ai pas l'impression d'exploiter VBA ...
Déjà, pour gagner en visibilité, je voulais modifier le chemin dans le vlookup en passant par une variable de type string mais je n'arrive pas à trouver la bonne formulation:
Dim chemin As String
chemin = "C:\chemin1\"
[..].formula = "=vlookup(cell, ???,nb,0)"
A la place des ??? je ne sais pas comment appeler correctement la range, j'ai essayé plusieurs fois avec des & chemin & [1.xls]Onglet1'!A:F par exemple.
Face à cet échec je me suis dit que j'allais passer directement par un vlookup de VBA en utilisant worksheetfunction.vlookup mais je me suis trouvé face aux problèmes suivants:
- Je fais une boucle (indice I) pour faire un vlookup sur tous mes éléments de Nom_2 donc j'ai une cell non fixe. J'ai essayé d'écrire:
worksheetfunction.vlookup("A" & I ,...) mais ça ne passe pas.
- J'ai alors mis une cell fixe pour tester au niveau de la range et là c'est dans la définition de la range que j'ai un problème. J'ai voulu faire:
Dim rng As Range
rng = ??? (doit faire appel à A:C de 1.xls par exemple)
worksheetfunction.vlookup(" ",rng,...)
En gros je ne sais pas comment définir la range si elle est dans un autre fichier!
J'espère avoir été assez clair :| En tout cas merci beaucoup à ceux qui auront pris la peine de tout lire et qui auraient une aide à m'apporter
Christophe