Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Figer couleur avec donnée lors d'une actualisation d'un graphique

AdrienK

XLDnaute Nouveau
Bonjour,

Je vous explique mon petit problème.
Je souhaiterais figer les couleurs de mon graphique histogramme avec les données dont il est issu.
Par exemple, sur mon fichier en PJ, je souhaite que le rouge soit toujours associé à la donnée "Voiture A", vert avec "Voiture B", jaune avec "Voiture C".

En effet, mon fichier peut subir des modifications et étant donné que j'ai affecté une macro de tri décroissant pour la ligne "total" de mon tableau, je souhaite que le graphique s'actualise en valeur, mais aussi par les couleurs. Actuellement si je change les scores et que par exemple, le score total de la voiture B dépasse celle de la voiture A, les score vont évolués et les places vont changer correctement, mais sur le graphique, les couleurs vont permuter...

Merci de bien vouloir m'aider!
 

Pièces jointes

  • Graphique couleur.xlsm
    19.9 KB · Affichages: 31
  • Graphique couleur.xlsm
    19.9 KB · Affichages: 37
  • Graphique couleur.xlsm
    19.9 KB · Affichages: 31

AdrienK

XLDnaute Nouveau
Re : Figer couleur avec donnée lors d'une actualisation d'un graphique

Je me permets de faire remonter la discussion.

Personne pour m'aider ? Peut-être n'ai-je pas été assez clair sur mon problème ?
Merci d'avance
 

ROGER2327

XLDnaute Barbatruc
Re : Figer couleur avec donnée lors d'une actualisation d'un graphique

Bonjour AdrienK.


Un essai. C'est du brut de décoffrage, voyez si on est sur la bonne voie...​
VB:
Sub Macro_tri_auto()
Dim i&, j&, c()

    With ActiveWorkbook.Worksheets("Feuil1").Range("D2:F2")
        ReDim c(1 To .Cells.Count, 1)
        For i = 1 To .Cells.Count
            With .Cells(i)
                c(i, 0) = .Value
                j = .Interior.Color
                c(i, 1) = Array(j Mod 256, (j \ 256) Mod 256, j \ 65536)
            End With
        Next

        With .Parent.Sort
            .SortFields.Clear
            .SortFields.Add Key:=.Parent.Range("C7:F7"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            .SetRange .Parent.Range("C2:F7")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlLeftToRight
            .SortMethod = xlPinYin
            .Apply
        End With

        .Parent.ChartObjects("Graphique 1").Activate
        For i = 1 To .Cells.Count: For j = 1 To .Cells.Count
            If .Cells(i).Value = c(j, 0) Then
                .Cells(i).Interior.Color = RGB(c(j, 1)(0), c(j, 1)(1), c(j, 1)(2))
                ActiveChart.SeriesCollection(1).Points(i).Format.Fill.ForeColor.RGB = RGB(c(j, 1)(0), c(j, 1)(1), c(j, 1)(2))
                Exit For
            End If
        Next j, i
    End With

    Range("H8").Select

End Sub

Bonne journée.


ℝOGER2327
#7472


Vendredi 27 Gidouille 141 (Sainte Gandouse, hygiéniste - fête Suprême Quarte)
23 Messidor An CCXXII, 4,2188h - haricot
2014-W28-5T10:07:31Z
 

Pièces jointes

  • Graphique couleur.xlsm
    25.1 KB · Affichages: 33
  • Graphique couleur.xlsm
    25.1 KB · Affichages: 34
  • Graphique couleur.xlsm
    25.1 KB · Affichages: 38

AdrienK

XLDnaute Nouveau
Re : Figer couleur avec donnée lors d'une actualisation d'un graphique

Tout d'abord, je voudrais vous remercier d'avoir pris du temps pour mon problème, et vous dire que c'est exactement le résulat que je recherchais.

A prèsent, je souhaiterais adapter le code à mon fichier professionnel. Le tableau qui m'interesse dispose de 5 colonnes, avec des couleurs différentes. Je ne pense pas qu'il y ait beaucoup de choses à changer. Pouvez-vous m'indiquer ce qu'il est possible de remplacer (peut-être par des commentaires à l'interieur du code ?) ?
Encore une fois, merci!

Adrien

EDIT: J'ai bien reussi à adapter le code à mon fichier pro, un grand merci ROGER2327
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Figer couleur avec donnée lors d'une actualisation d'un graphique

Re...


(...)
A prèsent, je souhaiterais adapter le code à mon fichier professionnel. (...)
Comme d'habitude, on pose un problème pour en résoudre un autre.
Comme d'habitude, je m'en doutais un peu. J'ai donc anticipé un peu en essayant de rendre les modifications aussi facile que possible. Il devrait être possible d'adapter la chose en modifiant ces lignes :​
VB:
    With ActiveWorkbook.Worksheets("Feuil1").Range("D2:F2")
VB:
            .SortFields.Add Key:=.Parent.Range("C7:F7"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
            .SetRange .Parent.Range("C2:F7")
VB:
        .Parent.ChartObjects("Graphique 1").Activate
et, peut-être,​
VB:
    Range("H8").Select
Mais on pourrait faire beaucoup plus souple si on avait connaissance du problème réel...​


Bonne journée.


ℝOGER2327
#7473


Vendredi 27 Gidouille 141 (Sainte Gandouse, hygiéniste - fête Suprême Quarte)
23 Messidor An CCXXII, 5,1333h - haricot
2014-W28-5T12:19:11Z
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Figer couleur avec donnée lors d'une actualisation d'un graphique

Re... (suite)


(...)
EDIT: J'ai bien reussi à adapter le code à mon fichier pro, un grand merci ROGER2327
(...)
Parfait !​


ℝOGER2327
#7474


Vendredi 27 Gidouille 141 (Sainte Gandouse, hygiéniste - fête Suprême Quarte)
23 Messidor An CCXXII, 5,1514h - haricot
2014-W28-5T12:21:48Z
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…