Changement de couleur d'un graphique suivant le contenue d'une cellule

Mathu17

XLDnaute Nouveau
Bonjour,

Voila je vous expose mon problème. Par rapport au fichier excel el lien, je souhaite que chaque case du graphique change de couleur par rapport à la valeur indiquée dans la cellule correspondante. Tout en gardant la forme fixe du graphique. Pour l'onglet "Accident par semaine", si le nombre d'accident est supérieur à 0 en semaine 1 par exemple, dans le graphique la case correspondante à la semaine 1 doit être de couleur rouge par contre s'il n'y a pas d'accident la case doit etre de couleur vert.
J'ai essayé plusieurs choses notamment avec VBA mais sans succès.

Si quelqu'un a une solution. Merci de votre aide.

Cordialement,
 

Pièces jointes

  • indicateur sécurité.xls
    44 KB · Affichages: 35

Efgé

XLDnaute Barbatruc
Re : Changement de couleur d'un graphique suivant le contenue d'une cellule

Bonjour Mathu17 et bienvenu sur le forum,
En partant du principe que tes données sont bien plaçées comme dans ton exemple, et que si il n'y a pas d'accident la colonnes D est à 0,
une proposition à mettre dans un module standar, et valable pour la feuille active au moment de lancer la macro.
VB:
Sub ChartUpDate()
'Mise à jour du graphique
Dim G As Object, i&
Set G = ActiveSheet.ChartObjects(1).Chart
With G.SeriesCollection(1)
    For i = 1 To .Points.Count
        .Points(i).Interior.ColorIndex = IIf(Cells(i + 2, 4).Value = 0, 4, 3)
    Next i
End With
End Sub
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Changement de couleur d'un graphique suivant le contenue d'une cellule

Re
A mettre dans le code de la feuille concernée (clicdroit sur l'onglet / Visualiser le code.
L'exemple est fait pour les semaines.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim G As Object, i&
'Plage a adapter pour chaque feuille
If Not Intersect(Target, Range("D3:D54")) Is Nothing Then
    Set G = ActiveSheet.ChartObjects(1).Chart
    With G.SeriesCollection(1)
        For i = 1 To .Points.Count
            .Points(i).Interior.ColorIndex = IIf(Cells(i + 2, 4).Value = 0, 4, 3)
        Next i
    End With
End If
End Sub
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 270
Membres
103 168
dernier inscrit
isidore33