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 :

Lire des propriétés d'un graphique [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut Lire des propriétés d'un graphique
    Bonjour,
    J'ai un projet avec la gestion des graphiques et je cherche en vain à lire la référence aux plages de cellules pour les axes et les séries
    Je pars d'une feuille qui me sert de modèle et qui contient les données (tableau structuré) et le graphique.
    Dans le graphique, j'utilise la référence à des plages nommées portées feuilles (Gestionnaire des noms)

    Un bouton permet à l'utilisateur de copier la feuille "Modèle" dans le même classeur pour pouvoir insérer des nouvelles données.
    La référence aux plages nommées sont correctement adaptées aux tableaux de la feuille copiée mais en revanche les références des Axes et séries dans le graphique est perdu.

    J'ai donc pensé pour palier ce problème à lire les références des données du graphique avant copie pour les recopier ensuite après copie. J'arrive à écrire dans les propriétés FullSeriesCollection mais pas lire

    Les cellules nommées portées feuille (pour l'exemple pChart!Graph_Indicateur)
    Graph_Indicateur =t_Data[Indicateur]
    Graph_pBar =t_Data[pBar]
    Graph_x =t_Data[Date]

    Exemple pour l'une des séries.
    Je souhaite donc récupérer le nom de la plage nommée soit pour mon exemple pChart!Graph_Indicateur
    Nom : DialogBox Serie.png
Affichages : 153
Taille : 6,1 Ko

    Code reçu par l'enregistreur de macro, pour copier l'adresse des plage nommées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveChart.FullSeriesCollection(2).Name = "=""pBar"""
    ActiveChart.FullSeriesCollection(2).Values = "=='pChart (2)'!Graph_pBar"
    ActiveChart.FullSeriesCollection(2).XValues = "=='pChart (2)'!Graph_x"
    Une idée ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    Hello,
    est-ce que tu peux mettre en pièce jointe un classeur avec le modèle (si il n'y a pas de données confidentielles) pour qu'on y voit plus clair ?
    [EDIT] Est-ce que j'ai bien compris le problème : Tu arrives par exemple à écrire les Xvalues par une plage nommée mais tu n'arrives pas à retrouver le nom de cette plage en relisant le Xvalues ( on obtient qu'un tableau des données ?) ?
    Ami calmant, J.P

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour J.P.
    Merci de l'intérêt que tu portes à ma demande
    Voici le classeur en question

    Explications :
    Il y a actuellement deux feuilles modèles mais seule la feuille nommée pChart avec comme CodeName shc_Template_PChart contient un tableau et le graphique. En production évidemment le tableau est vide

    La feuille Accueil, illustrée ci-dessous contient deux boutons actuellement et ceux-ci servent à copier le modèle (ici pChart et iChart) qui est caché. Le bouton du dessus set à afficher

    L'axe et les séries du graphique font donc référence à des plages nommées de portabilité "Feuille"
    Graph_Indicateur =t_Data[Indicateur]
    Graph_pBar =t_Data[pBar]
    Graph_x =t_Data[Date]
    Nom : Feuille Sht_Home.png
Affichages : 135
Taille : 13,5 Ko
    Fichiers attachés Fichiers attachés
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    Je ne sais pas si c'est ça que tu recherches mais en faisant comme cela (utilisation de la formule de la série) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro1()
      Dim oChart As Chart
      Dim oAxe As Axis
      Dim t As Variant
      Dim FsC As Object
      Dim InfoSerie As Variant
        ActiveSheet.ChartObjects("Graphique 1").Activate
        Set oChart = ActiveChart
        Set oAxe = oChart.Axes(1)
        Set FsC = oChart.SeriesCollection(1)
        InfoSerie = Split(FsC.Formula, ",")
        Debug.Print InfoSerie(2)
    j'arrive à récupérer le pChart!Graph_Indicateur

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour J.P.
    Merci pour ta réponse, , j'ai cherché pendant plus de deux heures.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      'ActiveSheet.ChartObjects("Graphique 1").Activate
      'Set oChart = ActiveChart
      Set oChart = ActiveSheet.ChartObjects("Graphique 1")
    J'espérais me passer de la méthode Activate mais tant pis
    La ligne 3 renvoie "Erreur 13, Incompatibilité de type" alors que ActiveChart est bien de type Chart

    L'important pour l'instant c'est d'avoir le résultat, j'approfondirai après

    Merci encore
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    Tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim oChart As Object
        Set oChart = ActiveSheet.ChartObjects("Graphique 1")
        Set oAxe = oChart.Chart.Axes(1)
        Set FsC = oChart.Chart.SeriesCollection(1)
    ou ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim oChart As Chart
        Set oChart = ActiveSheet.ChartObjects("Graphique 1").Chart
        Set oAxe = oChart.Axes(1)
        Set FsC = oChart.SeriesCollection(1)

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

Discussions similaires

  1. Comment lire les propriétés d'une imprimante ?
    Par zidenne dans le forum Langage
    Réponses: 18
    Dernier message: 06/08/2010, 12h26
  2. Lire les propriétés d'un fichier
    Par nawake dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/05/2008, 15h53
  3. Réponses: 9
    Dernier message: 03/12/2007, 15h50
  4. [c#] lire les propriété d'une image
    Par wayak3 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/10/2006, 14h07

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