Power Point VBA – Exemples et Didacticiels de Macros pour PowerPoint
In this Article
- PDF VBA (Téléchargements gratuits)
- Tutoriel VBA (Macros) pour PowerPoint
- Enregistrer en Tant que Présentation Prenant en Charge les Macros
- Activer l’Onglet « Développeur » du Ruban
- Créer une Macro PowerPoint
- Application PowerPoint
- Ouvrir une Nouvelle Présentation
- Ouvrir une Présentation Existante
- Ouvrir et Affecter à une Variable
- Référence à la Présentation Active
- Sauvegarde de la Présentation Active
- Fermer la Présentation Active
- Références Utiles
- Attribuer une Présentation Existante à une Variable (par son nom)
- Attribution d’une Diapositive Active à une Variable
- Affectation d’une Diapositive à une Variable par Index
- Compter le Nombre de Diapositives
- Obtenir le Numéro d’Index de la Diapositive Active
- Ajout d’une Diapositive Vierge à la Fin du Diaporama
- Ajout d’une Diapositive Après la Diapositive Actuelle
- Supprimer une Diapositive
- Aller à une Diapositive Spécifique
- Déplacer une Diapositive
- Boucle sur Toutes les Diapositives
- Boucle sur Toutes les Formes de la Diapositive Active
- Boucle sur Toutes les Formes dans Toutes les Diapositives
- Boucle sur Toutes les Boîtes de Texte de la Diapositive Active
- Boucle sur Toutes les Boîtes de Texte de Toutes les Diapositives
- Copier les Diapositives Sélectionnées dans une Nouvelle Présentation PPT
- Copie de la Diapositive Active à la Fin de la Présentation Active
- Exemples de Macros PowerPoint Utiles
- Changer de Diapositive Pendant le Diaporama
- Changer la Police sur Toutes les Diapositives dans Toutes les Boîtes de Texte
- Passer de la Casse Majuscule à la Casse Normale dans Toutes les Boîtes de Texte
- Basculer la Casse entre Majuscule et Normale dans Toutes les Boîtes de Texte
- Supprimer le Soulignement des Descendantes
- Supprimer les Animations de Toutes les Diapositives
- Enregistrer la Présentation au Format PDF
- Recherche et Remplacement de Texte
- Exporter une Diapositive en Tant qu’Image
- Redimensionner l’Image pour Couvrir Toute la Diapositive
- Quitter tous les Diaporamas en Cours
- Automatisation de PowerPoint à Partir d’Excel
Il s’agit d’un guide complet pour automatiser PowerPoint à l’aide de macros VBA (Visual Basic for Applications). Vous trouverez ci-dessous de nombreux exemples utiles.
PDF VBA (Téléchargements gratuits)
Téléchargez notre tutoriel VBA gratuit sur Microsoft PowerPoint! Ou des didacticiels VBA pour d’autres programmes Office!
Tutoriel VBA (Macros) pour PowerPoint
Enregistrer en Tant que Présentation Prenant en Charge les Macros
La présentation contenant le code VBA doit être enregistrée sous forme de présentation PowerPoint prenant en charge les macros (*.pptm)
Activer l’Onglet « Développeur » du Ruban
Vous devez activer l’onglet Développeur du ruban avant de créer du code VBA. Pour ce faire, choisissez Fichier -> Options, puis cliquez sur « Personnaliser le ruban » et cochez la case située à côté de l’onglet « Développeur » dans le volet de droite.
Créer une Macro PowerPoint
Voici un exemple simple de macro VBA pour PowerPoint :
Sub EnregistrerPrésentationEnPDF()
Dim pptNom As String
Dim pdfNom As String
' Sauvegarder PowerPoint en tant que PDF
pptNom = ActivePresentation.FullName
' Remplacer l'extension du fichier PowerPoint dans le nom par PDF
pdfNom = Left(pptNom, InStr(pptNom, ".")) & "pdf"
ActivePresentation.ExportAsFixedFormat pdfNom, 2 ' ppFixedFormatTypePDF = 2
End Sub
Elle enregistre la présentation active au format PDF. Chaque ligne de code fait ce qui suit :
- Crée des variables pour le nom du PowerPoint et le nom du PDF
- Attribue le nom de la présentation active à la variable pptNom
- Crée le nom complet du PDF
- Enregistre la présentation au format PDF
Application PowerPoint
Lorsque le code VBA est exécuté dans une présentation PowerPoint, l’application PowerPoint est l’application par défaut et elle peut être manipulée sans référence explicite. Créer une nouvelle présentation
Pour créer une présentation, utilisez la méthode Add de l’application PowerPoint.
Application.Presentations.Add
' ou sans référence explicite
Presentations.Add
Ouvrir une Nouvelle Présentation
Pour ouvrir une nouvelle présentation vierge, utilisez la méthode Add de la collection Application.Presentations
Presentations.Add
Ouvrir une Présentation Existante
Pour ouvrir une présentation que vous avez déjà créée, utilisez la méthode Open de la collection Application.Presentations
Presentations.Open ("MaPrésentation.pptx")
Le code ci-dessus suppose que la présentation se trouve dans le même répertoire que la présentation PowerPoint contenant le code.
Ouvrir et Affecter à une Variable
Vous devriez affecter la présentation que vous ouvrez à une variable afin de pouvoir la manipuler selon vos besoins.
Dim ppt As Presentation
Set ppt = Presentations.Open("MaPrésentation.pptx")
Référence à la Présentation Active
Utilisez la référence ActivePresentation pour manipuler la présentation active dans l’interface graphique lorsque le code VBA est exécuté.
' Imprimez le nom de la présentation active dans la fenêtre d'exécution
Debug.Print ActivePresentation.Name
Sauvegarde de la Présentation Active
L’instruction ci-dessous enregistre la présentation active si elle a déjà été enregistrée. Si elle ne l’a pas été, la boîte de dialogue « Enregistrer sous » s’affichera.
ActivePresentation.Save
Fermer la Présentation Active
L’instruction ci-dessous permet de fermer la présentation active, même si elle n’a pas été enregistrée après la dernière modification.
ActivePresentation.Close
Références Utiles
Attribuer une Présentation Existante à une Variable (par son nom)
Dim maPrésentationParNom As Presentation
Set maPrésentationParNom = Application.Presentations("MaPrésentation")
Attribution d’une Diapositive Active à une Variable
Dim diapoActive As Slide
Set diapoActive = Application.ActiveWindow.View.Slide
Affectation d’une Diapositive à une Variable par Index
Dim maDiapo As Slide
Set maDiapo = ActivePresentation.Slides(11)
Compter le Nombre de Diapositives
Dim nombreDiapos As Long
nombreDiapos = ActivePresentation.Slides.Count
Obtenir le Numéro d’Index de la Diapositive Active
Dim indexDiapoActive As Integer
indexDiapoActive = Application.ActiveWindow.View.Slide.SlideIndex
Ajout d’une Diapositive Vierge à la Fin du Diaporama
Dim nombreDiapo As Long
Dim newSlide as Slide
nombreDiapo = ActivePresentation.Slides.Count
Set nouvelleDiapo = ActivePresentation.Slides.Add(nombreDiapo + 1, 12)
' ou puisque ppLayoutBlank = 12
Set nouvelleDiapo = ActivePresentation.Slides.Add(nombreDiapo + 1, ppLayoutBlank)
Ajout d’une Diapositive Après la Diapositive Actuelle
Dim nouvelleDiapo As Slide
Dim indexDiapoActive as Integer
indexDiapoActive = Application.ActiveWindow.View.Slide.SlideIndex
Set nouvelleDiapo = ActivePresentation.Slides.Add(indexDiapoActive , ppLayoutBlank)
Supprimer une Diapositive
Dim indexDiapoActive as Integer
indexDiapoActive = Application.ActiveWindow.View.Slide.SlideIndex
ActivePresentation.Slides(indexDiapoActive).Delete
Aller à une Diapositive Spécifique
' Ceci vous amènera à la diapositive numéro 4
Application.ActiveWindow.View.GotoSlide (4)
Déplacer une Diapositive
Vous pouvez déplacer une diapositive de son ancienne position à une nouvelle position
' Déplacez la diapositive 3 vers la première diapositive
Dim anciennePos as integer, dim nouvellePos as integer
anciennePos = 3
nouvellePos = 1
ActivePresentation.Slides(anciennePos).MoveTo toPos:=nouvellePos
Boucle sur Toutes les Diapositives
Vous pouvez faire quelque chose avec chaque diapositive ou passer par toutes les diapositives pour trouver quelques diapositives et faire quelque chose avec en utilisant le code suivant :
Dim Diapo as Slide
For Each Diapo In ActivePresentation.Slides
' Faites quelque chose avec la diapositive actuellement référencée dans la variable 'Diapo'
' Debug.Print Diapo.Name
Next Diapo
Boucle sur Toutes les Formes de la Diapositive Active
La puissance de PowerPoint peut être réalisée en utilisant les objets ‘Shapes’ (Formes). Le code ci-dessous passe en boucle toutes les formes de la diapositive active afin que vous puissiez les manipuler comme vous le souhaitez ;
Dim diapoActive as Slide
Dim shp as Shape
Set diapoActive = Application.ActiveWindow.View.Slide
For Each shp in diapoActive.Shapes
' Faites quelque chose avec la forme référencée par la variable 'shp'
' Par exemple, imprimer le nom de la forme dans la fenêtre d'exécution
Debug.Print shp.Name
Next shp
Boucle sur Toutes les Formes dans Toutes les Diapositives
Vous pouvez parcourir en boucle toutes les formes de la présentation en ajoutant une boucle pour parcourir toutes les diapositives.
Dim diapoActive as Slide
Dim shp as Shape
For Each diapoActive In ActivePresentation.Slides
For Each shp In diapoActive.Shapes
' Faites quelque chose avec la forme référencée par la variable 'shp'
Debug.Print shp.Name
next shp
Next diapoActive
Boucle sur Toutes les Boîtes de Texte de la Diapositive Active
Les boîtes de texte sont les formes les plus souvent utilisées dans les présentations PowerPoint. Vous pouvez parcourir en boucle toutes les boîtes de texte en recherchant les objets de type « Shape Type ». Le type de forme des boîtes de texte est défini par la constante VBA msoTextBox (la valeur numérique de cette constante est 17)
Dim diapoActive As Slide
Dim shp As Shape
Set diapoActive = Application.ActiveWindow.View.Slide
For Each shp In diapoActive.Shapes
' Vérifier si le type de forme est msoTextBox
If shp.Type = 17 Then ' msoTextBox = 17
' Afficher le texte de la boite dans la fenêtre d'exécution
Debug.Print shp.TextFrame2.TextRange.Text
End If
Next shp
Boucle sur Toutes les Boîtes de Texte de Toutes les Diapositives
Une fois encore, vous pouvez parcourir toutes les zones de texte de la présentation en ajoutant une boucle pour parcourir toutes les diapositives.
Dim diapo As Slide
Dim shp As Shape
For Each diapo In ActivePresentation.Slides
For Each shp In diapo.Shapes
' Vérifiez si le type de forme est msoTextBox
If shp.Type = 17 Then ' msoTextBox = 17
' Faites quelque chose avec la TextBox référencée par la variable 'shp'
Debug.Print shp.TextFrame2.TextRange.Text
End If
Next shp
Next diapo
End Sub
Copier les Diapositives Sélectionnées dans une Nouvelle Présentation PPT
Pour copier certaines diapositives dans une nouvelle présentation, sélectionnez d’abord les diapositives souhaitées dans la présentation existante, puis exécutez le code ci-dessous ;
Dim présentationActive As Presentation
Dim diapoActive As Slide
Dim nouvellePrésentation As Presentation
' Sauvegardez la référence à la présentation actuelle
Set présentationActive = Application.ActivePresentation
' Enregistrer la référence à la diapositive actuelle
Set diapoActive = Application.ActiveWindow.View.Slide
' Ajouter une nouvelle présentation et sauvegarder la référence
Set nouvellePrésentation = Application.Presentations.Add
' Copie des diapositives sélectionnées
Selection.Copy
' Collez-les dans la nouvelle présentation
nouvellePrésentation.Slides.Paste
Copie de la Diapositive Active à la Fin de la Présentation Active
' Copier la diapositive actuelle
Application.ActiveWindow.View.Slide.Copy
' Coller à la fin
ActivePresentation.Slides.Paste
Exemples de Macros PowerPoint Utiles
Voici quelques exemples de macro utiles montrant comment effectuer des tâches. Ils démontrent également les concepts décrits ci-dessus.
Changer de Diapositive Pendant le Diaporama
Sub ChangerDiapositivePendantPrésentation()
Dim indexDiapo As Integer
Dim indexDiapoPrécédente As Integer
' Changez la diapositive actuelle en diapositive sélectionnée 4 pendant le diaporama
indexDiapo = 4
' L'index de la fenêtre actuelle du diaporama est 1 dans la collection SlideShowWindows
indexDiapoPrécédente = SlideShowWindows(1).View.CurrentShowPosition
SlideShowWindows(1).View.GotoSlide indexDiapo
End Sub
Changer la Police sur Toutes les Diapositives dans Toutes les Boîtes de Texte
Sub ChangerPoliceSurToutesLesDiapos()
Dim maDiapo As Slide
Dim shp As Shape
' Changez la taille de la police sur toutes les diapositives
For Each maDiapo In ActivePresentation.Slides
For Each shp In maDiapo.Shapes
If shp.Type = 17 Then ' msoTextBox = 17
' Changez la taille de la police à 24
shp.TextFrame.TextRange.Font.Size = 24
End If
Next shp
Next maDiapo
End Sub
Passer de la Casse Majuscule à la Casse Normale dans Toutes les Boîtes de Texte
Sub ModifierCasseMajusculeVersNormale()
Dim maDiapo As Slide
Dim shp As Shape
' Passage de la majuscule à la casse normale pour toutes les diapositives
For Each maDiapo In ActivePresentation.Slides
For Each shp In maDiapo.Shapes
If shp.Type = 17 Then ' msoTextBox = 17
' Transformez les majuscules en casse de type normale
shp.TextFrame2.TextRange.Font.Allcaps = False
End If
Next shp
Next maDiapo
End Sub
Basculer la Casse entre Majuscule et Normale dans Toutes les Boîtes de Texte
Sub BasculerCasseEntreMajusculeEtNormale()
Dim maDiapo As Slide
Dim shp As Shape
' Basculez entre les majuscules et les minuscules pour toutes les diapositives
For Each maDiapo In ActivePresentation.Slides
For Each shp In maDiapo.Shapes
If shp.Type = 17 Then ' msoTextBox = 17
' Basculer entre les majuscules et les majuscules normales
shp.TextFrame2.TextRange.Font.Allcaps = _
Not shp.TextFrame2.TextRange.Font.Allcaps
End If
Next shp
Next maDiapo
End Sub
Supprimer le Soulignement des Descendantes
En typographie, une descendante est la partie d’une lettre qui s’étend sous la ligne de base d’une police. Dans la plupart des polices, les descendantes sont réservés aux caractères minuscules tels que g, j, q, p, y, et parfois f.
Lorsque vous soulignez un texte, l’interaction avec les descendantes n’est parfois pas très esthétique. Voici un code qui permet de supprimer le soulignement de tous ces caractères g, j, p, q et y dans l’ensemble de la présentation.
Sub EnleverSoulignementDescendantes()
Dim diapo As Slide
Dim shp As Shape
Dim liste_Descendantes As String
Dim phrase As String
Dim x As Long
' Suppression du soulignement des descendantes
liste_Descendantes = "gjpqy"
For Each diapo In ActivePresentation.Slides
For Each shp In diapo.Shapes
If shp.Type = 17 Then ' msoTextBox = 17
' Supprimez le soulignement des lettres "gjpqy"
With shp.TextFrame.TextRange
phrase = .Text
For x = 1 To Len(.Text)
If InStr(liste_Descendantes, Mid$(phrase, x, 1)) > 0 Then
.Characters(x, 1).Font.Underline = False
End If
Next x
End With
End If
Next shp
Next diapo
End Sub
Supprimer les Animations de Toutes les Diapositives
Utilisez le code ci-dessous pour supprimer toutes les animations définies dans une présentation.
Sub EnleverLesAnimationToutesDiapositives()
Dim diapo As Slide
Dim i As Long
For Each diapo In ActivePresentation.Slides
For i = diapo.TimeLine.MainSequence.Count To 1 Step -1
' Suppression de chaque animation
diapo.TimeLine.MainSequence.Item(i).Delete
Next i
Next diapo
End Sub
Enregistrer la Présentation au Format PDF
Vous pouvez facilement enregistrer la présentation active au format PDF.
Sub EnregistrerPrésentationEnPDF()
Dim pptNom As String
Dim pdfNom As String
' Sauvegarder PowerPoint en tant que PDF
pptNom = ActivePresentation.FullName
' Remplacer l'extension du fichier PowerPoint dans le nom par PDF
pdfNom = Left(pptNom, InStr(pptNom, ".")) & "pdf"
ActivePresentation.ExportAsFixedFormat pdfNom, 2 ' ppFixedFormatTypePDF = 2
End Sub
Recherche et Remplacement de Texte
Vous pouvez rechercher et remplacer du texte dans toutes les boîtes de texte de toutes les diapositives. Après la première instance du texte que vous voulez trouver (définie par trouverQuoi), vous devez boucler la commande Find pour trouver les autres instances, le cas échéant.
Sub TrouverEtRemplaceTexte()
Dim diapo As Slide
Dim shp As Shape
Dim trouverQuoi As String
Dim remplacerPar As String
Dim ShpTxt As TextRange
Dim TmpTxt As TextRange
trouverQuoi = "chacal"
remplacerPar = "fox"
' Recherche et remplacement
For Each diapo In ActivePresentation.Slides
For Each shp In diapo.Shapes
If shp.Type = 17 Then ' msoTextBox = 17
Set ShpTxt = shp.TextFrame.TextRange
' Recherche de la première instance du mot "Find" (s'il existe)
Set TmpTxt = ShpTxt.Replace(trouverQuoi, _
Replacewhat:=remplacerPar, _
WholeWords:=True)
'Trouver toute instance supplémentaire du mot "Find" (s'il existe)
Do While Not TmpTxt Is Nothing
Set ShpTxt = ShpTxt.Characters(TmpTxt.Start + TmpTxt.Length, ShpTxt.Length)
Set TmpTxt = ShpTxt.Replace(trouverQuoi, _
Replacewhat:=remplacerPar, _
WholeWords:=True)
Loop
End If
Next shp
Next diapo
End Sub
Exporter une Diapositive en Tant qu’Image
Vous pouvez exporter la diapositive active (ou toute autre diapositive) sous forme d’image PNG ou JPG (JPEG) ou BMP.
Sub ExporterDiapoEnImage()
Dim typeImage As String
Dim pptNom As String
Dim nomImage As String
Dim maDiapo As Slide
' Exportation de la diapositive actuelle vers une image
typeImage = "png" ' ou jpg ou bmp
pptNom = ActivePresentation.FullName
nomImage = Left(pptNom, InStr(pptNom, ".")) & typeImage
Set maDiapo = Application.ActiveWindow.View.Slide
maDiapo.Export nomImage, typeImage
End Sub
Redimensionner l’Image pour Couvrir Toute la Diapositive
Sub RedimensionnerImagePourCouvrirTouteLaDiapo()
Dim maDiapo As Slide
Dim shp As Shape
' Redimensionner l'image à la taille de la diapositive complète
' Modifier la hauteur et la largeur de la première forme sur la diapositive actuelle
' pour s'adapter aux dimensions de la diapositive
Set maDiapo = Application.ActiveWindow.View.Slide
Set shp = maDiapo.Shapes(1)
''
'' Remplacez les deux déclarations ci-dessus par
'' l'instruction suivante si vous voulez
'' développer la forme actuellement sélectionnée
'' donnera une erreur si rien n'est sélectionné
Set shp = ActiveWindow.Selection.ShapeRange(1)
With shp
.LockAspectRatio = False
.Height = ActivePresentation.PageSetup.SlideHeight
.Width = ActivePresentation.PageSetup.SlideWidth
.Left = 0
.Top = 0
End With
End Sub
Quitter tous les Diaporamas en Cours
Si vous avez plusieurs diaporamas ouverts en même temps, vous pouvez les fermer tous en utilisant la macro ci-dessous.
Sub QuitterTousLesDiaporamasEnCours()
Do While SlideShowWindows.Count > 0
SlideShowWindows(1).View.Exit
Loop
End Sub
Automatisation de PowerPoint à Partir d’Excel
Vous pouvez également vous connecter à PowerPoint à partir d’autres applications (comme Excel et Word). Comme première étape, vous devez vous référer à une instance de PowerPoint.
Il existe deux façons de le faire – par liaison anticipée et liaison tardive .
Ouvrir PowerPoint – Liaison Anticipée
Pour utiliser la liaison anticipée vous devez explicitement définir une référence à ‘Microsoft PowerPoint 16 Object Library’ (pour MS Office 2019) dans le VBE (Visual Basic Editor) en utilisant l’option Outils -> Références.
' Liaison Anticipée
Dim pptApp As Application
Set pptApp = New PowerPoint.Application
Ouvrir PowerPoint – Liaison Tardive
En utilisant la liaison tardive la variable d’application est déclarée comme un objet et le moteur VBA se connecte à la bonne application au moment de l’exécution.
' Liaison Tardive
Dim pptApp As Object
Set pptApp = CreateObject("PowerPoint.Application")
Rendre l’Application Visible
Après avoir défini la référence à l’application PowperPoint, vous pouvez avoir besoin de la rendre visible.
pptApp.Visible = True
Manipulation de PowerPoint
Vous pouvez utiliser toutes les méthodes de manipulation des présentations, à l’intérieur de PowerPoint, décrites ci-dessus à partir d’Excel en ajoutant simplement la référence à PowerPoint que vous avez créée ci-dessus.
Par exemple
Presentations.Open("Ma Présentation.pptx")
doit être utilisé comme ceci
pptApp.Presentations.Open("Ma présentation.pptx")
Fermer l’Application
Une fois que vous avez terminé ce que vous vouliez faire avec l’application PowerPoint, vous devez la fermer et libérer la référence.
pptApp.Quit
Set pptApp = Nothing
Copie d’Excel vers PowerPoint
Ce code va copier une plage d’Excel vers PowerPoint :
Note: Il a été gardé aussi simple que possible pour montrer comment une plage d’Excel peut être copiée vers PowerPoint en utilisant VBA.
Sub CopierPlageVersPrésentation()
' Ouvrir une nouvelle instance de PowerPoint
Set pptApp = CreateObject("PowerPoint.Application")
With pptApp
' Créer une nouvelle présentation
Set ppt = .Presentations.Add
' Ajouter une diapositive vierge
Set newSlide = ppt.Slides.Add(1, 12) ' ppLayoutBlank = 12
' Copier la plage de la feuille active dans Excel
ActiveSheet.Range("A1:E10").Copy
' Coller dans Powerpoint sous forme d'image
newSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile
' Passer à PowerPoint
.activate
End With
End Sub
FAQ sur le VBA dans PowerPoint
Que Sont les Macros dans PPT ?
Une macro est un terme général qui fait référence à un ensemble d’instructions de programmation permettant d’automatiser des tâches. Les macros PowerPoint (PPT) automatisent des tâches dans PowerPoint à l’aide du langage de programmation VBA.
Comment Utiliser VBA dans PowerPoint ?
Pour utiliser VBA dans PowerPoint, ouvrez l’éditeur VBA (ALT + F11 ou Développeur > Visual Basic).
Comment Créer une Macro dans PowerPoint ?
1. Ouvrez l’éditeur VBA (ALT + F11 ou Développeur > Visual Basic)
2. Allez dans Insertion > Module pour créer un module de code
3. Tapez ‘Sub HelloWorld’ et appuyez sur Entrée
4. Entre les lignes ‘Sub HelloWorld’ et ‘End Sub’, tapez ‘MsgBox « Hello World! ». Vous avez créé une macro!
6. Maintenant, appuyez sur ‘F5’ pour exécuter la macro