Couleur colonne graphique

Résolu
Bonjour,
comment peut on faire pour déterminer la couleur des colonnes d'un graphique dont le nom fini par pesf
ex maisonpesf, arbrepesf
https://www.cjoint.com/c/EIAjRIHVWij

9 réponses

  1. Bonjour,

    Sub couleurs()
     ActiveSheet.Shapes.Range(Array("Graphique 1")).Select
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveChart.PlotArea.Select
    
    'gestion de l'erreur (pas de barre)
    On Error Resume Next
    'Boucle sur les 40 valeurs
    For n = 1 To 40
        ' si le nom en colonne A se termine par pesf A met en vert les barres de la 1ere série sinon en bleu
        If Right(Range("A" & n + 3), 6) = "PESF A" Then ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 10 Else ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 11
     
         
        ' si le nom en colonne A se termine par pesf A met en noir les barres de la 2eme serie sinon en bordeaux
          If Right(Range("A" & n + 3), 6) = "PESF B" Then ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 1 Else ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 53
    Next
         
    End Sub


    Cdlmnt
    Via
    0
    1. Bonjour
      Et merci beaucoup
      0
  2. Bonjour
    Le noir 1 pour la terminaison PESF B colonne A
    le vert 10 terminaison pour PESF A colonne A
    Le bleu 11 pour la colonne D
    Et bordeau 53 pour la colonne F
    fichier en pj
    https://www.cjoint.com/c/EIEbWrDgLRl
    Merci
    0
    1. Dans la macro tu n'as que 2 instructions couleur, couleur 10 et couleur 1
      Quelles seraient les 4 couleurs ? et correspondant à quels cas
      0
      1. Re,
        J'ai déplacé le graphique sur l'onglet du TCD le code fonctionne mais que deux couleur sur 4
        Merci
        0
        1. Re,

          Je pense que ce qui pose problème c'est que le graphique n'est pas sur la même feuille que le TCD car lorsqu'il est sur la même feuille ça fonctionne

          Mais là je ne peux en dire plus je ne suis pas assez calé en ce qui concerne les graphiques associée à un TCD

          Cdlmnt
          Via
          0
          1. Bonjour
            C'est ok pour le graphique du fichier et mon tableau originale avec 6 graphiques aussi
            reste le graphique du tcd il mets que la couleur noir et vert ci joint le fichier dans l'onglet photo pour avoir les mêmes couleurs
            https://www.cjoint.com/c/EIDqFKEqJ1l
            Sub couleurstcd()
            ActiveChart.ChartArea.Select
            ActiveChart.PlotArea.Select

            'gestion de l'erreur (pas de barre)
            On Error Resume Next
            'Boucle sur les 40 valeurs
            For n = 1 To 40
            ' si le nom en colonne A se termine par pesf
            If Right(Range("A" & n + 3), 6) = "PESF A" Then
            'Met en vert les barres de la 1ere série
            ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 10
            End If
            If Right(Range("A" & n + 3), 6) = "PESF B" Then
            'met en noir les barres de la 2nde série
            ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 1
            End If
            Next

            End Sub
            0
            1. Bonjour

              Si je comprends bien les A étant dans la 1ere série et le B dans la 2eme, la couleur en une seule macro se ferait ainsi :
              Sub couleurs()
               ActiveSheet.Shapes.Range(Array("Group 8")).Select
                  ActiveSheet.ChartObjects("Graphique 6").Activate
                  ActiveChart.PlotArea.Select
              
              'gestion de l'erreur (pas de barre)
              On Error Resume Next
              'Boucle sur les 40 valeurs
              For n = 1 To 40
                  ' si le nom en colonne A se termine par pesf
                  If Right(Range("A" & n + 3), 6) = "PESF A" Then
                  'Met en vert les barres de la 1ere série
                   ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 10
                   End If
                    If Right(Range("A" & n + 3), 6) = "PESF B" Then
                   'met en noir les barres de la 2nde série
                   ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 1
                   End If
              Next
                   
              End Sub


              Pour le TCD il faut copier la macro et changer le nom du graphique puisque il s'appelle cette fois "Graphique 1" et lancer la macro depuis la feuille TCD

              Par contre chez moi la 1ere ligne ActiveSheet.Shapes.Range(Array("Group 8")).Select provoque une erreur mais en l'enlevant ça fonctionne

              Cdlmnt
              Via
              0
              1. Bonjour

                Pour rappel la couleur passe au vert quand la terminaison fini par PESF A et noir pour PEFS B
                Cela fonctionne pour PESF A mais si PESF B est en colonne F ça ne fonctionne pas
                Ex : MAGASIN PESF A
                Sub couleurs()
                'gestion de l'erreur (pas de barre)
                On Error Resume Next
                'Boucle sur les 40 valeurs
                For n = 1 To 40
                ' si le nom en colonne A se termine par PESF A
                If Right(Range("A" & n + 3), 6) = "PESF A" Then
                'Met en vert les barres de la 1ere série
                ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 10
                'met en noir les barres de la 2nde série
                ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 1
                End If
                Next
                End Sub


                1) Pour mettre la couleur sur les colonnes du graph je dois activer le graphique deux fois sans quoi il ne ce rien, j'ai rajouter ceci derriere sub couleur
                sub couleurs() 
                ActiveSheet.Shapes.Range(Array("Group 8")).Select
                ActiveSheet.ChartObjects("Graphique 6").Activate
                ActiveChart.PlotArea.Select
                'gestion de l'erreur (pas de barre)
                On Error Resume Next
                'Boucle sur les 40 valeurs
                For n = 1 To 40
                ' si le nom en colonne A se termine par PESF A
                If Right(Range("A" & n + 3), 6) = "PESF A" Then
                'Met en vert les barres de la 1ere série
                ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 10
                'met en noir les barres de la 2nde série
                ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 1
                End If
                Next
                End Sub


                2) Pour la terminaison PESF B
                J'ai le code de la 1° macro appelé sub couleurb
                Sub couleursB()
                ActiveSheet.Shapes.Range(Array("Group 8")).Select
                ActiveSheet.ChartObjects("Graphique 6").Activate
                ActiveChart.PlotArea.Select
                'gestion de l'erreur (pas de barre)
                On Error Resume Next
                'Boucle sur les 40 valeurs
                For n = 1 To 40
                ' si le nom en colonne A se termine par PESF B
                If Right(Range("A" & n + 3), 6) = "PESF B" Then
                'Met en cyan les berres de la 1ere série
                ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 10
                'met en bordeaux les barres de la 2nde série
                ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 1
                End If
                Next
                End Sub

                3) Il y-t-il un moyen d'associer les deux codes
                4) J'ai voulu reproduire le code pour faire la même démarche que sur un nouveau graphique TCD mais je ne sais pas comment faire (le tcd me sert de synthèse pour 5 jours)
                pour rappel les PESF A vont dans la colonne D via C et PESF B dans la colonne F via E
                merci
                https://www.cjoint.com/c/EIDmOBRfHGl
                0
                1. Bonjour

                  Il faut passer par une macro, exemple à adapter à tes besoins :

                  Sub couleurs()
                  
                  'gestion de l'erreur (pas de barre)
                  On Error Resume Next
                  'Boucle sur les 16 valeurs
                  For n = 1 To 16
                      ' si le nom en colonne A se termine par pesf
                      If Right(Range("A" & n + 3), 4) = "pesf" Then
                      'Met en cyan les berres de la 1ere série
                       ActiveChart.SeriesCollection(1).Points(n).Interior.ColorIndex = 8
                       'met en bordeaux les barres de la 2nde série
                       ActiveChart.SeriesCollection(2).Points(n).Interior.ColorIndex = 9
                       End If
                  Next
                       
                  End Sub


                  ALT+F11 pour Ouvrir l'éditeur puis Insertion et Module, copier et coller la macro dans la page et fermer l'éditeur

                  Pour lancer la macro Onglet Développeur - Macros, sélectionner couleurs et Exécuter

                  Cdlmnt
                  Via
                  0