Colorier cellule d'un même groupe

  • Initiateur de la discussion Initiateur de la discussion gourdin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gourdin

XLDnaute Impliqué
Bonjour,

Si je sais comment procéder pour colorier une ligne sur 2 d'un tableau via le format conditionnel, en revanche je bute pour colorier 1 "groupe" de cellules sur 2
Voir fichier joint.

Merci
 

Pièces jointes

Bonjour gourdin,

Une solution (parmi bien d'autres)...

Attention: sélectionner la plage de cellules concernée au préalable. On verra par la suite, avec plus d'infos comment repérer la plage sans la sélectionner.
Coller dans la fenêtre de code de la Feuil1:

VB:
Sub coul()
With Selection
    For lig = 1 To .Rows.Count
        If .Cells(lig, 1) & .Cells(lig, 2) <> .Cells(lig - 1, 1) & .Cells(lig - 1, 2) Then cpt = cpt + 1
        If cpt Mod 2 = 1 Then .Cells(lig, 1).Resize(1, 3).Interior.ColorIndex = 6
    Next lig
End With
End Sub
 
bonjour gourdin, Modeste,

une autre version (sans sélection)

Code:
Sub Gourdin()
Dim i As Long, AColorer As Boolean
AColorer = True
With Worksheets("Feuil1") ' à adapter
For i = 3 To .Range("B" & Rows.Count).End(xlUp).Row
    If AColorer = True Then .Cells(i, 2).Resize(1, 3).Interior.ColorIndex = 6
    If Not (.Cells(i, 2) = .Cells(i + 1, 2) And .Cells(i, 3) = .Cells(i + 1, 3)) Then AColorer = Not AColorer
Next
End With
End Sub

A+
 
Bonjour gourdin,

Une solution (parmi bien d'autres)...

Attention: sélectionner la plage de cellules concernée au préalable. On verra par la suite, avec plus d'infos comment repérer la plage sans la sélectionner.
Coller dans la fenêtre de code de la Feuil1:

VB:
Sub coul()
With Selection
    For lig = 1 To .Rows.Count
        If .Cells(lig, 1) & .Cells(lig, 2) <> .Cells(lig - 1, 1) & .Cells(lig - 1, 2) Then cpt = cpt + 1
        If cpt Mod 2 = 1 Then .Cells(lig, 1).Resize(1, 3).Interior.ColorIndex = 6
    Next lig
End With
End Sub

Bonjour Modeste
Merci pour cette solution qui me convient parfaitement (je me débrouille pour sélectionner la plage)
 
bonjour gourdin, Modeste,

une autre version (sans sélection)

Code:
Sub Gourdin()
Dim i As Long, AColorer As Boolean
AColorer = True
With Worksheets("Feuil1") ' à adapter
For i = 3 To .Range("B" & Rows.Count).End(xlUp).Row
    If AColorer = True Then .Cells(i, 2).Resize(1, 3).Interior.ColorIndex = 6
    If Not (.Cells(i, 2) = .Cells(i + 1, 2) And .Cells(i, 3) = .Cells(i + 1, 3)) Then AColorer = Not AColorer
Next
End With
End Sub

A+

Merci aussi Paf
Cela me convient également.
 
Re-bonjour,
Salut Paf 🙂, R@chid 🙂 ... et chris 🙂 (qui passait par là),
Mes hommages à tous les autres,

C'est dans le début de ligne suivante que ça se passe (je te laisse chercher un instant 😉)
VB:
If cpt Mod 2 = 1

Ce qui suit met la couleur de remplissage transparente avant de ré-appliquer une couleur. Elle repère aussi la fin de plage (au départ de B3) sans qu'une sélection soit nécessaire.
VB:
Sub coul()
With [B3].Resize([B3].CurrentRegion.Rows.Count - 1, [B3].CurrentRegion.Columns.Count)
    .Interior.ColorIndex = xlNone
    For lig = 1 To .Rows.Count
        If .Cells(lig, 1) & .Cells(lig, 2) <> .Cells(lig - 1, 1) & .Cells(lig - 1, 2) Then cpt = cpt + 1
        If cpt Mod 2 = 0 Then .Cells(lig, 1).Resize(1, 3).Interior.ColorIndex = 6
    Next lig
End With
End Sub
 
Bonsoir à tous,

Une autre MFC par formule :
VB:
=EST.IMPAIR(SOMME((($B$3:$B3<>$B$2:$B2)+($C$3:$C3<>$C$2:$C2)>0)*LIGNE($B$3:$B3)/LIGNE($B$3:$B3)))

Il y a une petite différence entre le résultat de la formule de r@chid et celle de ma pomme. Voir commentaire dans le fichier.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
409
  • Question Question
Microsoft 365 problème d'index
Réponses
19
Affichages
394
Retour