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 :

Modification / suppression de légende de données d'un graphique via VBA


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
    Juillet 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 16
    Par défaut Modification / suppression de légende de données d'un graphique via VBA
    Bonjour à tous

    Je viens vous exposer un problème de code VBA que je rencontre :

    J'ai développé une macro qui copie les données source d'un classeur excel, dans mon classeur excel de travail ( tableaux de données / graphiques / texte ...etc ) , puis ouvre un fichier power point de travail , et y met les données concernées. Le fichier power point contient les informations de la dernière utilisation, donc la macro supprime les informations précédentes, et et y met les nouvelles informations ( nouveaux graphiques / nouveaux tableaux / nouveaux textes ...etc )

    Pour les graphiques, ceux-ci sont différents d'une utilisation à l'autre, et notamment parce que certaines données sont à 0 d'une utilisation à l'autre.

    Alors j'ai écrit un petit bout de code qui supprime les étiquettes de données de mes graphiques, lorsque les données sont à 0 ( comme ça les graphiques de répartition en anneaux par exemple, ne présentent que les données différentes de 0.

    Voici mon bout de code pour le faire, qui fonctionne :

    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
    With Sheets("classeur_de_travail")
     
     
    ' repartition géographique
     
     
    .ChartObjects("repart_geo").Activate
     
    Dim i As Long
    For i = 1 To 9
     
    ' les données sources du graphiques sont là donc je les teste pour savoir si elles ont été mises à 0 pour certaines
     
    If Cells(37 + i, 16).Value = 0 Then
     
    ' ce morceau de code supprime bien l'étiquette de donnée lorsque la données est à 0 
     
    ActiveChart.SeriesCollection(1).Points(i).HasDataLabel = False
     
     
     
    End If
     
    Next i
    Voilà, par contre mon problème c'est que je souhaite faire exactement la même chose avec la "Légende de donnée" mais je ne trouve pas la bonne syntaxe

    J'ai bien essayé

    ActiveChart.SeriesCollection(1).Points(i).HasDataLegend = False

    Mais ça n'existe pas

    Et la fonction HasLegend ne fonctionne que pour le graphique entier, alors que je veux uniquement supprimé les légendes des données qui sont à 0.

    Ma solution alternative ( et beaucoup plus lourde ) serait de faire une fonction qui place ailleurs les données différentes de 0, et crée de toute pièce le graphique correspondant à chaque fois, avant de le coller dans le powerpoint. Franchement ça serait hyper pénible de rédiger toutes les lignes de code pour son design.

    Avez-vous la bonne syntaxe pour supprimer la légende correspondant à un point de donnée du graphique ?
    J'ai cherché partout et je n'ai pas trouvé, et j'ai même cru comprendre que c'était impossible.


    Merci de votre aide


    PS : Veuillez me pardonner si je poste au mauvais endroit, je suis un peu perdu sur le site

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 16
    Par défaut Solution
    Bonjour à tous,

    J'ai finalement trouvé la solution sur un forum anglais

    Voici le bon code pour mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveChart.SeriesCollection(1).Points(i).HasDataLabel = False
    .ChartObjects("repart_geo").Chart.Legend.LegendEntries(i - cpt).Delete
    cpt = cpt + 1

    Il faut initialiser un compteur à 0 avant la boucle et le modifier ( incrémenter ou décrémenter selon la position de vos sources de données dans l'excel ) à chaque fois que l'on supprime une légende, sinon la position de la légende ne match plus avec la bon point de série de donnée.

    Mais ce bout de code fonctionne, avec un With au dessus, qui fait référence à la bonne Sheet


    Voilà pour ceux que ça aiderait

    Bien à vous

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

Discussions similaires

  1. Modification d'une base de données sans passer par le VBA
    Par bichette92 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/11/2018, 08h08
  2. [AC-2003] Modification/suppression d'un rendez vous créé sur outlook via VBA
    Par Faro dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/05/2016, 20h22
  3. Réponses: 5
    Dernier message: 07/08/2014, 00h52
  4. Réponses: 2
    Dernier message: 02/08/2012, 17h28
  5. afficher données sur un graphique via un datepicker
    Par nico9275 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/06/2012, 11h40

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