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 :

Récupérer le texte de la la légende ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut Récupérer le texte de la la légende ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai un graphique (un camembert) avec divers secteurs.
    Dans la zone légende, chaque secteur est identifié par une couleur et un texte.
    Je dois changer les pourcentages affichés dans chaque secteur (ça je sais faire).

    Pour être sûr d'affecter la bonne valeur au bon secteur je voudrais récupéré le texte associé à sa légende pour ensuite chercher dans ma source de données la valeur qui m'intéresse.

    Ci-dessous un exemple du résultat

    Nom : TestGraphique.jpg
Affichages : 1394
Taille : 17,1 Ko

    Comme on peut le voir les % affichés ne correspondent pas à la taille physique du secteur.

    Et je n'arrive pas à obtenir le "A" correspondant à mon secteur bleu.

    J'a essayé avec LegendEntry qui me paraissant prometteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Dim l As LegendEntry
        Set l = ActiveChart.Legend.LegendEntries(2)
        l.Select
        Dim cf As ChartFormat: Set cf = l.Format
        Debug.Print l.Format.TextFrame2.TextRange.Text
    Mais cela me retourne une chaîne vide.

    J'ai fait pas mal de recherches sur Google, sans succès.

    Bien sur je pourrais aller dans ma source de donnée en me basant sur l'index du secteur mais si pour une raison X l'ordre des secteurs différait de celui de ma source la donnée affichée serait fausse.

    Si quelqu'un a une piste ou un idée, merci.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  2. #2
    Membre expérimenté
    Homme Profil pro
    développeur
    Inscrit en
    Février 2013
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 123
    Par défaut
    Bonjour,

    As-tu essayé de remplacer "ActiveChart" par l'objet Charts accompagné de l'identifiant du graphique?
    Je n'ai jamais essayé cette méthode mais pourquoi avoir précisé un index à "LegendEntries"?

    Bonne journée.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut
    Bonjour et merci de ton intérêt.


    As-tu essayé de remplacer "ActiveChart" par l'objet Charts accompagné de l'identifiant du graphique?
    Oui, passer par ActiveChart ou accéder via la collection ne change rien.

    Je n'ai jamais essayé cette méthode mais pourquoi avoir précisé un index à "LegendEntries"?
    Dans le code exemple c'est pour essayer de lire "B" la seconde entrée de la légende.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ce n'est pas dans Legend qu'il faut essayer de le récupérer mais dans Series en récupérant le Range des abscisses de la série.
    En plus, avec un camembert c'est facile, il n'y a qu'une seule série.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut
    Ce n'est pas dans Legend qu'il faut essayer de le récupérer mais dans Series en récupérant le Range des abscisses de la série.
    Auris-tu un exemple de code VBA ?

    J'avoue que le modèle d'objet de Excel me casse un peu la cervelle.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    N'oublie pas que l'enregistreur automatique de macro et l'aide VBA sont tes amis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaSerie As String
    MaSerie Worksheets("Feuil1").ChartObjects("Graphique 1").Chart.SeriesCollection(1).Formula
    Ce code permet de sortir la formule de la série.
    Il faut ensuite jouer avec InStr() et Mid() pour extraire le second paramètre et le placer dans un Range.

    Je pense qu'il doit être plus simple de passer par la propriété XValues.
    Mais j'ai du mal à comprendre ce qu'exporte exactement cette propriété (et pas trop de temps à y consacrer ce soir).
    Regarde l'aide VBA si tu peux arriver à trouver ça :
    https://msdn.microsoft.com/fr-fr/lib.../ff821866.aspx

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

Discussions similaires

  1. [Excel] Récupérer le texte dans un shape de type zonedetext
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 11h00
  2. Récupérer du texte d'un fichier xml entre deux balises
    Par manutudescends dans le forum Format d'échange (XML, JSON...)
    Réponses: 24
    Dernier message: 30/11/2005, 18h29
  3. récupérer le texte d'un tooltip grace à son hwnd
    Par ChrisitianS_ dans le forum MFC
    Réponses: 2
    Dernier message: 19/11/2005, 15h23
  4. Récupérer le texte d'un champ de texte
    Par theberliner dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/12/2004, 10h08
  5. [methode] récupérer du texte
    Par thesly dans le forum Débuter
    Réponses: 6
    Dernier message: 23/04/2004, 15h14

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