Graphe barre - Couleur conditionnelle

Paladin

XLDnaute Junior
Bonjour tout le monde,

Après moults recherches, j'ai vu en téléchargement le principe pour changer la couleur d'une barre en fonction de la valeur.
Petit problème : mes sources n'ont pas le même format que celle du fichier exemple et je n'arrive pas à trouver une astuce (en gros (cf fichier joint), on peut rajouter des phases (utilisation fonction DECALER non implémentée dans mon fichier)).
Je voudrais que la couleur de mes barres passe du vert au rouge (vert-jaune-orange-rouge) en fonction du nombre (ou du pourcentage plutôt) par phase.
Si un dieu des graphiques :whistle: (ou un mortel peu importe :p ) je lui en serai très reconnaissant s'il pouvait m'aider.
Merci [file name=Graphecouleur.zip size=2613]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Graphecouleur.zip[/file]
 

Pièces jointes

  • Graphecouleur.zip
    2.6 KB · Affichages: 45

DSA

XLDnaute Junior
Bonjour,

en vba, tu peux tester la sub suivante:
Code:
Sub Couleur()
Dim i As Integer
Dim LeCas As Byte
Dim theChart As Chart
    'on 'éteint' l'affichage pour éviter les clignotement
    Application.ScreenUpdating = False
    ' initialisation de la variable theChart par le set sur un objet graphique nommé 'Graphique 1'
    'Attention cela ne marchera que sur ce graphique....
    Set theChart = ActiveSheet.ChartObjects('Graphique 1').Chart
    i = 2
    'On parcoure la colonne 1
    While ActiveSheet.Cells(i, 1) <> ''
        LeCas = 3 'rouge
        ' on test sur la ligne en cours, colonne 2 c'estdc des pourcentages
        If ActiveSheet.Cells(i, 2) < 0.75 Then LeCas = 46 'orange
        If ActiveSheet.Cells(i, 2) < 0.5 Then LeCas = 6 'jaune
        If ActiveSheet.Cells(i, 2) < 0.25 Then LeCas = 4 'vert
    theChart.SeriesCollection(1).Points(i - 1).Interior.ColorIndex = LeCas
    i = i + 1 'on change de ligne
    Wend
    ' on détruit la variable objet
    Set theChart = Nothing
    'on remet à jour l'affichage
    Application.ScreenUpdating = True
End Sub
avec au niveau de ta feuille, l'appel suivant:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'on ne test que la colonne 1 pour éviter des calculs trop fréquent
If Target.Column = 1 Then
    Call Macro1
End If
End Sub

J'espère que cela peux t'aider

A+
DSA
Code:
Code:
 

DSA

XLDnaute Junior
ReBonjour,

juste une erreur sur le code précédent:
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'on ne test que la colonne 1 pour éviter des calculs trop fréquent
If Target.Column = 1 Then
    Call Couleur
End If
End Sub

Désolé ;)

A+

Didier
 

Franz63

XLDnaute Junior
Bonjour à tous,

je me suis amusé à faire un petit exemple ci joint

bonne fin de journée

François [file name=Graphecouleur_20050622173110.zip size=9661]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Graphecouleur_20050622173110.zip[/file]
 

Pièces jointes

  • Graphecouleur_20050622173110.zip
    9.4 KB · Affichages: 99

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 438
Membres
103 209
dernier inscrit
MIKA33260