Excel VBA : Boucle For Each, Do While [Fermé]

Signaler
-
Messages postés
1184
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
-
Bonjour,

Après plusieurs heures de recherche et d'essais, je viens vous demander de l'aide. Je précise que je suis totalement débutant.

Voici le code en question :
Sub Essai()
Dim c As Variant
For Each c In Range("E3:EE3")
Do
c.Offset(1, 0).Interior.ColorIndex = 36
Loop While c.Value > -14
Next c
End Sub

Toutes les valeurs de la plage E3:EE3 sont supérieurs à -14 jusqu'à DT inclu. Donc les cellules E4:DT4 devraient normalement devenir jaunes.
Quand je lance la macro, seule la cellule E4 devient jaune puis le sablier de windows apparait et il ne se passe plus rien. Je suis alors obligé d'appuyer sur echap pour interrompre l'exécution.


Pourriez vous me dire si le code est correct et d'où vient le problème ?
Merci d'avance

2 réponses

Messages postés
1184
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
249
le do ....loop est inutile
il vaut mieux faire un test if then

Comme ça tu auras du jaune clair

Sub Essai()
Dim c As Variant
For Each c In Range("E3:EE3")
    if c.value>14 then 
        c.Offset(1, 0).Interior.ColorIndex = 36
    end if
Next c
End Sub
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61966 internautes nous ont dit merci ce mois-ci

Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
570
Bonjour,

Si il s'agit de mettre en jaune jusqu'a une valeur <= -14 alors le code suivant est plus correct.




Sub Essai()
Dim c As Variant
For Each c In Range("E3:EE3")
    If c.Value > -14 Then
        c.Offset(1, 0).Interior.ColorIndex = 36
    Else
        Exit For
    End If
Next c
End Sub




Car dans le code initial i y a une double boucle qui n'est pas utile.

A+