ma boucle for ne marche pas !!!!

  • Initiateur de la discussion Aligator
  • Date de début
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
 

pierrejean

XLDnaute Barbatruc
bonjour Ali gator

salut Papaye

chez moi ton code tourne

quant à ce qu'il fait !!!!!! [file name=test_20060512162631.zip size=7183]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20060512162631.zip[/file]
 

Pièces jointes

  • test_20060512162631.zip
    7 KB · Affichages: 26

Charly2

Nous a quittés en 2006
Repose en paix
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
 

Discussions similaires

Statistiques des forums

Discussions
312 594
Messages
2 090 080
Membres
104 369
dernier inscrit
bolthorn