ma boucle for ne marche pas !!!!

  • Initiateur de la discussion Initiateur de la discussion Aligator
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Aligator

Guest
bonjour tt le monde,

j'ai créé un code VBA que j'ai intégré dans une feuille excel. dans ce code il y a une boucle for. j'ai l'impression que la boucle for ne tourne pas et que la variable ne s'incrémente pas, voila le code;


Sub Worksheet_Change(ByVal Target As Range)



If ActiveWorkbook.FullName = 'C:\\test.xls' Then


With Sheets('Sheet1')

Dim i As Long
For i = 3 To 19

If Cells(i, 6).Value = Cells(i, 2).Value Then
Cells(i, 3).Value = Cells(2, 9).Value

Else
If Cells(i, 6).Value = Cells(i, 4).Value Then
Cells(i, 5).Value = Cells(2, 9).Value
End If
End If

Next

End With

End If


End Sub


merci bcp d'avance
a tte
 
Bonsoir Aligator, bonsoir Papaye, bonsoir Pierre,
bonsoir à toutes et à tous 🙂

Pierre a placé mis ton code dans Worksheet_Activate, donc il ne rencontre pas les mêmes problèmes que toi, Aligator.

Papaye a raison : ta procédure s'appelle de manière récursive. Essaie de modifier ton code ainsi :

Option Explicit

Dim InEvent As Boolean

Sub Worksheet_Change(ByVal Target As Range)
'
Dim i As Long
'
  If Not InEvent Then
    InEvent = True

    If ActiveWorkbook.FullName = 'C:\\\\\\\\test.xls' Then

      With ActiveWorkbook.Sheets('Sheet1')

        For i = 3 To 19

          If .Cells(i, 6) = .Cells(i, 2) Then
            .Cells(i, 3) = .Cells(2, 9)
          ElseIf .Cells(i, 6) = .Cells(i, 4) Then
            .Cells(i, 5) = .Cells(2, 9)
          End If

        Next i

      End With ' Sheets('Sheets1')

    End If ' du If ActiveWorkbook.FullName

    InEvent = False

  End If ' du If Not InEvent Then

End Sub

Donc Papaye a raison et voici ce qui a dû t'arriver :

1) tous les tests sont passés et ton code entre dans la boucle For i,

2) on a soit la première condition : Cells(i, 6).Value = Cells(i, 2).Value, soit la seconde : Cells(i, 6).Value = Cells(i, 4).Value qui est vraie

3) on entre donc dans le Then ou le Else du test, mais !!! dans l'un comme dans l'autre, ton code modifie la valeur d'une cellule, => la procédure événementielle Worksheet_Change est immédiatement appelée et on reboucle sur 1) qui va effectuer les mêmes tests et opérations et se rappeler encore...

Tiens nous au courant 🙂

A+ 😉

Message édité par: Charly2, à: 13/05/2006 00:50
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
915
Réponses
15
Affichages
791
Réponses
2
Affichages
528
Réponses
4
Affichages
284
Réponses
4
Affichages
737
Réponses
8
Affichages
786
Réponses
10
Affichages
670
Retour