Vlookup dans fichier fermé
Tout d'abord bonjour à tous !
Jeune praticien du VBA, je sors tout juste d'une formation professionnelle et je me lance dans la rédaction d'une procédure pour mon travail.
Je cherche a faire un vlookup sur un fichier fermé. Je vous copie/colle le code ici car je ne sais pas trop exposer un exemple du fait que j'ai 2 variables dans le fichier.
Je m'explique
(FilePath) étant le fichier sur lequel le résultat du Vlookup doit s'afficher
(FilePrevious) étant le fichier sur lequel le vlookup ira chercher les valeurs à affecter.
_ Etape 1 : dans mon classeur (FilePath) qui est ouvert, il va ajouter une colonne et effectuer un concatenage
_ Etape 2 : sur la base du concatenage, il ira chercher la valeur correspondante dans le (FilePrevious)
Donc tout marche correctement sauf qu'il me demande à chaque Vlookup d'aller chercher le classeur fermé.
Etant donné qu'il a le nom, son chemin etc... pourquoi dois je lui redonner à chaque fois manuellement ?
D'après mes premières recherches, cela n'a pas l'air aisé... ne sachant pas ou poser ma question je me dirige vers vous
En tout cas, merci pour votre aide ! j'espere également (qui sait?) en apporter à qq'un ici maintenant que je prends place sur votre forum.
(ps : je peux voir pour créer un exemple si le code ne parle pas trop et qu'un exemple est la meilleur manière pour m'aider)
Windows(FilePath).Activate
'ajout colonne pour concatenate
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Range("B1") = "Conca"
Range("K1") = "Commentaire 1"
Range("L1") = "Commentaire 2"
Range("A1").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Offset(0, 1) = "" Then
ActiveCell.Offset(0, 1) = "=CONCATENATE(RC[1],RC[7])"
ActiveCell.Offset(0, 10) = "=VLOOKUP(RC[-9],'[Fileprevious]Sheet1'!C2:C11,10,FALSE)"
ActiveCell.Offset(0, 11) = "=VLOOKUP(RC[-10],'[Fileprevious]Sheet1'!C2:C11,10,FALSE)"
End If
Selection.Offset(1, 0).Select
Loop
Bonjour et bienvenue sur le forum,
je crois que tu fais une erreur de syntaxe avec ta variable FilePrevious
ActiveCell.Offset(0, 10) = "=VLOOKUP(RC[-9],'[" & FilePrevious & "]Sheet1'!C2:C11,10,FALSE)"
ActiveCell.Offset(0, 11) = "=VLOOKUP(RC[-10],'[" & FilePrevious & "]Sheet1'!C2:C11,10,FALSE)"Merci beaucoup pour ta réponse !!
J'ai modifié le code, effectivement il ne cherche plus le (FilePrevious) mais il me demande tjrs de lui retrouver le fichier (qui porte cette fois ci le bon nom)
il ne veut pas faire le vlookup tout seul comme un grand
-- 11 Mai 2010, 15:03 --
Correction, ca marche si le fichier à "vlookupé" c-a-d le (FilePrevious) est ouvert sur mon desktop.
En revanche, nada si celui-ci est fermé
au début de ta macro, ajoute la ligne
Application.Screenupdating = Falseet ensuite ouvre le classeur FilePrevious, poursuit avec ton code et à la fin ferme le classeur FilePrevious et remet Screenupdating = True.
yes ! j'utilise beaucoup ce Application.Screenupdating = False il est en début de code
et très bonne idée, je vais lui demander d'ouvrir le fichier et de le refermer ensuite !
test effectué : ca marche très bien merci !!!