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 :

Mise à jour de graphiques dans Powerpoint depuis Excel VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    comptable
    Inscrit en
    Août 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : comptable
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2016
    Messages : 55
    Par défaut Mise à jour de graphiques dans Powerpoint depuis Excel VBA
    Bonjour à tous,
    J'ai un classeur excel "test" qui contient deux graphiques sur l'onglet "graphiques" : "graphique 1" dont les données sont en A1:B5 de l'onglet "données" et "graphique 2" dont les données sont en E1:F5 sur l'onglet "données". J'ai également un Powerpoint "test" qui contient le graphique 1 en page 2 et le graphique 2 en page 3. Je souhaiterai mettre un Bouton sur mon classeur excel pour mettre à jour le Powerpoint mais je bloque... J'ai utilisé la macro proposé dans la FAQ mais je n'arrive pas à la faire marcher sur mon fichier.

    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
    50
    51
    52
    53
    54
    55
    56
    57
     
    Sub MAJ_graphiqueDansPresentation()
    Dim appPPT As PowerPoint.Application
    Dim Sh As PowerPoint.Shape
    Dim Gr As Workbook
     
    Set appPPT = CreateObject("PowerPoint.Application")
    appPPT.Visible = msoTrue
    appPPT.Presentations.Open "C:\Users\Administrateur\Desktop\test.pptx"
     
    'Copie une plage de cellules dans la feuille active
    'Ces données vont être collées dans le classeur incorporé, dans ppt, servant
    'de source pour le graphique.
    ActiveSheet.Range("A1:B5").Copy
     
    'Le classeur incorporé est dans le 1er Slide
    With appPPT.ActivePresentation.Slides(2)
        'Boucle sur les formes pour retrouver l'objet Excel
        For Each Sh In .Shapes
            'Verifié s'il s'agit d'un objet incorporé
            If Sh.Type = msoEmbeddedOLEObject Then
                'Vérifie s'il s'agit d'une feuille graphique
                If Sh.OLEFormat.progID = "Excel.Chart.8" Then
                    Set Gr = Sh.OLEFormat.Object
                    'Colle les données dans la Feuil1 du classeur incorporé
                    'La feuil1 contient la source de données pour le graphique
                    Gr.Sheets("Données").Range("A1").PasteSpecial
                    'réactive la première feuille du classeur incorporé
                    '(Le graphique est situé dans ce 1er onglet)
                    Gr.Sheets(1).Activate
                End If
            End If
        Next Sh
    End With
     
    ActiveSheet.Range("E1:F5").Copy
     
    'Le classeur incorporé est dans le 1er Slide
    With appPPT.ActivePresentation.Slides(3)
        'Boucle sur les formes pour retrouver l'objet Excel
        For Each Sh In .Shapes
            'Verifié s'il s'agit d'un objet incorporé
            If Sh.Type = msoEmbeddedOLEObject Then
                'Vérifie s'il s'agit d'une feuille graphique
                If Sh.OLEFormat.progID = "Excel.Chart.8" Then
                    Set Gr = Sh.OLEFormat.Object
                    'Colle les données dans la Feuil1 du classeur incorporé
                    'La feuil1 contient la source de données pour le graphique
                    Gr.Sheets("Données").Range("E1").PasteSpecial
                    'réactive la première feuille du classeur incorporé
                    '(Le graphique est situé dans ce 1er onglet)
                    Gr.Sheets(1).Activate
                End If
            End If
        Next Sh
    End With
    End Sub
    Quelqu'un pourrait-il m'aider ?
    Merci par avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Pas le temps de regarder ton code en détail mais voici le code que j'utilise pour mettre à jour un powerpoint.

    Dans le fichier Excel:
    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
     
    Sub ppt()
    If Month(Date) = 1 Then
        annee = Year(Date) - 1
        mois = 12
    Else
        annee = Year(Date)
        mois = Month(Date) - 1
    End If
    If mois < 10 Then
        t = "0"
    Else
        t = ""
    End If
     
        Dim ppapp As Object
        Dim Pres As Presentation
    ' on ouvre le fichier powerpoint
        Set ppapp = CreateObject("PowerPoint.Application")
        ppapp.Visible = True
        Set Pres = ppapp.Presentations.Open(Range("chemin_ppt") & Range("nom_ppt"))
    'on lance la macro de de mise à jour des liens
        Pres.Application.Run Range("nom_ppt") & "!MaJ_lien"
    'on sauvegarde
        Pres.Save
    'on copie sans macro à l'emplacement indiqué dans la sheet("TO DO")
        Pres.SaveAs Range("chemin_exp") & "_" & t & mois & "_" & annee, ppSaveAsOpenXMLPresentation
     
    End Sub
    Dans le Power point:
    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
     
    Public Sub MaJ_lien()
    Dim objPres As Presentation
    Dim objSld As Slide
    Dim objShp As Shape
    Dim strAncien As String
    Dim strNouveau As String
     
     
        Set objPres = ActivePresentation
     
        ' parcourt des diapositives de la présentation
        For Each objSld In objPres.Slides
            ' parcourt des formes des diapositives
            For Each objShp In objSld.Shapes
                ' on test si c'est un objet lié
                If objShp.Type = msoLinkedOLEObject Then
                    'on met à jour les liens
                    objShp.LinkFormat.Update
                End If
            Next objShp
        Next objSld
     
    End Sub
    PS:
    J'ai utilisé la macro proposé dans la FAQ mais je n'arrive pas à le faire marché sur mon fichier.
    Sans plus de détail, tu auras peu de réponse.
    Un message d'erreur? si oui lequel et a quel ligne

  3. #3
    Membre confirmé
    Femme Profil pro
    comptable
    Inscrit en
    Août 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : comptable
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2016
    Messages : 55
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    PS:

    Sans plus de détail, tu auras peu de réponse.
    Un message d'erreur? si oui lequel et a quel ligne
    Je n'ai pas de message d'erreur, mais il ne se passe rien.
    Merci pour le code, je vais essayer de l'appliquer à mon fichier.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    En regardant un peu plus ton code, je vois que tu fais des copier coller, que je ne fais pas du tout.
    As tu coller tes graphiques avec le collage spécial par liaison?

  5. #5
    Membre confirmé
    Femme Profil pro
    comptable
    Inscrit en
    Août 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : comptable
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2016
    Messages : 55
    Par défaut
    J'ai coller en incorporant le classeur, d'où les copier coller en plus je pense... Après je débute sur VBA donc pour faire mon code j'ai juste pris le code que j'ai trouvé et j'ai essayé de l'adapter à mon cas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' on ouvre le fichier powerpoint
        Set ppapp = CreateObject("PowerPoint.Application")
        ppapp.Visible = True
        Set Pres = ppapp.Presentations.Open(Range("chemin_ppt") & Range("nom_ppt"))

    Je suis en train de tester ton code, mais j'ai un problème au niveau de l'ouverture du fichier. Le chemin de mon fichier complet est "C:\Users\Administrateur\Desktop\test.pptm"

    Que mets-tu dans "chemin_ppt" et dans "nom_ppt" exactement ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Chemin: C:\Users\Administrateur\Desktop\
    Nom: test.pptm
    Ces deux infos étant remplie des cellules que je nomme. Ce qui permet a quelqu'un qui ne connait pas VBA de changer le chemin et/ou le nom du fichier sans avoir a modifier la macro. Je sépare en deux car pour appeler la macro j'ai besoin du nom uniquement

    Mais tu peux ecrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set Pres = ppapp.Presentations.Open("C:\Users\Administrateur\Desktop\test.pptm")
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pres.Application.Run "test.pptm!MaJ_lien"
    Par contre j'insiste sur le fait que mon code marche pour un collage special avec liaison
    Nom : Untitled.jpg
