Bonjour à vous te merci de votre temps et de votre aide.

J'ai un histogramme qui présente le nombre d'équipement par seuil d'importance (Élevé, Fort, Moyen, Faible et N/A).

Le code ci-dessous change les couleurs associées aux légendes selon le seuil.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub RecolorierGraphSeuilNb()
    Dim g As Chart: Set g = Me.GraphSeuilNb.Chart
    Dim s As Series: Set s = g.SeriesCollection(1)
    Dim seuil As String
    Dim couleur As Long
    Dim le As LegendEntry
    Dim p As Point 'une des barres du graphique
 
    Dim i As Long: For i = 1 To s.Points.Count
        seuil = s.XValues(i) 'Récupère le texte associé à la légende
        couleur = FSeuilCouleur.LireCouleur(seuil) 'trouve la couleur correspondante
 
        If EST_MODE_DEBUG Then
            g.Parent.Activate
        End If
 
        Set p = s.Points(i)
        p.Format.Fill.ForeColor.RGB = couleur
        Set p = Nothing
        Set le = Nothing
    Next i
 
    Set s = Nothing
    Set g = Nothing
End Sub
Ce code fonctionne correctement tant que mon graphique comporte au moins un équipement.
Or, l'utilisateur peut faire des choix de filtre qui font qu'aucun équipement ne correspond et donc le résultat ne présente aucune barre.
Et après cela si on fait à nouveau un filtre qui donne des valeurs, mon code qui fonctionnait parfaitement et pouvait colorier les barres individuellement, se met à mettre la même couleur pour toutes les barres.

On dirait que Excel n'est plus capable de traiter les barres individuellement.

Quelqu'un aurait-il une idée sur quoi faire pour que cela ne se produise pas ?

A+

P.S. :

Si je colorie "à la main" (sans utiliser de code VBA) les barres les couleurs restent même après plusieurs cycles d'absence/réaparition des données.
J'ai mis du code car mon client aime à changer les couleurs et que j'ai plusieurs graphiques concernés donc j'aimerai éviter d'avoir à tous les modifier manuellement à chaque fois.

A+