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 :

Problème de graphique croisé dynamique avec un histogramme et ses légendes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Par défaut Problème de graphique croisé dynamique avec un histogramme et ses légendes
    Bonjour à tous,

    je publie ce post puisque je n'ai pas réussi à trouver une réponse à mon sujet. J'ai créer un petit d'outil composé de deux pages.
    Une page constitue un tableau de données. L'autre page accueille des graphiques croisés dynamiques. Leurs données sont issues du tableau. J'ai crée un bouton pour passer d'une page à l'autre. A travers ce bouton, j'en ai profiter pour rafraichir ma page graphique pour actualiser les données. Le type de graphique qui me pose problème concerne un "histogramme".
    Chaque colonne possède sa propre légende. Quand je fais un clique droit sur une légende, je peux attribuer une mise en forme de cette légende que sur LA colonne en question. Si je ne me trompe pas, sur un graph "histogramme", il n'y a pas moyen de sélectionner l'ensemble des légendes et de préparer une mise en forme général.
    Du coup, j'ai préparer légende après légende ma mise en forme. Mais à chaque refreshall, toutes mes légendes disparaissent.

    Je me suis dit, c'est pas grave, je vais coder les légendes. Sur mon histogramme, j'ai réglé le fait qu'il ne peut y apparaitre au maximum 10 colonnes pour afficher les 10 meilleurs établissements de mon tableau.

    Du coup, j'ai codé dans ma page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ActiveSheet.ChartObjects("PMVAL2DEP_nbMOA").Activate
        ActiveChart.FullSeriesCollection(1).ApplyDataLabels
        ActiveChart.FullSeriesCollection(1).DataLabels.Select
    ActiveChart.FullSeriesCollection(2).ApplyDataLabels
        ActiveChart.FullSeriesCollection(2).DataLabels.Select
    ActiveChart.FullSeriesCollection(3).ApplyDataLabels
        ActiveChart.FullSeriesCollection(3).DataLabels.Select
    ActiveChart.FullSeriesCollection(4).ApplyDataLabels
        ActiveChart.FullSeriesCollection(4).DataLabels.Select
    ...
    ActiveChart.FullSeriesCollection(10).ApplyDataLabels
        ActiveChart.FullSeriesCollection(10).DataLabels.Select
    Mais le problème, c'est que si dans mon tableau, il ne sort que deux établissements, alors seulement les deux premières FULLSERIESCOLLECTION(1/2) sont lus et j'ai un message d'erreur à partir de ma ligne FULLSERIESCOLLECTION(3).

    Je ne sais pas comment atteindre mon objectif suivant qui est:

    Après un Activeworkbook.refreshall, peu importe le nombre de colonnes de mon histogramme (<10), je veux que chaque colonne est sa légende.

    Quelqu'un a une idée ?


    Merci milles fois !

    Cordialement

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    un exemple pas des plus optimisés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub er()
    Dim MaSerie As Series
     
    ActiveSheet.ChartObjects(1).Activate
        For Each MaSerie In ActiveChart.SeriesCollection
            MaSerie.ApplyDataLabels
        Next MaSerie
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 34
    Par défaut
    Merci, ca marche parfaitement !

    Je glisse mon code ci dessous si quelqu'un est intéressé pour voir comment j'ai adapté la solution indiquée.

    Bonne continuation !

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub CommandButton1_Click()
     
     
     
     
    Dim moeValue As String
    Dim attributaireValue As String
    Dim dptValue As String
    Dim moa As String
    Dim Maserie As Series
     
     
    Feuil5.Select
    Feuil5.Unprotect
    moeValue = Feuil5.Range("H4").value
    attributaireValue = Feuil5.Range("H5").value
    moaValue = Feuil5.Range("H3").value
    dptValue = Feuil5.Range("H6").value
     
    If (moeValue = "" And moaValue = "" And attributaireValue = "" And dptValue <> "") Then
       Feuil11.Visible = xlSheetVisible
       Feuil11.Select
       Feuil11.Unprotect
       ActiveWorkbook.RefreshAll
       ActiveWindow.Zoom = 80
     
    ActiveSheet.ChartObjects("PMVAL2DEP_nbMOA").Activate
    ActiveSheet.ChartObjects("PMVAL2DEP_nbMOA").Select
    For Each Maserie In ActiveChart.SeriesCollection
    Maserie.ApplyDataLabels
    Maserie.DataLabels.Select
    Selection.ShowCategoryName = True
    Selection.Separator = "" & Chr(13) & ""
    Selection.ShowSeriesName = True
    Selection.ShowValue = True
        With Selection.Format.TextFrame2.TextRange.Font.Fill
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorBackground1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
            .Transparency = 0
            .Solid
         End With
    Next Maserie
        Feuil11.Protect

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2014, 22h12
  2. [XL-2007] Graphique croisé dynamique avec histo empilé et courbe
    Par Lilou2903 dans le forum Excel
    Réponses: 9
    Dernier message: 06/03/2014, 21h09
  3. Réponses: 1
    Dernier message: 27/07/2011, 13h41
  4. Réponses: 4
    Dernier message: 23/07/2009, 11h01
  5. Réponses: 2
    Dernier message: 22/12/2008, 10h40

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