Affichages : 3331
Taille : 95,6 Ko

    Je ne sais pas ce que tu entends par "coller en incorporant le classeur" mais le problème vient peut être de là

  7. #7
    Membre confirmé
    Femme Profil pro
    comptable
    Inscrit en
    Août 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : comptable
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2016
    Messages : 55
    Par défaut
    Merci beaucoup pour tes explications. J'ai réussi à ouvrir le powerpoint depuis Excel et je pense que la macro Excel marche. Par contre, j'ai un souci pour la macro powerpoint... Je l'ai copier coller tel que tu l'a écrite, fallait-il modifier quelque chose ?
    La macro tourne sans mettre d'erreur mais rien ne se met à jour. J'ai modifier mon powerpoint pour coller mes graphique avec liaison et je peux les mettre à jour en faisant "outils - création - actualiser les données". Je pense que c'est ce que fait la macro mais dans mon fichier, elle ne fonctionne pas...

  8. #8
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Normalement il n'y a rien a modifer, elle marche tel quel chez moi, et c'est l'équivalent de "clic droit" (sur un graphe) "update link".

    Essaye ceci et dis moi la valeur que tu obtient.
    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
     
    Public Sub MaJ_lien()
    Dim objPres As Presentation
    Dim objSld As Slide
    Dim objShp As Shape
    Dim strAncien As String
    Dim strNouveau As String
    dim c as integer
    c=0 
        Set objPres = ActivePresentation
     
        ' parcourt des diapositives de la présentation
        For Each objSld In objPres.Slides
            ' parcourt des formes des diapositives
            For Each objShp In objSld.Shapes
                ' on test si c'est un objet lié
                If objShp.Type = msoLinkedOLEObject Then
                    c=c+1
                    'on met à jour les liens
                    objShp.LinkFormat.Update
                End If
            Next objShp
        Next objSld
    msgbox c 
    End Sub

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

Discussions similaires

  1. [AC-2010] Mise à jour base de données Access depuis Excel
    Par NewUserAccess dans le forum Access
    Réponses: 3
    Dernier message: 26/02/2015, 13h58
  2. Erreur 3113 sur mise à jour d'une base MySQL depuis Excel en DAO
    Par canichon dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/01/2015, 17h38
  3. Réponses: 0
    Dernier message: 05/01/2015, 15h43
  4. [XL-2010] Mise à jour des formules dans une feuille Excel
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 04/09/2013, 10h04
  5. [XL-2007] Insertion d'un graphique dans PowerPoint - Erreur Excel
    Par seb nantes dans le forum Excel
    Réponses: 2
    Dernier message: 20/01/2010, 21h03

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