Boucle vlookup
Bonjour à tous,
Je suis débutante en programmation vba et j'ai déja quelques soucis
J'essaye de renseigner une partie d'un tableau automatiquement (8 colonnes de 80 lignes environ) en utilisant la fonction vlookup intégré dans une boucle for.
Lorsque je lance la macro, il ne semble pas y avoir d'erreur mais j'ai toujours un seul et même résultat qui s'affiche sur toutes les colonnes à renseigner... J'ai l'impression que ma boucle ne tourne pas.
Pour les expérimentés pourriez-vous m'éclairer s'il vous plaît ?
voici mon code:
Sub mise_ajour()
'la derniere ligne de la base
Dim derniere_ligne As Integer
derniere_ligne = Sheets("Base").Range("B8:B83").End(xlDown).Row
'Determiner la valeur recherchee
Dim matricule As Variant
For a = 8 To derniere_ligne
matricule = Sheets("base").Cells(a, 2)
Next
'Determine la plage dans laquelle la valeur est recherchee
Set plage_etp = Sheets("Mappingetp").Range("B3:P76")
'Determine le numero de colonne
For b = 8 To 15
numero_col = b
Next
'Mis à jour des données effectifs
For i = 8 To derniere_ligne
For j=25 to 31
Sheets("base").Cells(i, j) = Application.WorksheetFunction.VLookup(matricule, plage_etp, numero_col, False)
Next
Next
End Sub
Merci
Bonjour nda.
Bonjour le forum.
Peux-tu fournir le fichier sans données confidentielles ?
Bonjour,
A première vu, je pense que la partie suivante pose problème :
'Determiner la valeur recherchee
Dim matricule As Variant
For a = 8 To derniere_ligne
matricule = Sheets("base").Cells(a, 2)
Next'Determine le numero de colonne
For b = 8 To 15
numero_col = b
NextCes boucles sont inutiles car la variable matricule sera toujours égale à la cellule "Cells(derniere_ligne,2)" et le numero_col sera toujours égale à 15 après le "Next"
Donc lorsque tu fais en boucle :
Sheets("base").Cells(i, j) = Application.WorksheetFunction.VLookup(matricule, plage_etp, numero_col, False)le numero_col est constamment 15 et matricule constamment "Cells(derniere_ligne,2)"
Malheureusement sans fichier c'est compliqué de t'aider
En espérant t'avoir aider.
A plus !
Pour t'aider,
Tu peux mettre des Msgbox comme cela :
MsgBox matricule
Msgbox numero_coljuste avant ta boucle sur le VlookUp et tu verrra que rien ne change
Bon j'ai essayé quelque chose, essaye de remplacer ton code par celui-ci :
Sub mise_ajour()
Dim derniere_ligne As Integer
Dim plage_etp As Range
Dim matricule As Variant
derniere_ligne = Sheets("Base").Range("B8:B83").End(xlDown).Row 'la derniere ligne de la base
Set plage_etp = Sheets("Mappingetp").Range("B3:P76") 'Determine la plage dans laquelle la valeur est recherchee
For a = 8 To derniere_ligne 'Determiner la valeur recherchee
matricule = Sheets("base").Cells(a, 2)
numero_col = 8
For Each cel In Sheets("base").Range(Cells(a, 25), Cells(a, 31)) 'j = 25 To 31 'Mis à jour des données effectifs
cel = Application.WorksheetFunction.VLookup(matricule, plage_etp, numero_col, False)
numero_col = numero_col + 1
Next cel
Next a
End SubEn espérant qu'il fonctionne,
A plus !