CODE VBA POUR CHANGER LA COULEUR D UNE LIGNE EN FONCTION DE LA VALEUR DE LA 1ERE [Résolu]

marie5858 3 Messages postés lundi 20 septembre 2010Date d'inscription 1 avril 2011 Dernière intervention - 20 sept. 2010 à 11:34 - Dernière réponse : foliv57 423 Messages postés vendredi 17 novembre 2006Date d'inscription 15 juillet 2014 Dernière intervention
- 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
Afficher la suite 

Votre réponse

1 réponse

foliv57 423 Messages postés vendredi 17 novembre 2006Date d'inscription 15 juillet 2014 Dernière intervention - 20 sept. 2010 à 13:55
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de foliv57

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.