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 :

Insérer graphique croisé dynamique dans UserForm


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut Insérer graphique croisé dynamique dans UserForm
    Bonjour à tous!

    Comme écrit dans le titre de la discussion, je souhaite insérer des graphiques croisés dynamiques dans un UserForm. Les graphiques sont obtenus par la création d'un tableau croisé dynamique dans la feuille "TCD" et les deux graphiques sont dans les feuilles "Graphe priorites" et "Graphe types". J'ai trouvé de nombreux (pas tant que ça non plus) codes sur Internet mais aucun ne fonctionne vraiment, et je ne comprends pas non plus la marche à suivre...

    Doit-on exporter le graphe en GIF pour l'insérer en tant qu'image dans le UserForm?
    Peut-on l'insérer directement en tant qu'objet?

    Est-ce que quelqu'un peut m'aider svp?

    Merci d'avance pour vos réponses et je reste à disposition!

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Merci pour le lien!

    Mais j'ai un problème à cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Worksheets("Graphe priorites").ChartObjects(1). _
            Chart.Export Filename:=Fichier, filtername:="GIF"
    Je reprécise que j'ai un graphique croisé dynamique, et non un graphique "normal", est-ce que cela peut jouer là dessus?

    Pour voir le nom des ChartObject de la page, j'ai testé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim c As ChartObject
    For Each c In ActiveSheet.ChartObjects
       MsgBox c.Name
    Next
    Et résultat, je n'ai aucun Msgbox qui apparaît donc pour moi l'erreur se situe sur ChartObjects(1) qu'il ne trouve pas.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par linkcr15 Voir le message
    Je reprécise que j'ai un graphique croisé dynamique, et non un graphique "normal", est-ce que cela peut jouer là dessus?.
    Je n'ai jamais utilisé ce genre de graphique mais je ne pense pas que cela change quelque chose
    Tu peux joindre un bout de fichier avec ton graphique ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Alors je t'ai fait une classeur de test, les graphes ne sont plus des graphes croisés dynamiques mais de simple graphes maintenant. Le problème est toujours là. Voici le lien : http://cjoint.com/?0Fhp1Nu1066

    PS : Je veux mettre les deux graphes dedans, j'ai fait que le boulot à moitié je sais, si j’arrive à en mettre un j'arriverais à mettre l'autre

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Donc si j'ai bien compris on utilise Sheets lorsqu'on à des graphes et des feuilles de calcul. Cependant, même en remplacant Worksheets par Sheets, j'ai la même erreur...

  8. #8
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut
    Bonjour,

    Je pense que c'est le ChartObjects qui ne marche pas avec les feuilles graphiques.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ListeChart()
    Dim c As ChartObject
     For Each c In ActiveSheet.ChartObjects
       MsgBox c.Name
      Next
     
    End Sub
    C'est un code que j'ai récupéré d'un vieux post et qui permet d'avoir le nom de tous les chartObjects de la feuille. Créer un graphique dans un feuille normal et sa te sortira le nom, essaie sur tes feuille graphiques et sa marche pas. Il faut trouver une alternative au chartobjects

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    nchal, regarde les posts précédents, j'ai déjà testé cette fonction et elle ne me sors aucun nom. Ce qui implique que je n'ai pas de CharObjects sur mes feuilles, c'est pourquoi le code ne fonctionne pas.
    Je ne comprends pas ce qu'est un CharObject, quelqu'un peut m'éclairer? (J'ai déjà lu l'aide de Microsoft et c'est très mal expliqué).

    Cependant j'ai trouvé ce code et là j'ai bien le nom de tous les graphes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Cherche_Nom_Graphique()
     
        Dim Graphique As Chart
     
        For Each Graphique In Charts
            MsgBox "Titre : " & Graphique.ChartTitle.Caption & vbCrLf & _
                    "Feuille : " & Graphique.Name
        Next Graphique
     
    End Sub
    Quelqu'un sait comment copier un graphe dans un UserForm sans passer par CharObjects(qui pour ma part ne fonctionne pas)?

  10. #10
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut
    Salut,

    je suis aussi perdu que toi, et je suis aussi aller voir l'aide de microsoft mais c'est vraiment n'importe quoi. En fouillant sur le web j'ai trouve qqchose d’intéressant puisque l'export ne plante plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserForm_Initialize()
     
       'Supprime l'image temportaire si elle existe
       If Dir(Fichier) <> "" Then Kill Fichier
     
        'Définit le 1er graphique de la Feuil1
        'exporte le graphique au format image
     
     
        Charts("Graphe types").Export Filename:=Fichier, FilterName:="GIF"
        'Affiche l'image dans l'UserForm
        Usr_Graphe.Image1.Picture = LoadPicture(Fichier)
    End Sub
    Chez moi, la taille de l'image n'est pas encore bonne mais je pense qu'on tient quelque chose

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Merci! Enfin quelque chose qui fonctionne.
    Chez moi l'image en elle même n'est pas redimensionnée, mais il faut que j'agrandisse le composant du UserForm pour qu'il s'adapte à l'image chargée. Merci beaucoup en tout cas, j'ai passé la journée entière à régler ce problème!

  12. #12
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par linkcr15 Voir le message
    Donc si j'ai bien compris on utilise Sheets lorsqu'on à des graphes et des feuilles de calcul.
    Sorry j'ai balancé le lien comme ça vite fait parce que je n'avais pas le temps d'approfondir. Mais oui c'est une des erreurs que j'avais constatée dans ton code, Worksheets("nom_feuille_graphique") ça coince.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 91
    Par défaut
    Sheets("nom_feuille_graphique") coince aussi je te rassure ^^ Mais merci pour le tuyaux

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/04/2014, 17h55
  2. Réponses: 1
    Dernier message: 22/12/2008, 11h09
  3. [E-03] tableau croisé dynamique dans userform
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/11/2008, 15h07
  4. droite dans Graphique croisé dynamique
    Par Maxsen dans le forum IHM
    Réponses: 1
    Dernier message: 11/03/2008, 21h35

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