IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Changer couleurs des batons dans des graphiques


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 6
    Points
    6
    Par défaut Changer couleurs des batons dans des graphiques
    Bonjour à tous,

    J'ai un graphique que j'obtiens à partir d'un tableau. Ce tableau est trié en fonction d'une colonne comprenant des nombres, afin d'aller du plus grand au plus petit.
    Les noms associés à ces nombres sont donc amenés à changer de place, et donc de couleur dans le graphique.
    Or un nom doit avoir une couleur associée, qui est changée manuellement actuellement...
    La couleur qui doit être associé est tout simplement la couleur de remplissage de la cellule du Nom.

    J'ai réussi à obtenir un code qui fonctionne, mais pas dans le cas qui m'intéresse ^^"

    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
    Sub f1()
        'Variables
        Dim onglet As String  'Nom de l'onglet où se trouve le graphique
        Dim graphique As String  'Nom du graphique
        Dim colonne_Nom As String  'Lettres de la colonnes où se trouve la série à colorer
        Dim MesSeries As Series
     
        '- onglet Feuil1, graphique Graph_1
        onglet = "Feuil1"
        graphique = "Graph_1"
        colonne_Nom = "F:F"
     
        Sheets(onglet).Activate
        ActiveSheet.ChartObjects(graphique).Activate
     
        With ActiveChart
            For Each MesSeries In .SeriesCollection
                MesSeries.Interior.Color = Sheets(ActiveSheet.Name).Range(colonne_Nom).Cells.Find(MesSeries.Name).Interior.Color
            Next
        End With
    End Sub
    Ce code fonctionne pour ce tableau :

    Nom : ce que j'ai.PNG
Affichages : 954
Taille : 52,1 Ko

    Le problème c'est qu'en ordonnée je n'ai pas les noms mais le numéro de la série. Si j'alterne je me retrouve avec ça :

    Nom : ce que je veux.PNG
Affichages : 940
Taille : 49,5 Ko

    C'est le type de graphique que je veux, mais mon code ne fonctionne plus. Et je n'ai trouvé aucun moyen de sélectionner les ordonnées, je ne peux sélectionner que les abscisses...

    Avez-vous une idée pour résoudre ce problème ?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé comment faire, je poste la réponse pour aider ceux qui tomberont sur ce topic.
    Le find sur toute une colonne n'est pas très propre, mais vu l'utilisation que j'en ai c'est suffisant, surtout que le tableau est amené à grossir.

    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
    26
    27
    28
    29
    30
    31
    Option Explicit
     
    Sub main()
     
        '1er  argument : nom de l'onlget
        '2eme argument : nom du graphique
        '3eme argument : colonne avec les noms apparaissant dans le graphique
        Call CouleurValeurXAxis("feuil1", "Graph_1", "A:A")
     
        'Retourner sur un onglet après execution de la macro
        Sheets("2016").Activate
     
    End Sub
     
    Sub CouleurValeurXAxis(onglet As String, graphique As String, colonne_Nom As String)
        Dim c As Chart
        Dim s As Series
        Dim iPoint As Long
        Dim nPoint As Long
     
        Sheets(onglet).Activate
        ActiveSheet.ChartObjects(graphique).Activate
     
        Set c = ActiveChart
        Set s = c.SeriesCollection(1)
     
        nPoint = s.Points.Count
        For iPoint = 1 To nPoint
            s.Points(iPoint).Interior.Color = Sheets(ActiveSheet.Name).Range(colonne_Nom).Cells.Find(s.XValues(iPoint)).Interior.Color
        Next iPoint
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer la couleur du texte dans des labels sous condition
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/12/2023, 16h59
  2. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 17h26
  3. Réponses: 13
    Dernier message: 31/08/2007, 14h53
  4. Filtrer des données dans un graphique Excel
    Par ExcelNewUser dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/06/2007, 10h27
  5. Réponses: 8
    Dernier message: 17/04/2007, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo