Référence de variable de contrôle incorrect dans next

Bonjour à toutes et tous,

Je travaille avec pour base un tableau contenant ligne par ligne différentes informations.

J'essaye de programmer une macro qui repère si de nouveaux noms se sont ajoutés dans ce tableau.

Dans ce cas, une nouvelle ligne est créée pour laisser la place.

Voici un exemple de documents :

Je cherche donc à mettre à jour l'onglet "zone de traitement" en l'alimentant via l'onglet "zone arrivée".

Les lignes où un nom connu apparait sont copier/coller en dessous des autres correspondantes aux même nom.

Sinon les nouveaux noms sont trouvés dans la "zone arrivée" puis un pop up apparait et la ligne est collée.

Voici mon code :

Sub nouveau()

Dim g As Integer, h As Integer

For g = 1 To Sheets(6).Range("A" & Rows.Count).End(xlUp).Row
    For h = 1 To Sheets(5).Range("A" & Rows.Count).End(xlUp).Row
        If Sheets(6).Cells(g, 2).Value = Sheets(5).Cells(h, 2).Value Then
            Exit For
            h = h + 1
            Sheets(5).Rows(h).Insert
            Sheets(6).Rows(g).Copy
                    With Sheets(5).Range("A" & h)
                        .PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
                        .PasteSpecial Paste:=xlPasteValuesAndNumberFormats
                    End With

        Else:
            If MsgBox("NOUVEAU FOURNISSEUR DETECTE!", vbExclamation + vbOKOnly, "Création fournisseur") = vbOK Then
                Sheets(5).Rows(1).Insert
                Sheets(6).Rows(g).Copy
                    With Sheets(5).Range("A" & 1)
                        .PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
                        .PasteSpecial Paste:=xlPasteValuesAndNumberFormats
                    End With
            End If
        End If

Next g

End Sub

Mais lorsque je l'execute je reçois un message d'erreur "référence de variable de contrôle incorrecte dans next" ... et je ne comprend pas pourquoi.

Pourriez vous m'aider ??

Merci

Alexis Az

Tu ne nextes pas ton h avant de nexter ton g

donc le compilateur cherche un next h et trouve un next g, donc référence de variable de contrôle incorrect...

Pourtant clair comme de l'eau de rose!

Le "exit for" n'empêche pas le next.

D'accord !

Merci de ton aide !

non le exit for fait que:

Tout ça est inutile..

h = h + 1

Sheets(5).Rows(h).Insert

Sheets(6).Rows(g).Copy

With Sheets(5).Range("A" & h)

.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats

.PasteSpecial Paste:=xlPasteValuesAndNumberFormats

End With

Ce qui est plutôt gênant x)

Une boucle until sera peut être plus adaptée ?

Pourrais tu rapidement expliqué pourquoi le "exit for" annulé tout ce qu'il y a après si ça ne te dérange pas.

Je pensais que ça arrêtait juste la boucle en conservant la valeur de la variable.

Édit : je vais aussi tenter l'ajout d'une troisième variable.

Ça exit ton for.. donc quand tu rentres dans ton if tu passes au g suivant et le h vaut 1 de nouveau.

Rechercher des sujets similaires à "reference variable controle incorrect next"