Sauver puis fermer présentation PPT
Bonjour à vous,
J'avance sur VBA par tâtonnement et dans le cas présent j'ai une macro me permettant d'ouvrir un fichier PPT via un path spécifique puis de copier-coller un tableau excel sur cette dernière. Mon problème intervient quand je veux sauver le fichier PPT via un nouveau nom et le fermer. Vous verrez que j'ai essayé beaucoup de choses ;)
Pourriez-vous svp m'aider à ce sujet?
Merci d'avance!
H.R.
Bonjour à vous,
Up! ;) Quelqu'un a une idée?
Merci beaucoup!
Bonjour,
Quelqu'un a une idée?
Oui. Beaucoup. Dont quelques unes pour ton projet...
Tu déclares tes variables PPT comme PowerPoint.Application, PowerPoint.Presentation et PowerPoint.Slide.
Tu as donc coché la référence à Microsoft PowerPoint xx.x Object Library, et c'est très bien. Tu travailles en Early Binding (ou Liaison anticipée).
Ceci te permet d'accéder aux objets de Powerpoint, mais également à leurs méthodes et propriétés, SAUF... si tu affectes ta(tes) variables comme ceci :
Set myPPT = CreateObject("Powerpoint.application")CreateObject(), comme son nom l'indique, va créer un "Objet" en Laison tardive (Late Binding). Résultat? ==> Pas de complétion, code plus lent, risque d'erreurs multiples...
Alors, comment faire?
Remplacer :
'Ouvrir pres PPT
Set myPPT = CreateObject("Powerpoint.application")
myPPT.Visible = True
'Chemin vers la presentation
myPPT.Presentations.Open "S:\Site web + investment proposal\PPT_Test.pptx"
Set PPTSlide = myPPT.ActivePresentation.Slides(2)Par :
'Ouvrir pres PPT
Set myPPT = CreateObject("Powerpoint.application")
myPPT.Visible = True
'Chemin vers la presentation
Set pptPres = myPPT.Presentations.Open("C:\Users\Franck.Presse\Desktop\Le SAF.pptx")
Set PPTSlide = myPPT.ActivePresentation.Slides(2)En utilisant la variable pptPres pour ouvrir ta présentation (ce que tu avais omis), tu pourras facilement l'enregistrer et la fermer...
Regarde, simplement, en tapant, en dessous des quelques lignes ci-dessus :
pptPres.
Il va te proposer la liste des propriétés et méthodes de ton objet présentation.
Dont, SaveAs et Close.
Pour les trouver, une fois que tu as saisi le point dans pptPres. , tu peux taper la première lettre. Exemple :pptPres.S va te présenter les méthodes : Save, SaveAs, SaveCopyAs...
Pour enregistrer sous... choisit SaveAs et appuie sur la barre d'espace.
Tu vois à l'écran pptPres.SaveAs (FileName As String, ...etc...)
Tu sais maintenant que tu vas enregistrer sous ... le chemin + nom que tu va lui donner...
Ton code, à vérifier, devient donc :
Sub Export_Donnee_Excel_PPT()
'Declare les variables PPT
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim PPTSlide As PowerPoint.Slide
Dim Nomdest As String
'Declare variables Excel
Dim ExcRng As Range 'INUTILE
Dim RngArray As Variant 'INUTILE
'Selectionner un Range
Sheets("Divers").Range("B49:E55").Copy
'Ouvrir pres PPT
Set pptApp = New Powerpoint.application
pptApp.Visible = True
'Chemin vers la presentation
Set pptPres = pptApp.Presentations.Open("S:\Site web + investment proposal\PPT_Test.pptx")
Set PPTSlide = pptPres.Slides(2)
'Collage normal
PPTSlide.Shapes.Paste
'Enregistrement et fermeture
Nomdest = "S:\Site web + investment proposal\PPT_Test_final.pptx"
pptPres.SaveAs Nomdest
pptPres.Close
'destruction des variables et fermeture de l'application Powerpoint
Set PPTSlide = Nothing
Set pptPres = Nothing
pptApp.Quit
Set pptApp = Nothing
End SubFacile non?
Wahou top, merci Franck!
Je n'ai pas la possibilité de tester cela pour le moment mais je te ferais un retour dès que c'est le cas!
Bonne journée.
Hugo
Ca marche parfaitement bien, merci pour le code et surtout les explications qui vont me permettre de faire du "talonnement 2.0" :)