Colorer un groupement de ligne sur 2

-
Bonjour,

Je cherche sur un fichier excel à colorer un groupement de ligne sur 2 (ou bien à alterner 2 couleurs peu m'importe).

Voilà de quoi illustrer ma question :

Je pars de cela :


et je voudrais aboutir à cela de façon automatisée (car il y a beaucoup de lignes dans le fichier) :



Je souhaite par exemple que le groupement de ligne 14 (lignes 33/34) soit rouge puis le groupement 15 (35/36) d'une autre couleur puis le groupement (37/38/39/40/41) soit à nouveau rouge etc ....

Merci à vous si cela vous inspire :)
Afficher la suite 

4 réponses

Messages postés
22853
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 août 2019
5600
0
Merci
Bonjour,

ça nous inspirerait plus si on savait ce qui détermine un groupement, quelles colonnes colorer, et qu'on avait un fichier en situation (sans données personnelles) pour tester..
cjoint.com et coller ici le lien fourni.
eric

En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Commenter la réponse de eriiic
0
Merci
Merci pour le retour, j'ai édité et rajouté une image.

Le but est de colorer toute la ligne à chaque fois.
Commenter la réponse de goldi
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
383
0
Merci
Bonjour;

Voir ceci pour déterminer les cellules fusionnées:

https://www.commentcamarche.net/faq/18089-vba-tester-une-plage-qui-contient-des-cellules-fusionnees

et cela pour les couleurs:

https://www.excel-pratique.com/fr/vba/couleurs.php

voici un exemple à adapter:

Sub ligneAvecMerge()
Dim Lig As Long
Dim Col As Integer
Dim Mot As String
Dim Mg, TB
Dim plage
    'pour l'exemple, la colonne à tester = A a adapter
    Col = 1 '
    Mot = "1" 'remplacer <bold>LeMot</bold> par celui que vous désirez chercher

    For Lig = Cells(65536, Col).End(xlUp).Row To 1 Step -1
        Set Mg = Cells(Lig, Col).MergeArea
        TB = Split(Mg.Address, ":")
       ' If Cells(Lig, TB(0)).Value = Mot Then
           ' Rows(Lig).Delete
       ' End If
    Next Lig
  plage = Replace(Mg.Address, "$A$", "") 'supprime $A$
     Rows(plage).Interior.ColorIndex = 3 ' rouge
  End Sub
'https://www.commentcamarche.net/faq/18089-vba-tester-une-plage-qui-contient-des-cellules-fusionnees
'https://www.excel-pratique.com/fr/vba/couleurs.php


Commenter la réponse de cs_Le Pivert
Messages postés
1
Date d'inscription
lundi 12 août 2019
Statut
Membre
Dernière intervention
13 août 2019
0
Merci
Merci mais je n'ai pas compris la façon d'identifier les cellules. En effet ton lien renvoie à un test qui "consiste à rechercher un mot dans la colonne E et à supprimer la ligne correspondante si le mot est trouvé dans une des cellules de la colonne E."
Je veux pour ma part faire une ligne sur 2.... !?
cs_Le Pivert
Messages postés
6155
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2019
383 -
J'ai mis voici un exemple à adapter:

le code de suppression était en commentaire!

voici un exemple à télécharger:

https://www.cjoint.com/c/IHniRDnPN5Q


et voilà le code:

Sub ligneAvecMerge()
Dim Lig As Long
Dim Col As Integer
Dim Mg
Dim plage
    'pour l'exemple, la colonne à tester = A a adapter
    Col = 1 '
For Lig = Cells(65536, Col).End(xlUp).Row To 1 Step -1
        Set Mg = Cells(Lig, Col).MergeArea
        If Cells(Lig, 1).Value Mod 2 = 0 Then 'nombre pair
   plage = Replace(Mg.Address, "$A$", "") 'supprime $A$
    Rows(plage).Interior.ColorIndex = 23 ' bleu
Else 'nombre impair
   plage = Replace(Mg.Address, "$A$", "") 'supprime $A$
    Rows(plage).Interior.ColorIndex = 6 ' jaune
End If
    Next Lig
 End Sub


@+
Commenter la réponse de goldi3131