Boucle for : mon i change de valeur

Bonjour,

j'ai un code qui, en fonction d'une valeur dans une case, exécute des macros en lien avec un tableau :

Sub Auto()

With Sheets("ANA")

For i = 1 To 100
    If Sheets("Données").Range("C2").Value = .Range("A" & i).Value Then

        If .Range("E" & i).Value = "N/A" Then
            Call NA1
        Else: Call A1
        End If

        If .Range("F" & i).Value = "N/A" Then
            Call NA2
        Else: Call A2
        End If

        If .Range("G" & i).Value = "N/A" Then
            Call NA3
        Else: Call A3
        End If

        If .Range("K" & i).Value = "N/A" Then
            Call NA4
        Else: Call A4
        End If

        If .Range("L" & i).Value = "N/A" Then
            Call ANA_NA5
        Else: Call A5
        End If

        If .Range("M" & i).Value = "N/A" Then
            Call NA6
        Else: Call A6
        End If

        Exit For
    End If

Next i

End With

End Sub

Le problème :

pour le premier "If .Range", le i a la bonne valeur.

Mais pour le deuxième "If .Range" le i passe à 47 tant que i<47, pour une raison qui m'échappe complètement...

Pourquoi le i change de valeur tout seul comme ça ? Il devrait garder la même valeur en permanence...

Si quelqu'un avait une solution je suis preneur !

Merci

Bonjour,

En ce qui me concerne, la description du problème n'est pas claire... Qu'est ce qui pose problème avec la variable i exactement ? i n'a pas de bonne ou mauvaise valeur, par contre il change de valeur à chaque tour de boucle...

Bonjour,

Merci pour la réponse.

en fait ce que je veux dire :

cette ligne est censée définir le i :

If Sheets("Données").Range("C2").Value = .Range("A" & i).Value

Si la valeur en C2 correspond à la valeur dans le tableau en A6, alors i = 6.

Donc pour tous les If .Range("E" & i), If .Range("F" & i), If .Range("G" & i), i devrait valoir 6.

Or il change de valeur et passe à 47 à un moment, pourquoi?

Sachant que la valeur en C2 ne bouge pas, donc le i devrait rester 6

J'espère que c'est plus clair maintenant

Merci encore en tout cas

Oui c'est plus clair. Aucune des macros appelées n'est susceptible de modifier la valeur de i, de rajouter une ligne, etc ?

En effet, dans les macros appelées, il y a d'autres boucles "For i = 4 to 46" dans les A1, A2, A3...

Du coup après avoir Call A1, le i prend la valeur de 47...

Comment je peux éviter ça du coup ?

Merci encore !

Commencez par déclarer vos variables dans chaque macro, et utilisez de préférence des noms différents d'une macro à l'autre pour éviter toute superposition.

J'ai renommé les variables dans les Sub A1, A2, A3, etc.

Tout est rentré dans l'ordre maintenant, merci beaucoup Pedro22 !

Tout est rentré dans l'ordre maintenant, merci beaucoup Pedro22 !

Pas de quoi, bonne continuation et merci pour la validation !

Rechercher des sujets similaires à "boucle mon change valeur"