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 :

exportation de graphique d'excel à power point : ne fonctionne qu'une fois sur deux


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 11
    Points : 9
    Points
    9
    Par défaut exportation de graphique d'excel à power point : ne fonctionne qu'une fois sur deux
    Salut,

    J'ai un problème très particulier que je n'arrive pas à résoudre et c'est un vrai casse-tête pour moi

    Je dispose d'une feuille excel composée de 16 graphiques (tous nommés), et je cherche à exporter tous ces graphiques vers un power point via un code VBA.

    le problème: les exports marchent une fois sur deux. Et ce n'est pas forcément sur le même graphique que le problème a lieu. Un coup j'aurai un power point avec tous mes graphiques un autre j'en aurai seulement 2 ou 3.
    C'est plus précisément, l’exécution de cette ligne qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ChartObjects("sexe").Copy
    où "sexe" est le nom du graphique. L'erreur affichée lors de l'execution du code est : "erreur d'execution 1004. erreur definie par l'application ou par l'objet". Si j'exécute le code pas à pas, il me faut cliquer avec la souris sur n'importe quelle cellule de la feuille pour que ça marche.

    PS : mon problème est aussi décrit ici : http://www.mrexcel.com/forum/excel-q...owerpoint.html Malheureusement, pas de solution trouvée

    Voici le code en question:
    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
    46
    47
    48
    49
    Sub ModifierPresentationExistante()
    Dim date_jour As String
     
     
    date_jour = InputBox("Nom du fichier")
     
    Set PptApp = CreateObject("Powerpoint.Application")
    PptApp.Visible = True
    Set PptDoc = PptApp.Presentations.Open("C:\Users\document\excel\presentation.pptx")
     
     Worksheets("Resultat").Activate
     
    With PptDoc
        'Sexe
        Worksheets("Resultat").Activate
        ActiveSheet.ChartObjects("sexe").Copy
        'Effectue un collage dans la 2eme diapositive
        .Slides(2).Shapes.PasteSpecial ppPasteMetafilePicture
     
        With .Slides(2).Shapes(.Slides(2).Shapes.Count)
            '.Name = "monTableau" 'Renomme l'objet collé
            .Left = 85 'position horizontale dans le slide
            .Top = 235 'position verticale dans le slide
            .Height = 225 'hauteur
            .Width = 650 'largeur
        End With
     
        'age
        Worksheets("Resultat").Activate
        ActiveSheet.ChartObjects("age").Copy
        'Effectue un collage dans la 2eme diapositive
        .Slides(3).Shapes.PasteSpecial ppPasteMetafilePicture
     
        With .Slides(3).Shapes(.Slides(3).Shapes.Count)
            '.Name = "monTableau" 'Renomme l'objet collé
            .Left = 325 'position horizontale dans le slide
            .Top = 220 'position verticale dans le slide
            .Height = 300 'hauteur
            .Width = 400 'largeur
        End With
     
    End With
    PptDoc.SaveAs Filename:="C:\Users\document\excel\presentation_" & date_jour & ".pptx"
     
     
    'PptDoc.Close
    'PptApp.Quit
     
    End Sub

  2. #2
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Bonjour,
    Je n'ai pas étudié ton code de A à Z ni essayé de le tester, mais il y a quelques chose qui m'a sauté aux yeux.
    Tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With PptDoc
        'Sexe
        Worksheets("Resultat").Activate
        ActiveSheet.ChartObjects("sexe").Copy
        'Effectue un collage dans la 2eme diapositive
        .Slides(10).Shapes.PasteSpecial ppPasteMetafilePicture
     
        With .Slides(2).Shapes(.Slides(2).Shapes.Count)
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     'age
        Worksheets("Resultat").Activate
        ActiveSheet.ChartObjects("age").Copy
        'Effectue un collage dans la 2eme diapositive
        .Slides(17).Shapes.PasteSpecial ppPasteMetafilePicture
     
        With .Slides(17).Shapes(.Slides(17).Shapes.Count)
    On voit que dans le second cas tu fais référence au même Slide, le 17, pourquoi ne le fais-tu pas dans le premier cas?
    Si tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .Slides(10).Shapes.PasteSpecial ppPasteMetafilePicture
     
        With .Slides(10).Shapes(.Slides(10).Shapes.Count)
    Est-ce que cela résout ton problème?

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Non non, petite erreur de copier-coller
    je rectifie

  4. #4
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,

    J'ai déjà rencontré ce type de problème et pour le "résoudre", j'ai bricolé un truc qui consiste à mettre la nouvelle image dans une variable lors du coller.
    Si tu n'as pas réussi à la coller, tu relances la partie copier-coller.
    En gros, avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i = 0
    tant que i<3
    'Ais-je copier-coller ?
    'Oui : i = 3
    Non : i = i +1
    Fin tant que
    J'ai été tranquille avec ça.

    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci.

    J'ai eu du mal à comprendre mais la c'est bon. Je vais le tester demain.

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par padada4 Voir le message
    Salut,

    J'ai un problème très particulier que je n'arrive pas à résoudre et c'est un vrai casse-tête pour moi

    C'est plus précisément, l’exécution de cette ligne qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.ChartObjects("sexe").Copy
    où "sexe" est le nom du graphique.
    Je pense que tu devrais revoir ton code, parce que l'impression que j'en tire, c'est que VBA se mêle dans ses pinceaux.

    En prenant une section de ton code

    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
    Sub ModifierPresentationExistante()
     
    With PptDoc
        'Sexe
        Worksheets("Resultat").Activate
        ActiveSheet.ChartObjects("sexe").Copy
        'Effectue un collage dans la 2eme diapositive
        .Slides(2).Shapes.PasteSpecial ppPasteMetafilePicture
     
        With .Slides(2).Shapes(.Slides(2).Shapes.Count)
            '.Name = "monTableau" 'Renomme l'objet collé
            .Left = 85 'position horizontale dans le slide
            .Top = 235 'position verticale dans le slide
            .Height = 225 'hauteur
            .Width = 650 'largeur
        End With
     
      End Sub
    Tu commences ton bloc With en disant que tu utilises un Objet PowerPoint, puis tu lui mets dans les pattes, deux lignes portant sur un objet Excel. Je ne suis pas surpris que cela plante. Je n'ai pas de classeur avec une feuille pleine de graphiques sous la main, mais à première vue, et dans les très grandes lignes, ton code devrait ressembler à ce modèle. En passant, tu n'a pas besoin d'activer la feuille pour jouer dedans

    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
    sub GraphiquesVersPowerPoint()
       Set PptApp = CreateObject("Powerpoint.Application")
       PptApp.Visible = True
       Set PptDoc = PptApp.Presentations.Open("C:\Users\document\excel\presentation.pptx")
     
       for each Ungraphique in Sheets("Feuil1").chartobjects
          'Au pire, si tu n'as pas besoin de tous les graphiques de la feuille
          'tu peux lui faire itérer un tableau de noms
          'ou juste vérifier le nom avant de copier
          ungraphique.copy
          'ou
          'ungraphique.copypicture
          'pour avoir une image
          With PptDoc
           'Effectue un collage dans la 2eme diapositive
              .Slides(2).Shapes.PasteSpecial ppPasteMetafilePicture
     
              With .Slides(2).Shapes(.Slides(2).Shapes.Count)
                    '.Name = "monTableau" 'Renomme l'objet collé
                    .Left = 85 'position horizontale dans le slide
                    .Top = 235 'position verticale dans le slide
                    .Height = 225 'hauteur
                    .Width = 650 'largeur
             End With
         end with
       next
    end sub
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

Discussions similaires

  1. [EXCEL 2010] copier coller marche une fois sur deux
    Par gilles171 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/04/2015, 16h51
  2. [AC-2007] Erreur 462 sur du VBA Excel une fois sur deux
    Par lio33 dans le forum VBA Access
    Réponses: 6
    Dernier message: 16/04/2013, 09h41
  3. [AC-2010] Exportation d'un recordset vers Excel ne fonctionne qu'une fois sur deux
    Par Scregneugneu dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/03/2012, 19h47
  4. [XL-2007] Exportation de graphique de Excel vers Word
    Par grayfox1 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 13/11/2010, 15h10
  5. Export Formulaire Graphique dans Excel
    Par kenobyalex dans le forum VBA Access
    Réponses: 10
    Dernier message: 25/03/2008, 11h41

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