changement de couleur d'un graphique en fonction de variables

Tchokz

XLDnaute Nouveau
Bonjour,

Nouveau venu sur le forum et débutant en VBA, je me permet de venir ici pour vous exposer mon "problème".

Je crée actuellement un graphique "camembert en 3D" prenant en compte les pays d'une plage de données définis.

Lors de la mise en forme de ce graphique j'attribue des couleurs en fonction des "points." de mon graphique.
-----------------------------------------------------------------------------------------------------------------------------
With ActiveChart.SeriesCollection(1)
.Points(1).Format.Fill.ForeColor.RGB = RGB(23, 66, 140)
End With
----------------------------------------------------------------------------------------------------------------------------

Or je veux une coloration en fonction du pays pris en compte et non du point.

J'ai commencé par attribué une couleur pour chacun de mes Pays dans une Déclaration "Public Enum Color" (Exemple: Chine = 9191959 'RGB(23, 66, 140))

Chaque Variable "color" porte le nom du pays qui lui correspond.

Par la suite, j'ai rajouté ->->-> Color1 = Range("B1").Value qui prendra la valeur en "B1" (Ici Chine) et ai remplacé le RGB(23, 66, 140) par la variable Color1

Ce qui donne la chose suivante:
------------------------------------------------------------------------------------------------------------------------------
Color1 = Range("B1").Value
With ActiveChart.SeriesCollection(1)
.Points(1).Format.Fill.ForeColor.RGB = Color1
End With
------------------------------------------------------------------------------------------------------------------------------

C'est la qu'est mon problème: Ma variable Color1 est une chaine de caractère. Du coup elle ne prend pas la couleur de la Variable Chine.

Quelqu'un pourrait m'expliquer comment faire pour que ce soit bien la variable Chine qui soit pris en compte et non la chaine de caractere ?
Ou alors si il y a un moyen plus simple ou moins "Brouillon".

Voili, voilou.
En espérant que vous comprendrez Facilement (Je ne suis pas doué pour les explications)

Merci.
 

Nairolf

XLDnaute Accro
Re,

Je ne connais pas l'usage de l'instruction enum, et il y a d'autres possibilités (même de nombreuses) mais je vais te proposer ce que je connais le mieux.
Donc, j'utiliserais une fonction avec un select case pour faire le choix :

Code:
Function ColorState(State)
Select Case State
Case "PAM"
    ColorState = 16089600            'RGB(0, 130, 245)
Case "Chine"
    ColorState = 9191959        'RGB(23,66,140)
...
End Select
End Function

L'utilisation de la fonction dans le corps de ta procédure "GraphTonsAmerica" se fait ainsi :

Code:
    color1 = ColorState(Range("B1").Value)
    With ActiveChart.SeriesCollection(1)
    .Points(1).Format.Fill.ForeColor.RGB = color1 'RGB(0, 130, 245)  oui mais non                                     'Colore en Bleu Stroumph
    End With
 

Discussions similaires

Réponses
0
Affichages
83

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510