Bonjour à tous,
Je vous explique sachant que je suis archi novice et donc il pourra peut-être manquer des éléments pour que vous puissiez m'aider. Ce n’est pas moi qui ai écrit cette macro. Je tente de la comprendre pour mettre à jour un document.
J'ai un document powerpoint «presentation » qui se met à jour via un fichier excel "donnees".
Dans ce fichier "donnees", il y a une macro et lorsque je la lance, cela ouvre le modele de ppt, met à jour tous les éléments chiffrés pour un territoire donné puis enregistre sous pdf le ppt et aussi en ppt et ainsi de suite jusqu'à la fin de la boucle. Cela permet de générer une centaine de territoires en 2 formats (pdf et ppt).
Lorsque je lance la macro, tout se met à jour SAUF une carte (qui correspond à « image 11 » de mon ppt). Et la subtilité c'est que la carte est à jour dans le format ppt enregistré mais pas dans le format pdf.
Je n’arrive pas du tout à voir où est le problème. Les cartes sont bien toutes stockées dans C:\temp\test\images\
Je n’ai aucun message d’erreur dans la macro. Elle tourne parfaitement, fait tout le job sauf cette mise à jour de carte uniquement dans le pdf.
Ci-après le morceau de la macro.
'OUVRIR LE DOCUMENT MODELE
'-------------------------------------------------------------
Set ppt = New PowerPoint.Application
Set myPPT = ppt.Presentations.Open(pathPPT) ', WithWindow:=False) 'Ouvre la présentation modèle en la masquant
'Mettre a jour l'image
code_territoire = ThisWorkbook.Sheets("accueil").Range("G17").Value
url_image = "C:\temp\test\images\" & code_territoire & ".png"
'MsgBox (url_image)
ppt.ActivePresentation.Slides(1).Shapes("image 11").LinkFormat.SourceFullName = url_image
'MsgBox (ThisWorkbook.Sheets("t0").Range("A2"))
'MISE A JOUR DES LIENS VERS LES FICHIERS EXCEL
'-------------------------------------------------------------
ppt.ActivePresentation.UpdateLinks
' la procédure ci-dessous est optionnelle. Si on souhaite rompre les liens. Le problème constaté, la police de caractère change légèrement, mais point positif, plus de message sur la mise à jour des liens.
'ppt.ActivePresentation.Slides(1).Shapes("t1").LinkFormat.BreakLink 'Rompre le lien pour éviter la demande de mise à jour de données
'ppt.ActivePresentation.Slides(1).Shapes("t2").LinkFormat.BreakLink
'C17
'SAUVEGARDER ET TOUT FERMER
'-------------------------------------------------------------
pathPPTfinal = "C:\temp\test\" & ThisWorkbook.Sheets("t0").Range("A2") 'Définir le nom / chemin du fichier à sauvegarder, on pointe sur la feuille t0 pour aller chercher la valeur
'pathPPTfinal = "C:\temp\test\presentation2.pptx"
myPPT.SaveAs (pathPPTfinal & ".pptx")
attendre (1) 'On attend juste 1 seconde pour éviter les bug lors de l'enregistrement. Voir la fonction attendre plus bas si bug
ppt.ActivePresentation.SaveAs pathPPTfinal & ".pdf", ppSaveAsPDF 'sauvegarder en pdf
attendre (1)
ppt.ActivePresentation.Close
'myPPT.Close 'Fermeture du fichier
Next 'Fin de la boucle, prochain
ppt.Quit 'Fermeture de powerpoint. On fait le choix de bien tout fermer et de rouvrir à nouveau même si cela n'est pas le plus optimisé
MsgBox ("La procédure est terminée")
End Sub
Merci d’avance pour l’aide que vous m’apporterez 😉
Partager