Test sur la couleur d'une ligne

Lepetitmars Messages postés 2 Date d'inscription lundi 14 mai 2012 Statut Membre Dernière intervention 16 mai 2012 - 14 mai 2012 à 11:53
Lepetitmars Messages postés 2 Date d'inscription lundi 14 mai 2012 Statut Membre Dernière intervention 16 mai 2012 - 16 mai 2012 à 13:48
Bonjour à tous,

Voici mon problème : Dans un classeur Excel, j'ai plusieurs feuilles avec des lignes de différentes couleurs. Mon objectif est de faire un certain nombre d'opérations sur les lignes de la même couleur, puis de passer au groupe suivant de lignes ayant la même couleur etc.?
J'ai donc une première boucle for qui gère le traitement d'une feuille à l'autre (d'indice j) et une seconde boucle for qui sert à parcourir les lignes d'une même feuille (indice j).
J'ai également mis une boucle While qui permet d'incrémenter la valeur de j jusqu'à ce que l'on atteigne le prochain bloc de ligne ayant la même couleur.
Cette boucle me semble obligatoire, car sinon je vais continuer à travailler sur le même groupe de ligne ayant la même couleur?
Le gros problème c'est que cette boucle ne fonctionne pas?
En effet, je ne sort jamais de la boucle même lorsque que assertion est fausse (ex : lorsque j 6 et j+1 7)?
Je pensais au départ que c'était une erreur de syntaxe dans l'écriture de l'assertion sauf que :

-Le débogueur ne me signale pas d'erreur
-Si j'inverse l'insertion en mettant ? Worksheets(i).Rows(j).Interior.Color <> Worksheets(i).Rows(j + 1).Interior.Color ? dans ce cas ben je sort bien de ma boucle?

J'espère que vous pourrez m?aider à trouver d'où vient mon erreur?

Voici mon code :

Sub MacroPourForum()

Dim HeureApparitionDefaut As Date
Dim HeureInterventionPotentielle As Date
Dim HeureApparitionSecondMessage As Date
Dim DelaiAvantIntervention As Date


For i = 1 To 2

For j = 3 To Worksheets(i).Range("D65536").End(xlUp).Row

HeureApparitionDefaut = Sheets(i).Cells(j, 1)
HeureInterventionPotentielle = Sheets(i).Cells(j, 2)
HeureApparitionSecondMessage = Sheets(i).Cells(j + 1, 1)

If HeureApparitionDefaut <> HeureApparitionSecondMessage Then

If HeureInterventionPotentielle < HeureApparitionSecondMessage Then

DelaiAvantIntervention = HeureInterventionPotentielle - HeureApparitionDefaut
Sheets(i).Cells(j, 3).Value = DelaiAvantIntervention


ElseIf HeureInterventionPotentielle > HeureApparitionSecondMessage And Worksheets(i).Rows(j).Interior.Color = Worksheets(i).Rows(j + 1).Interior.Color Then 'Permet de traiter par exemple les pb défaut controle jeu

DelaiAvantIntervention = HeureApparitionSecondMessage - HeureApparitionDefaut
Sheets(i).Cells(j, 3).Value = DelaiAvantIntervention


End If

End If

Do While Worksheets(i).Rows(j).Interior.Color = Worksheets(i).Rows(j + 1).Interior.Color

j = j + 1

Loop

Next j

Next i

1 réponse

Lepetitmars Messages postés 2 Date d'inscription lundi 14 mai 2012 Statut Membre Dernière intervention 16 mai 2012
16 mai 2012 à 13:48
Bonjour,

Pour ceux que ca pourrait intérresser, j'ai réglé mon problème en créant artificiellement une sorte de boucle "While" en utilisant une structure avec un "If" et un "Goto"

Ce qui donne au niveau du code la chose suivante :

Endloop :

If Worksheets(i).Cells(j, 4).Interior.Color = Worksheets(i).Cells(j + 1, 4).Interior.Color Then

j = j +1
Goto Endloop

End if
0
Rejoignez-nous