Faire une mise en forme conditionnelle sur un graphique

Bonjour ,

je vous sollicites car j'ai crée un histogramme simple avec les jours de la semaine ainsi que le nombre d'intervention par jour , j'aimerai que quand le nombres d'intervention est en dessous de 3 la barre de mon histo s'affiche en vert et quand le nombre d'intervention est au dessus de 3 la barre s'affiche en rouge .

je vous mets mon fichier en PJ pour que cela soit plus parlant

Merci

Bonjour

Peux-tu me mettre un exemple concret du résultat attendus ?

Peux-tu préciser cette phrase : "quand le nombres d'intervention est en dessous de 3 la barre" ?

Dans l'attente d'un retour voilà une proposition :

Dim TBL(), TBL_TEST()
Dim COULEUR As String, TEST_COULEUR As String
Dim AJOUT As Boolean
Dim DERNLIG As Long

Set FEUILLE = ThisWorkbook.Worksheets("Données")
Set PLAGE = FEUILLE.UsedRange
TBL = PLAGE.Offset(1, 0).Resize(PLAGE.Rows.Count - 1, PLAGE.Columns.Count)

'Création des feuilles
With ThisWorkbook
    For i = 1 To UBound(TBL, 1)
        AJOUT = True
        COULEUR = TBL(i, 2)
        For j = 1 To .Worksheets.Count
            TEST_COULEUR = .Worksheets(j).Name
            If COULEUR = TEST_COULEUR Then AJOUT = False: Exit For
        Next j
        If AJOUT = True Then .Sheets.Add(After:=.Worksheets(.Worksheets.Count)).Name = COULEUR
    Next i
End With

'Ajout des données sur les feuilles correspondentes
For i = 1 To UBound(TBL, 1)
    Set FEUILLE_EXP = ThisWorkbook.Worksheets(TBL(i, 2))
    DERNLIG = FEUILLE_EXP.Range("A" & FEUILLE_EXP.Rows.Count).End(xlUp).Row + 1
    TBL_TEST = FEUILLE_EXP.Range("A1:A" & DERNLIG)
    AJOUT = True
    For j = 1 To UBound(TBL_TEST)
        If TBL_TEST(j, 1) = TBL(i, 1) Then AJOUT = False: Exit For
    Next j
    If AJOUT = True Then FEUILLE_EXP.Range("A" & DERNLIG) = TBL(i, 1)
Next i

FEUILLE.Activate
End Sub

J'aimerai faire une mise en forme conditionnelle sur mon graphique, faire en sorte que les jours avec moins de 3 interventions la barre de de l’histogramme s'affiche en vert et au dessus de 3 que la barre s'affiche en rouge , je donne un exemple fait manuellement

22exemple.xlsx (20.22 Ko)

en pj

Voilà le code ci-dessous avec le fichier :

Option Explicit
Private Sub Worksheet_Calculate()

Dim FEUILLE As Worksheet
Dim DATAS As Range, ENTETE As Range, VAL As Range
Dim GRAPH As Chart
Dim i As Long

Set FEUILLE = ActiveSheet
Set GRAPH = FEUILLE.ChartObjects("Graphique 3").Chart ' "Graphique 3" à ajuster si besoin
Set DATAS = FEUILLE.Range("C6:G7") 'Plage des données avec les entêtes à ajuster si besoin
Set ENTETE = DATAS.Resize(1, DATAS.Columns.Count)
Set VAL = DATAS.Offset(1, 0).Resize(DATAS.Rows.Count - 1, DATAS.Columns.Count)

With GRAPH.FullSeriesCollection(1)
    .XValues = ENTETE
    .Values = VAL
    For i = 1 To VAL.Columns.Count
        If VAL(1, i) > 3 Then
            .Points(i).Format.Fill.ForeColor.RGB = vbRed 'rouge
        Else
            .Points(i).Format.Fill.ForeColor.RGB = vbGreen 'vert
        End If
    Next i
End With
End Sub

Merci beaucoup c'est pile ça

Parfait alors

N'oublie pas de mettre le sujet en résolu

Bonjour , j'ai une dernière requête , pour pouvoir adapter cette macro sur un autre graphique comment savoir le nom de mon graph pour que la macro fonctionne l'étape est ci dessous?

Set GRAPH = FEUILLE.ChartObjects("Graphique 3").Chart ' "Graphique 3" à ajuster si besoin

Quand tu sélectionnes ton graphique sur la feuille excel tu as son nom écrit en haut à gauche dans une petite fenêtre (nom que tu peux changer !)

image

encore merci

Mais de rien, n'oublie pas de clôturer le poste si c'est tout bon pour toi

Dernière petite chose , j'ai amélioré mon tableau de bord , et en voulant insérer la macro de mise en forme conditionnelle pour mes 4 graphiques mais il y'a une erreur au niveau du termes suivant ( je mets mon fichier en pj )

9test.xlsm (98.16 Ko)

:

.Values = VAL

EDIT 10:33

Bon, ça ne marche plus étant donnée que la disposition à changée. J'ai constaté que tu avais 4 graphiques, si les graph sont dans le même ordre que l'enchainement des lignes tu peux utiliser ce code qui va mettre à jours les 4 graphs en même temps.

Sub Graphique_Update()
Dim FEUILLE As Worksheet
Dim DATAS As Range, ENTETE As Range, VAL As Range
Dim GRAPH As Chart
Dim i As Long, g As Long

Set FEUILLE = ActiveSheet
Set DATAS = FEUILLE.Range("B1:F5") 'Plage des données avec les entêtes à ajuster si besoin
Set ENTETE = DATAS.Resize(1, DATAS.Columns.Count)
For g = 1 To 4
    Set GRAPH = FEUILLE.ChartObjects("Graphique " & g).Chart
    Set VAL = DATAS.Offset(g, 0).Resize(1, DATAS.Columns.Count)
    With GRAPH.FullSeriesCollection(1)
        .XValues = ENTETE
        .Values = VAL
        For i = 1 To VAL.Columns.Count
            If VAL(1, i) > 3 Then
                .Points(i).Format.Fill.ForeColor.RGB = vbRed 'rouge
            Else
                .Points(i).Format.Fill.ForeColor.RGB = vbGreen 'vert
            End If
        Next i
    End With
Next g
End Sub

c'est tout bon , milles merci , comment clôture ton le sujet ?

Le petit symbole validé à droite en haut de n'importe quel message

Rechercher des sujets similaires à "mise forme conditionnelle graphique"