Conditionner le coloriage des lignes (boucle)

Résolu
davidbecks -  
 davidbecks -
Bonjour,

Je souhaiterais éxécuter une boucle pour l'application suivante. ça "marche" pour A1, mais je voudrais le faire en boucle pour la i ème cellule de la colonne A.
Idéalement, chaque changement de la cellule de la colonne A provoque le changement de couleur de ligne (pas besoin de refaire tourner la macro pour activer la bonne couleur). Merci de votre aide pour cette macro somme toute facile...pour les expérimentés !

Sub color()
If Range("A1") = "P" Then
Rows("1:1").Select
Selection.Interior.ColorIndex = 38
End If
If Range("A1") = "G" Then
Rows("1:1").Select
Selection.Interior.ColorIndex = 37
End If
If Range("A1") = "A" Then
Rows("1:1").Select
Selection.Interior.ColorIndex = 6
End If
End Sub

4 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

Peut être en faisant comme ça:

Sub color() 
Dim plage As Range
Dim cl

Set plage = Range("A:A")
For each cl in plage
   If cl.Value = "P" Then 
      cl.Interior.ColorIndex = 38 
   End If 
   If cl.Value = "G" Then 
      cl.Interior.ColorIndex = 37 
   End If 
   If cl.Value = "A" Then 
      cl.Interior.ColorIndex = 6 
   End If 
Next cl

End Sub


;o)
0
davidbecks
 
Merci Polux !

Cependant, je souhaiterais colorier le row correspondant en entier, comment faire SVP ?
De plus, les lettres P, G, A, correspondent à 3 colonnes différentes. peut on les nommer cl1, cl2 et cl3 ?

If Range("B1") = "P" Then
Rows("1:1").Select
Selection.Interior.ColorIndex = 38
End If
If Range("C1") = "G" Then
Rows("1:1").Select
Selection.Interior.ColorIndex = 37
End If
If Range("A1") = "A" Then
Rows("1:1").Select
Selection.Interior.ColorIndex = 6
End If

Merci beaucoup !!

Davidbecks
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
Une fois de plus un problème mal exposé ... ça devient lassant et pénible ... pourquoi ne pas tout dire dès le début. J'ai vraiment l'impression d'avoir perdu mon temps.

Il suffit de définir la plage autrement, c'est tout. Dans mon exemple on ne teste que la colonne A, si tu modifies le Set plage = Range("A:A") par Set plage = Range("A:Z"), le teste se fera sur toutes les cellules de la colonne A à la colonne Z en passant par la colonne B, C etc ....

Sub color() 
Dim plage As Range
Dim cl

Set plage = Range("A:Z")
For Each cl In plage
   If cl.Value = "P" Then
      Rows(cl.Row).Interior.ColorIndex = 38
   End If
   If cl.Value = "G" Then
      Rows(cl.Row).Interior.ColorIndex = 37
   End If
   If cl.Value = "A" Then
      Rows(cl.Row).Interior.ColorIndex = 6
   End If
Next cl

End Sub


Voilà.

On aurait pu gagner du temps ...

;o)
0
davidbecks
 
Merci !

je débute, donc mes questions sont un peu débiles et mal posées. désolé.

cdlt
0