Stocker valeur RGB dans une variable

  • Initiateur de la discussion Initiateur de la discussion Troudz
  • 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 !

Troudz

XLDnaute Occasionnel
Bonjour,

J'ai un tableau comportant plusieurs lignes pour chaque élément. Après avoir trié mes éléments, je voudrais les regrouper visuellement en changeant de couleur de fond à chaque fois qu'on change d'élément.

J'ai donc fait ce petit code :

Code:
Dim Couleur1 As Variant
Dim Couleur2 As Variant
Set Couleur1 = RGB(204, 255, 255)
Set Couleur2 = RGB(204, 255, 204)

Range(Cells(2, 1), Cells(2, 17)).Interior.ColorIndex = Couleur1
For j = 3 To 477
    If Cells(j, 1) = Cells(j - 1, 1) Then
        Range(Cells(j, 1), Cells(j, 17)).Interior.ColorIndex = Cells(j, 1).Interior.ColorIndex
    Else
        If Cells(j, 1).Interior.Color = Couleur1 Then Range(Cells(j, 1), Cells(j, 17)).Interior.Color = Couleur2
        If Cells(j, 1).Interior.Color = Couleur2 Then Range(Cells(j, 1), Cells(j, 17)).Interior.Color = Couleur1
    End If
Next

Le but est que, dès que le numéro unique (situé dans la colonne 1) change, on colorie la ligne d'une autre couleur.

L'embêtant c'est que Vba n'aime pas du tout enregistrer une référence RGB dans une variable.

Comment pourrais je faire pour réaliser ce code en continuant à fonctionner avec les références RGB ?

Je vous remercie par avance de votre aide.

Bonne journée
 
Dernière édition:
Re : Stocker valeur RGB dans une variable

Bonjour Troudz 🙂,
Si tu affectes tes couleurs en Color et non ColorIndex, ça devrait déjà aller mieux 🙄...
Code:
Dim Couleur1 As Long, Couleur2 As Long, J As Integer
Couleur1 = RGB(204, 255, 255)
Couleur2 = RGB(204, 255, 204)
Range(Cells(2, 1), Cells(2, 17)).Interior.Color = Couleur1
For J = 3 To 477
    If Cells(J, 1) = Cells(J - 1, 1) Then
        Range(Cells(J, 1), Cells(J, 17)).Interior.Color = Cells(J, 1).Interior.Color
    Else
        If Cells(J, 1).Interior.Color = Couleur1 Then Range(Cells(J, 1), Cells(J, 17)).Interior.Color = Couleur2
        If Cells(J, 1).Interior.Color = Couleur2 Then Range(Cells(J, 1), Cells(J, 17)).Interior.Color = Couleur1
    End If
Next
Bonne suite 😎
 
Re : Stocker valeur RGB dans une variable

Effectivement !

Je ne l'avais fait que partiellement.
Je n'ai pas pu m'en rendre compte car ma macro plantait en amont sur le "Set Couleur1 = RGB(X,X,X)"

En rajoutant quelques "-1" que j'avais oublié, ça donne ça :
Code:
Dim Couleur1 As Long, Couleur2 As Long, J As Integer
Couleur1 = RGB(204, 255, 255)
Couleur2 = RGB(204, 255, 204)

Range(Cells(2, 1), Cells(2, 17)).Interior.Color = Couleur1
For J = 3 To 477
    
    If Cells(J, 1) = Cells(J - 1, 1) Then
        Range(Cells(J, 1), Cells(J, 17)).Interior.Color = Cells(J - 1, 1).Interior.Color
    Else
        If Cells(J - 1, 1).Interior.Color = Couleur1 Then Range(Cells(J, 1), Cells(J, 17)).Interior.Color = Couleur2
        If Cells(J - 1, 1).Interior.Color = Couleur2 Then Range(Cells(J, 1), Cells(J, 17)).Interior.Color = Couleur1
    End If
Next
Et ça fonctionne impeccable.

Merci pour ton aide et bonne journée.
 
- 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
5
Affichages
755
Réponses
4
Affichages
618
Réponses
3
Affichages
861
Réponses
0
Affichages
615
Retour