Probleme boucle while
szn
-
JvDo Messages postés 1978 Date d'inscription Statut Membre Dernière intervention -
JvDo Messages postés 1978 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai un soucis dans mon code mais je ne vois pas d'où il vient.
Lorsque je lance mon code, seule la première boucle while est prise en compte et pas celle permettant de repérer les défauts de l'onduleur 2.
Mon code:
Je suis bloqué la dessus depuis plus d'une heure alors que c'est surement un truc tout bête.
Si quelqu'un voit le souci je le remercie d'avance
Cordialement
Lorsque je lance mon code, seule la première boucle while est prise en compte et pas celle permettant de repérer les défauts de l'onduleur 2.
Mon code:
Sub Reperer_defauts()
Dim i As Integer
Dim k As Integer
Dim l As Integer
Dim c As Integer
Dim x As Integer
Dim y As Integer
i = 2
k = 2
c = 1
'"Nettoyage" de la feuille
Sheets("Défauts").Select
Range("A2:D2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("Données").Activate
'On cherche les défaut de l'onduleur 1 (pyrano 1)
While Cells(i, 12) <> ""
While Cells(i, 12) < 100 'On atteint la première valeur d'irradiation supérieure à 100W/m²
i = i + 1
Wend
If Cells(i, 12) > 100 And Cells(i, 6) = 0 Then 'Si la puissance de l'onduleur est nulle
Sheets("Défauts").Cells(k, 2) = "Ond 1" 'On note l'onduleur en défaut
Sheets("Défauts").Cells(k, 3) = Sheets("Données").Cells(i, 20) 'On note la date de début du défaut
Sheets("Défauts").Cells(k, 4) = Sheets("Données").Cells(i, 20)
k = k + 1
End If
While Cells(i, 20) = Cells(i - 1, 20) 'On passe au jour suivant
i = i + 1
Wend
i = i + 1
Wend
'Date de fin du défaut
Sheets("Défauts").Activate
l = 2
While Cells(l, 3) <> ""
x = Day(CDate(Cells(l + 1, 3)))
y = Day(CDate(Cells(l, 4)))
While x = y + 1
Cells(l + 1, 3).Copy
Cells(l, 4).Select
ActiveSheet.Paste
Cells(l + 1, 3).Select
Selection.EntireRow.Delete
x = Day(CDate(Cells(l + 1, 3)))
y = Day(CDate(Cells(l, 4)))
Wend
l = l + 1
Wend
'Id du défaut
MsgBox (c)
k = 2
While Cells(k, 3) <> ""
Sheets("Défauts").Cells(k, 1) = Format(M, "00") & "_" & Format(c, "000") 'Id défaut
c = c + 1
k = k + 1
Wend
'On cherche les défaut de l'onduleur 2 (pyrano 1)
i = 2
While Cells(i, 12) <> ""
While Cells(i, 12) < 100
i = i + 1
Wend
If Cells(i, 12) > 100 And Cells(i, 7) = 0 Then
Sheets("Défauts").Cells(k, 2) = "Ond 2"
Sheets("Défauts").Cells(k, 3) = Sheets("Données").Cells(i, 20)
Sheets("Défauts").Cells(k, 4) = Sheets("Données").Cells(i, 20)
k = k + 1
End If
While Cells(i, 20) = Cells(i - 1, 20)
i = i + 1
Wend
i = i + 1
Wend
Sheets("Défauts").Activate
l = 2
While Cells(l, 3) <> ""
x = Day(CDate(Cells(l + 1, 3)))
y = Day(CDate(Cells(l, 4)))
While x = y + 1
Cells(l + 1, 3).Copy
Cells(l, 4).Select
ActiveSheet.Paste
Cells(l + 1, 3).Select
Selection.EntireRow.Delete
x = Day(CDate(Cells(l + 1, 3)))
y = Day(CDate(Cells(l, 4)))
Wend
l = l + 1
Wend
k = 2
While Cells(k, 3) <> ""
Sheets("Défauts").Cells(k, 1) = Format(M, "00") & "_" & Format(c, "000")
c = c + 1
k = k + 1
Wend
Je suis bloqué la dessus depuis plus d'une heure alors que c'est surement un truc tout bête.
Si quelqu'un voit le souci je le remercie d'avance
Cordialement
A voir également:
- Probleme boucle while
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
2 réponses
Bonjour,
J'ai bien peur que tester ton code sur un listing ce ne soit pas très efficace.
Tu ferais mieux de le dérouler pas à pas, cela te permettrait de détecter l'erreur, sinon tu nous mets le classeur sans éléments personnels sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
J'ai bien peur que tester ton code sur un listing ce ne soit pas très efficace.
Tu ferais mieux de le dérouler pas à pas, cela te permettrait de détecter l'erreur, sinon tu nous mets le classeur sans éléments personnels sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
Bonsoir,
Pas simple de te répondre sans ton classeur!
Un truc qui me chagrine, c'est ton incrémentation de i avant ton 1er wend global.
Tu viens déjà de l'incrémenter dans ton while du changement de jour. Donc ton i pointe sur une valeur à tester.
Sinon, pour le 2ème onduleur, tu devrais réactiver la feuille données.
Cordialement
Pas simple de te répondre sans ton classeur!
Un truc qui me chagrine, c'est ton incrémentation de i avant ton 1er wend global.
Tu viens déjà de l'incrémenter dans ton while du changement de jour. Donc ton i pointe sur une valeur à tester.
Sinon, pour le 2ème onduleur, tu devrais réactiver la feuille données.
Cordialement