CODE VBA POUR CHANGER LA COULEUR D UNE LIGNE EN FONCTION DE LA VALEUR DE LA 1ERE

Résolu
marie5858 Messages postés 8 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 16 septembre 2022 - 20 sept. 2010 à 11:34
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 - 20 sept. 2010 à 13:55
Bonjour à tous,

Je suis novice dans la programmation de VBA pour excel. Toutefois, j'ai besoin d'un code pour mettre en forme des données en fonction de la première colonne
j'ai un talbeau ayant pour première colonne le code article, je peux avoir plusieurs lignes avec le meme code article. le tableau est trié sur cette colonne.
Et en fait je veux alterner 2 couleurs.
711640101F2
761035201FR
01473
01473
01473
01473
410277120DE
410277120DE
410277120DE
410277120DE
410277120DE
410277120DE
12182
12182
44055
44055
44055
44054
44054
J'ai trouvé comment mettre une ligne sur 2 en couleurs mais pas ce que je veux faire.
je vous remercie par avance de votre aide
merci

1 réponse

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
20 sept. 2010 à 13:55
Bonjour,

Voici une solution possible.
Placez cette sub dans "ThisWorkbook" ou dans un module :

Public Sub ColorLine(FirstCode As Range, columnCount As Long)

    'Couleur principale
    Dim couleurPrimaire As Long: couleurPrimaire = 34
    
    'Couleur alternative
    Dim couleurSecondaire As Long: couleurSecondaire = 35
    
    Dim couleurCourante As Long: couleurCourante = couleurPrimaire
    Dim colonneDroite As Long: colonneDroite = FirstCode.Column + columnCount - 1
    Dim l As Long: l = FirstCode.Row
   
    With FirstCode.Worksheet
        While (.Cells(l, FirstCode.Column).Value <> "")
                         
            'Mise en place de la couleur de ligne
            .Range(.Cells(l, FirstCode.Column), .Cells(l, colonneDroite)).Interior.ColorIndex = couleurCourante
            
            'Inverse la couleur si le code suivant est différent
            If (.Cells(l, FirstCode.Column).Value <> _
                .Cells(l + 1, FirstCode.Column).Value) Then
                
                couleurCourante IIf(couleurCourante couleurPrimaire, couleurSecondaire, couleurPrimaire)
            
            End If
            
            l = l + 1
            
        Wend
    End With
    
End Sub


Si par exemple votre liste commence à la ligne 2 colonne 1 et que votre liste est constituée de 4 colonnes, appelez la sub de cette manière :

ColorLine Cells(2, 1), 4
3
Rejoignez-nous