Graphe : Récupérer la couleur d'une série fixée automatiquement...

Charly88

XLDnaute Occasionnel
Bon matin chers forumeurs, une question simple mais très spécialisée.

Pour les comparaisons, j'aime bien combiner des histo et courbes, plus facile à lire pour les nombreuses séries, par contre, les multiples couleurs posent un problème.
Connaissant l'ordre de mes séries, je voudrais que pour 10 séries par exemple, la série 6 est la même couleur que la 1, la 7 que la 2, etc.

Le problème survient lors de la récupération de l'index de la couleur de la série "base" lorsque celle-ci a été fixée automatiquement. Le code suivant retourne 57 quelque soit la couleur :
Code:
   y = ActiveChart.SeriesCollection(i - z).Border.ColorIndex

J'en déduis donc que le code 57 est une spécialité à la excel et ne correspond pas à une couleur déterminée. Constat renforcé par un test avec sélection manuelle de la couleur, cette fois-ci, l'index me retourne la couleur que j'avais choisie.

Rajouter un .value après ColorIndex n'amène qu'une erreur... Y'a-t-il une formule magique où arrive-t-on à un mur ?

Pour une solution alternative, je précise que je n'envisage pas de fixer manuellement les couleurs au départ.

Bonne journée à tous.
 

Pierrot93

XLDnaute Barbatruc
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Bonjour Charly

Pas sur d'avoir tout compris, mais essaye peut être le code ci-dessous, si cela peut t'aider :

Code:
Sub test()
Dim i As Integer
For i = 6 To 10
    ActiveChart.SeriesCollection(i).Border.ColorIndex = _
        ActiveChart.SeriesCollection(i - 5).Border.ColorIndex
Next i
End Sub

bonne journée
@+
 

Charly88

XLDnaute Occasionnel
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Merci Pierrot, tu as bien compris le but mais le problème de ce code (à moins que ça ne vienne de chez moi, mais j'en doute) c'est que si la série i-5 a reçu une couleur de manière automatique, son index de couleur est égal à 57 (qu'elle apparaisse rouge, rose ou bleu peu importe, d'ailleurs sur la palette c'est le blanc qui est sélectionné), et lorsque tu appliques ensuite ce 57 à la série i, il ressort une couleur aléatoire...


Quand je dis aléatoire, c'est à moitié vrai, je soupçonne excel de posséder une liste allant de 1 à 255 (nb max de séries) avec une couleur (appelée par l'index 57) affectée.



Pour éclairer le problème par un exemple concret :
Ma combinaison c'est base en histogramme et comparaison en courbe. Ce que je veux c'est la couleur de l'intérieur de l'histo (nuance que je viens de comprendre) appliquée à la courbe ("border"). Pour ceux que ça intéresse voici ton code modifié pour 4 séries, 1 et 2 sont en histo, 3 et 4 en courbes :
Code:
Sub CouleurHistoVersCourbe()

Dim i As Integer

For i = 3 To 4
MsgBox ActiveChart.SeriesCollection(i - 2).Interior.ColorIndex
MsgBox ActiveChart.SeriesCollection(i).Border.ColorIndex

ActiveChart.SeriesCollection(i).Border.ColorIndex = ActiveChart.SeriesCollection(i - 2).Interior.ColorIndex

Next i
End Sub

Testez en assignant des couleurs manuellement à 1 et 2, vos courbes reprendront ces couleurs, parfait.
Ensuite, assignez les couleurs automatiquement à 1 et 2, 3 et 4 reprendront leurs couleurs auto, différentes de 1 et 2.

C'est donc là toute la problématique que je crains insoluble, la couleur auto renvoie toujours le même index, impossible de savoir quelle est la couleur sélectionnée... ?

P.S : il semble que pour les courbes, l'index auto soit -4105, 57 étant pour les histo.
 

Pierrot93

XLDnaute Barbatruc
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Re,

oui effectivement, en fait ce ne doit pas être un numéro d'index couleur qui est renvoyé, mais une constante précisant que la couleur est automatique. Essaye avec la propriété "color" de l'objet devrait renvoyé l'équivalent RGB :

Code:
Dim i As Integer
For i = 6 To 10
    ActiveChart.SeriesCollection(i).Border.Color = _
        ActiveChart.SeriesCollection(i - 5).Border.Color
Next i

bon après midi
@+
 

Catrice

XLDnaute Barbatruc
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Bonjour,

Je ne trouve pas le 57, mais bien le -4105 qui correspond à xlColorIndexAutomatic. C.a.d. la case option Automatique cochée.

En revanche, avec ...
MsgBox ActiveChart.SeriesCollection(1).Interior.Color
ou
MsgBox ActiveChart.SeriesCollection(1).Border.Color
...je recupere les vraies valeurS que je peux ensuite piloter.

ActiveChart.SeriesCollection(1).Interior.Color = 255 passe en rouge

ColorIndex renvoie un index de couleur liée à la palette en cours
Color renvoie la valeur couleur RGB.
 

Catrice

XLDnaute Barbatruc
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Re,

si j'ai bien compris ce que tu veux faire, en lançant la macro ci-jointe on associe les couleurs des series 1 & 4, 2 & 5 et 3 & 6.
 

Pièces jointes

  • Classeur1.xls
    33.5 KB · Affichages: 120
  • Classeur1.xls
    33.5 KB · Affichages: 131
  • Classeur1.xls
    33.5 KB · Affichages: 133

AurelieGuillon

XLDnaute Nouveau
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Bonjour à tous.

Je me permets de poster à la suite de cette question, j'espère que c'est bien la "procédure", mais même si ma question est un peu plus vaste, elle reste dans le meme sujet je crois... si je ne suis pas au bon endroit, plein d'excuses par avance...

Donc :
Le début de ce topic m'a bien dépanné, mais je me pose la question suivante :
De la même manière que 255 = Rouge, comment connaitre le code, le numéro qui correspond aux couleurs un peu spéciales, comme les textures, ou les dégradés... ?

Merci d'avance.


EDIT : j'ai bien vu ce fil: https://www.excel-downloads.com/threads/numero-des-couleurs.54827/ pour faire toutes les couleurs, mais je m'interroge encore sur ces fameuses textures.....




Aurélie
 
Dernière édition:

Gael

XLDnaute Barbatruc
Re : Graphe : Récupérer la couleur d'une série fixée automatiquement...

Bonjour à tous,

J'avais un problème un peu similaire en ce sens que je souhaitais créer des courbes diverses mais avec toujours la même couleur pour un type de courbe.

J'ai résolu de la façon suivante:

Dans une feuille j'ai colorié autant de cellules que de types de graphes avec les couleurs que je souhaitais utiliser.

Dans la macro je mets l'index de la couleur dans une variable, la cellule étant fonction du type de graphe:

Code:
Color = Worksheets("Situation").Cells(i + 2, 25).Interior.ColorIndex

Lors de la création du graphe, j'applique cette variable:

Code:
ActiveChart.SeriesCollection(x).ChartType = xlLineMarkers
    ActiveChart.SeriesCollection(x).Border.ColorIndex = Color
    ActiveChart.SeriesCollection(x).MarkerBackgroundColorIndex = Color
    ActiveChart.SeriesCollection(x).MarkerForegroundColorIndex = Color

Cela marche très bien et de plus on peut changer les couleurs facilement par l'intermédiaire des cellules.

@+

Gael
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 820
Membres
104 676
dernier inscrit
akram1619