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

Macros et VBA Excel Discussion :

[VBA-E] Graphique et Légende


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Par défaut [VBA-E] Graphique et Légende
    Bonjour,

    CONTEXTE DU PB :

    Pour une de mes applis, je trace par macro un graphique barres.
    J'ai une unique série de données, et je change la couleur de chaque point de la série en fonction de la réalisation d'une condition ou non associée au point.

    PROBLEME :

    Dès que je change la couleur du premier point, l'élément de légende du graphe associé à ma série change et est remplacé par les abcisses de tous les points de ma série .

    Soit pourquoi pas..., mais moi je veux une chaine de texte bien précise comme élément de légende associée à ma série. Après avoir changé les couleurs de mes barres, j'essaye de reforcer le nom de la série, mais ça re ne change pas la légende

    Précision: si j'enlève la partie changement de couleurs, soit la boucle correspondante dans le bout de code ci-dessous, ma légende est bien celle que je lui signifie par monChart.SeriesCollection(num_serie).Name = ...

    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
    ' Series du graphe
        For num_serie = 1 To nbHistos
            With monChart.SeriesCollection(num_serie)
                ' Donnees sources
                .XValues = f_tableau.Range(f_tableau.Cells(ligne_deb + 1, 2), f_tableau.Cells(ligne_deb + 1, col_fin))
                .Values = f_tableau.Range(f_tableau.Cells(ligne_deb + 1 + num_serie, 2), f_tableau.Cells(ligne_deb + 1 + num_serie, col_fin))
            End With
    monChart.SeriesCollection(num_serie).Name = f_tableau.Cells(ligne_deb + 1 + num_serie, 1)
     
            l_c_Indi_Colo = 2
            For l_num_doc = 1 To col_fin - 1
                If f_tableau.Cells(ligne_deb + num_serie + 1, l_c_Indi_Colo) < 0 Then
                    monChart.SeriesCollection(num_serie).Points(l_num_doc).Interior.ColorIndex = couleurs(num_serie, 1)
                ElseIf f_tableau.Cells(ligne_deb + num_serie + 1, l_c_Indi_Colo) < 4 Then
                    monChart.SeriesCollection(num_serie).Points(l_num_doc).Interior.ColorIndex = couleurs(num_serie, 2)
                Else
                    monChart.SeriesCollection(num_serie).Points(l_num_doc).Interior.ColorIndex = couleurs(num_serie, 3)
                End If
                l_c_Indi_Colo = l_c_Indi_Colo + 1
            Next
     
            monChart.SeriesCollection(num_serie).Name = f_tableau.Cells(ligne_deb + 1 + num_serie, 1)
     
        Next
    Quelqu'un pourrait il m'orienter sur la bonne voie ???

    Merci d'avance,

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par Currahee Voir le message
    Bonjour,

    Pour une de mes applis, je trace par macro un graphique barres.
    J'ai une unique série de données, et je change la couleur de chaque point de la série en fonction de la réalisation d'une condition ou non associée au point.
    Bonjour,
    tu dit que tu n'a qu'une seule série et ....
    tu modifie le N° de ta série
    With monChart.SeriesCollection(num_serie)
    Il n'y a qu'une SeriesCollection > SeriesCollection(1)
    A+

  3. #3
    Membre confirmé Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour,
    tu dit que tu n'a qu'une seule série et ....
    tu modifie le N° de ta série
    With monChart.SeriesCollection(num_serie)
    Il n'y a qu'une SeriesCollection > SeriesCollection(1)
    A+
    Merci de t'interesser à mon problème.

    J'ai effectivement une seule série à traiter, mais comme tu peux le remarquer, tout est paramétré dans mon le bout de code que je donne, bout de code qui gère en particulier le cas de plusieurs séries. Quand je dis une série, c'est que le paramère nbHistos = 1 dans l'exemple qui m'interesse.


    J'ai par contre hier trouvé une solution peu élégante au problème... Avec plusieurs séries justement, et sans changer mon code, l'élément de légende associé à la série reste son nom même si je change les couleurs des barres correspondantes à ma série une à une.

    Pourquoi ça marche quand il y a plusieurs séries et non une seule ??? Je suis toujours preneur d'un avis éclairé, et d'une solution élégante pour gérer le cas d'une seule série...

    Dans mon cas particulier, j'ai rajouté une série "nulle" en barre cumulée sur mon graphique. Sur le graphique, elle n'apparait donc pas, il faut juste effacer l'élément de légende associé pour que visuellement, l'entourloupe soit totalement transparente... Mais berk que le code est pas beau...

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Tu ne met nulle part Range(XX).Value
    Essaye déjà de rajouter cela partout, il est possible que dans les boucles il y ai quelqu'interférence.
    C'est difficile de tester car tes données sont dans une plage et un Tb couleur.
    Et incidemment, ta dernière ligne est en double. (sans importance quand au fonctionnement)
    Si ca marche pas, met les données en plus (fichier ou code)
    A+

  5. #5
    Membre confirmé Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Tu ne met nulle part Range(XX).Value
    Essaye déjà de rajouter cela partout, il est possible que dans les boucles il y ai quelqu'interférence.
    C'est difficile de tester car tes données sont dans une plage et un Tb couleur.
    Et incidemment, ta dernière ligne est en double. (sans importance quand au fonctionnement)
    Si ca marche pas, met les données en plus (fichier ou code)
    A+
    Merci pour tes suggestions

    Je n'utilise jamais le .Value ... C'est sûrement pas bien, mais ça ne m'a encore jamais posé de problème et dans ce cas-çi non plus.

    La ligne en double, c'est fait exprès pour essayer de reprendre la main sur le légendage auto effectué par Excel, sans succès.

    Je n'ai pas trouvé de solution plus propre que celle que je propose dans mon post précédent avec l'ajout d'une série virtuelle, mais vu qu'elle marche à merveille, et que ça n'alourdit pas le code excessivement (3 lignes rajoutées tout au plus), je considère que mon problème est résolé, à la Mac Gyver certes, mais il est résolu...

    NB : je ne peux pas donner plus de code, et de toute façon cela ne servirait pas à grand chose, c'est bien la partie de code que j'ai donné qu'il faut améliorer.

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

Discussions similaires

  1. [VBA-E]Graphique Excel
    Par shinobi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/04/2006, 13h40
  2. [VBA-E] graphique avec plage de donnees variable
    Par gigs dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/04/2006, 14h50
  3. [VBA-E]Graphique
    Par kasjacques dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/03/2006, 17h56
  4. [VBA-E]graphique excel dans un userform
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/03/2006, 09h03
  5. [VBA-E]Changer la "légende" d'une feuille
    Par illight dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 09/02/2006, 15h46

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