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
Next

Ces 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_col

juste 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 Sub

En espérant qu'il fonctionne,

A plus !

Rechercher des sujets similaires à "boucle vlookup"