Excel graphique

Résolu
Bonjour,

J'ai cherché sur les forums, mais je n'ai pas trouvé ma réponse. Je fais donc encore appel à vos lumières.

Quand je fais un graphique à barre avec Excel, est-ce que je peux mettre une couleur conditionnel à une donnée (nom). J'ai trouvé comment mettre une couleur conditionnel à une valeur (négatif ou moins de 10, etc.), mais pas à une donnée comme un nom.

Tableau : J'ai un tableau avec des noms d'employés où je mets des temps pour chaque mois. J'ai attribué une couleur pour chaque employé (ex. Pierre en jaune, Jean en vert, Jacques en bleu, Joe en gris, Guy en rouge, etc.).

Graphique : J'ai fait un graphique à barre et j'ai modifié les couleurs des barres pour attribué la couleur de chaque employé.

Problème : Quand je mets des temps à tous les employés, il n'y a pas de problème. Cependant si un mois je n'ai pas d'heure pour un employé, les couleurs ne suivent pas (ex. Pierre est en jaune, Jean est en vert, mais si je n'ai pas d'heures pour Jacques et que j'en ai pour Joe, Joe est en bleu, etc.). Je comprends que les couleurs suivent l'ordre que j'ai mis, mais moi je voudrais que ce soit la couleur attribué à l'employé.

Est-ce possible? Y a-t-il possibilité de couleur conditionnel dans un graphique?

Merci de vos lumières...

6 réponses

  1. Bonjour

    Un exemple :
    http://www.cjoint.com/c/EHlpyzqn2dd

    Le bouton lance la macro qui recolorie les séries selon les couleurs attribuées aux cellules des noms

    Cdlmnt
    Via
    0
    1. Super, c'est ce que je veux.

      Cependant, comme je ne suis pas top en macro, si je veux adapter cette macro dans mon fichier, pouvez-vous m'indiquer les données à changer. Par exemple, dans votre fichier, les noms sont de B3 à B7, mais moi mes noms sont sur une ligne (D5 à U5). SVP m'indiquer les infos à modifier dans la macro :

      Sub couleurs()
      Dim MesSeries As Series
      ActiveSheet.ChartObjects("Graphique 1").Activate
      With ActiveChart
      For Each MesSeries In .SeriesCollection
      ligne = Columns(2).Find(MesSeries.Name, , , , xlByColumns, xlPrevious).Row
      couleur = Range("B" & ligne).Interior.ColorIndex
      MesSeries.Interior.ColorIndex = couleur
      Next
      End With
      End Sub

      Merci beaucoup, beaucoup...
      0
      1. Re,

        Postes un exemple de ton fichier sur cjoint.com et reviens ici indiquer le lien fourni, je verrai pour adapter

        Cdlmnt
        Via

        0
        1. Malheureusement, c'est un fichier confidentiel, mais voici un exemple qui est semblable.

          http://www.cjoint.com/c/EHlrAGvwRRC

          Le tableau est à l'horizontal, parce que dans mon tableau original, il y a d'autres lignes (qui n'entre pas dans le graphique).

          En passant, comme je ne veux pas les noms à zéro, j'ai fait un filtre (dans mon fichier original j'ai une macro pour le filtre). Connaissez-vous une autre façon de le faire, directement dans le graphique?

          Merci de votre patience :)
          0
          1. Re

            http://www.cjoint.com/c/EHlr6vsobhd

            Il faut dans le graphique faire Selectionner les données et inverser les données, les noms doivent être en Série (colonne de gauche)

            Ensuite dans la macro
            ActiveSheet.ChartObjects("Graphique 3").Activate
            Graphique 3 est le nom du graphique tel qu'il apparait dans la zone Nom de la feuille
            ligne = Columns(1).Find(MesSeries.Name, , , , xlByColumns, xlPrevious).Row
            le 1 est la colonne où se trouve les noms

            couleur = Range("A" & ligne).Interior.ColorIndex
            A est la colonne où se trouve les noms

            A adapter si différent dans le fichier original

            Pour le filtrage non je ne sais pas faire dans le graphique mais c'est surement possible sans doute par macro, question à reposer sur le forum

            Cdlmny
            Via
            0
            1. Wow! Merci vraiment beaucoup, je vais essayer tout ça. Ça va assurément marcher.

              Merci de votre collaboration.
              0