Dernière mise à jour : juin 2020
Applicable à : Office 2019 et versions antérieures. Windows seulement.
Voici une question d'un lecteur :
Dans le cadre de la présentation de mon rapport trimestriel à la direction, j'ai souvent besoin de copier plusieurs diapositives d'informations générales d'autres présentations. Ce n'est pas grave, mais ce serait une économie importante de pouvoir automatiser cet exercice. Toute aide de macro VBA pour accomplir cela est appréciée!
Comme vous venez de le mentionner, vous pouvez automatiser le copier-coller des diapositives dans PowerPoint à l'aide de Visual Basic pour Applications. Si vous avez besoin de créer plusieurs présentations chaque mois, cette automatisation de copie/importation de diapositives pourrait devenir un énorme gain de temps !
PowerPoint VBA pour ajouter des diapositives
Commençons par cet exercice simple.
Tout d'abord, assurez-vous que votre onglet de développement est activé et visible. Voici comment procéder .
Je suppose que vous avez déjà créé une présentation compatible avec les macros (le type de fichier est .pptm), que vous avez placée dans le même répertoire que votre présentation source (que j'appellerai source.pptm). Voici comment créer une présentation PowerPoint avec VBA .
Tout d'abord, prenons une sauvegarde de cette présentation (simple copie et sauvegarde).
Ensuite, insérons la macro suivante dans un nouveau module VBA dans votre présentation de destination. Tous les détails sur la façon de procéder peuvent être trouvés dans notre tutoriel PowerPoint VBA .
Voici le code VBA dont vous aurez besoin pour copier et coller automatiquement les diapositives.
Quelques hypothèses que j'ai faites:
- Votre présentation source est nommée source.pptm
- Vous allez coller les diapositives 2 à 4 de votre présentation source
- Vous allez placer les diapositives copiées à partir de la diapositive 5.
Sub InsertFromOtherPres()
' This short VBA macro copies slides from one presentation and inserts them into another
ActivePresentation.Slides.InsertFromFile FileName:="source.pptm", Index:=1, SlideStart:=2,
SlideEnd:=4
End Sub
Évidemment, n'hésitez pas à modifier l'indexation des numéros de diapositives dans le code afin qu'elles correspondent à vos besoins.
Vous pouvez faire défiler plusieurs présentations en boucle et insérer des diapositives spécifiques de chacune dans votre rapport de gestion.
PowerPoint VBA pour dupliquer des diapositives
Au lieu de copier des diapositives dans une autre présentation, vous pouvez cloner une ou plusieurs diapositives de votre présentation :
Sub CopySlides()
' Short snippet to duplicate the third slide in a presentation, change the index/es accrodingly
ActivePresentation.Slides(3).Duplicate
End Sub
Ce n'étaient que quelques exemples simples d'automatisation de PowerPoint. Les lecteurs à la recherche de questions spécifiques, n'hésitez pas à envoyer une demande via la page Contact.
J'espère que ça aide 🙂
Conserver le formatage lors de la copie de diapositives
Le problème avec l’exemple précédent était que le formatage du thème des présentations originales n’était pas copié. Supposons que les 2 feuilles aient un formatage différent, voici ce qui se serait passé :
Exemple 1
| |
Sub main()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Next i
objPresentation.Close
End Sub
|

Voici la présentation avec la diapositive que nous voulons copier :
Résultat :
Afin de résoudre ce problème, vous pouvez utiliser le code ci-dessous :
![Diapositives à copier]()
![Résultat]()
| |
Sub Example2()
Dim objPresentation As Presentation
Dim i As Integer
'open the target presentation
Set objPresentation = Presentations.Open("C:\2.pptx")
For i = 1 To objPresentation.Slides.Count
objPresentation.Slides.Item(i).Copy
Presentations.Item(1).Slides.Paste
Presentations.Item(1).Slides.Item(Presentations.Item(1).Slides.Count).Design = _
objPresentation.Slides.Item(i).Design
Next i
objPresentation.Close
End Sub
|
En plus de copier la diapositive, le code ci-dessus copie le design. Si vous souhaitez le faire manuellement, vous copierez le slidemaster dans la nouvelle présentation. Vous ne pouvez pas copier le slidemaster à l'aide de VBA, mais vous pouvez définir la propriété de conception des diapositives.