Comment créer et insérer des formes dans PowerPoint avec VBA ?

Il y a quelques jours, je voulais automatiser la tâche plutôt banale de créer des diapositives PowerPoint. Lors de l'automatisation de PowerPoint, vous travaillez généralement avec la collection Slides and Shapes. Les diapositives sont plutôt explicites et les formes sont à peu près tout le reste, y compris les zones de texte, les boutons d'action, les objets multimédias, les étiquettes, les images, les légendes, les organigrammes, etc. Bien que je présente les techniques avec PowerPoint, une partie de la syntaxe est en fait assez applicable à Microsoft Word et Excel.

Pour récapituler, avant de commencer le développement de macros VBA dans PowerPoint, vous devez activer votre onglet de développement .

Tout d'abord, commençons par créer automatiquement une présentation avec quelques diapositives comme indiqué dans ce tutoriel : création d'une présentation en VBA .

Nous pouvons maintenant commencer à travailler avec Shapes. Tout d'abord, allons-y et ouvrons l'éditeur VBA en appuyant sur Alt + F11. Si vous avez suivi le didacticiel précédent, vous devriez avoir le module 1 dans votre liste de modules (comme indiqué ci-dessous).

Travailler avec des formes avec VBA

Ajouter une zone de texte avec VBA

Nous allons commencer par ajouter une zone de texte verticale à notre première diapositive de la présentation. Ajoutez le code suivant au Module1, puis continuez et appuyez sur le bouton Enregistrer (Ctrl + s) et exécutez votre macro (appuyez sur F5 ou appuyez sur Exécuter sous/formulaire utilisateur).

Sub CreateTextBox()
Set MySlide = ActivePresentation.Slides(2)

    With MySlide.Shapes
        .AddTextbox(Orientation:=msoTextOrientationVertical, _
         Left:=90, Top:=200, Width:=80, _
         Height:=200).TextFrame.TextRange.Text _
        = ("This is my vertical text box")

End With

End Sub

Notez que vous pouvez redimensionner assez facilement les dimensions de votre zone de texte avec VBA. Dans ce cas, nous redimensionnerons la première forme dans la deuxième diapositive, n'hésitez pas à la modifier si nécessaire.

Sub ResizeText()
Set MyShape = ActivePresentation.Slides(2).Shapes(1)

'Add your required dimensions as needed below
   With MyShape
         .Width = 200
         .Height = 35

End With
End Sub

Effets de texte avec VBA

Supposons maintenant que nous voulions ajouter une zone de texte à toutes les diapositives de la présentation, cette fois un peu plus attrayante visuellement. Pour ce faire, nous utiliserons VBA pour créer des effets de texte personnalisés que nous pourrons intégrer dans une ou plusieurs diapositives de la présentation. Nous allons d'abord parcourir les diapositives de la présentation, puis ajouter l'effet de texte si nécessaire.

Sub SetEffects()

Dim i As Integer

For i = 1 To ActivePresentation.Slides.Count
    ActivePresentation.Slides(i) _
    .Shapes.AddTextEffect msoTextEffect12, "Draft for Review", _
    "Segoe UI", 32, msoTrue, msoTrue, 650, 50
Next

End Sub

Voici le résultat ;-):

Comment créer et insérer des formes dans PowerPoint avec VBA ?

Notez que vous pouvez tout aussi bien utiliser un simple filigrane pour obtenir ce résultat spécifique.

Légendes PowerPoint avec VBA

Notre prochain exemple consistera à ajouter des légendes à votre présentation. Dans cet exemple, nous ajouterons une légende à la deuxième diapositive.

Sub CreateCallout()

ActivePresentation.Slides(2).Shapes.AddCallout(Type:=msoCalloutTwo, Left:=200, Top:=50, _  Width:=300, Height:=100).TextFrame.TextRange.Text = "My Callout"

End Sub

Définition des propriétés d'une forme

De nombreuses propriétés de mise en forme des formes ne sont pas définies par des propriétés qui s'appliquent directement à l'  objet Shape  ou  ShapeRange  . Au lieu de cela, les attributs de forme associés sont regroupés sous des objets secondaires, tels que l'  objet FillFormat  , qui contient toutes les propriétés liées au remplissage de la forme, ou l'  objet LinkFormat  , qui contient toutes les propriétés uniques aux objets OLE liés. Pour définir les propriétés d'une forme, vous devez d'abord renvoyer l'objet qui représente l'ensemble des attributs de forme associés, puis définir les propriétés de cet objet renvoyé. Par exemple, vous utilisez la  propriété Fill  pour renvoyer l’  objet FillFormat  , puis vous définissez la  propriété ForeColor  de l’  objet FillFormat  pour définir la couleur de premier plan de remplissage pour la forme spécifiée, comme illustré dans l’exemple suivant.

VB

Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Appliquer une propriété ou une méthode à plusieurs formes en même temps

Dans l'interface utilisateur, vous pouvez effectuer certaines opérations avec plusieurs formes sélectionnées ; par exemple, vous pouvez sélectionner plusieurs formes et définir simultanément tous leurs remplissages individuels. Il existe d'autres opérations que vous ne pouvez effectuer qu'avec une seule forme sélectionnée ; par exemple, vous ne pouvez modifier le texte d'une forme que si une seule forme est sélectionnée.

Dans Visual Basic, il existe deux manières d’appliquer des propriétés et des méthodes à un ensemble de formes. Ces deux méthodes vous permettent d'effectuer n'importe quelle opération que vous pouvez effectuer sur une seule forme sur une plage de formes, que vous puissiez ou non effectuer la même opération dans l'interface utilisateur.

  • Si l'opération fonctionne sur plusieurs formes sélectionnées dans l'interface utilisateur, vous pouvez effectuer la même opération dans Visual Basic en construisant une  collection ShapeRange  qui contient les formes avec lesquelles vous souhaitez travailler et en appliquant les propriétés et méthodes appropriées directement à la   collection ShapeRange .

  • Si l'opération ne fonctionne pas sur plusieurs formes sélectionnées dans l'interface utilisateur, vous pouvez toujours effectuer l'opération dans Visual Basic en parcourant la  collection Shapes  ou via une  collection ShapeRange  qui contient les formes avec lesquelles vous souhaitez travailler et en appliquant les propriétés appropriées. et des méthodes pour les  objets Shape individuels  de la collection.

De nombreuses propriétés et méthodes qui s’appliquent à l’  objet Shape  et  à la collection ShapeRange  échouent si elles sont appliquées à certains types de formes. Par exemple, la  propriété TextFrame  échoue si elle est appliquée à une forme qui ne peut pas contenir de texte. Si vous n’êtes pas sûr qu’une certaine propriété ou méthode puisse lui être appliquée à chaque forme d’une  collection ShapeRange  , n’appliquez pas la propriété ou la méthode à la  collection ShapeRange  . Si vous souhaitez appliquer l'une de ces propriétés ou méthodes à une collection de formes, vous devez parcourir la collection et tester chaque forme individuelle pour vous assurer qu'il s'agit d'un type de forme approprié avant de lui appliquer la propriété ou la méthode.

Application d'une propriété ou d'une méthode à une collection ShapeRange

Si vous pouvez effectuer une opération sur plusieurs formes sélectionnées dans l'interface utilisateur en même temps, vous pouvez effectuer l'équivalent programmatique en construisant une  collection ShapeRange  , puis en lui appliquant les propriétés ou méthodes appropriées. L'exemple suivant construit une plage de formes qui contient les formes automatiques nommées « Grande étoile » et « Petite étoile » et leur applique un remplissage dégradé et leur applique un remplissage dégradé.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
Set myRange = myDocument.Shapes _ 
    .Range(Array("Big Star", "Little Star")) 
myRange.Fill.PresetGradient msoGradientHorizontal, _ 
    1, msoGradientBrass

Voici des directives générales sur le comportement des propriétés et des méthodes lorsqu'elles sont appliquées à une  collection ShapeRange  .

  • Appliquer une méthode à la collection équivaut à appliquer la méthode à chaque  objet Shape individuel  de cette collection.

  • Définir la valeur d'une propriété de la collection équivaut à définir la valeur de la propriété de chaque forme individuelle dans cette plage.

  • Une propriété de la collection qui renvoie une constante renvoie la valeur de la propriété pour une forme individuelle de la collection si toutes les formes de la collection ont la même valeur pour cette propriété. Si toutes les formes de la collection n’ont pas la même valeur pour la propriété, la constante « mixte » est renvoyée.

  • Une propriété de la collection qui renvoie un type de données simple (tel que  Long ,  Single ou  String ) renvoie la valeur de la propriété pour une forme individuelle si toutes les formes de la collection ont la même valeur pour cette propriété.

  • La valeur de certaines propriétés peut être renvoyée ou définie uniquement s'il existe exactement une forme dans la collection. S’il existe plusieurs formes dans la collection, une erreur d’exécution se produit. C'est généralement le cas pour renvoyer ou définir des propriétés lorsque l'action équivalente dans l'interface utilisateur n'est possible qu'avec une seule forme (actions telles que l'édition de texte dans une forme ou l'édition des points d'une forme libre).

Les instructions précédentes s'appliquent également lorsque vous définissez les propriétés des formes regroupées sous des objets secondaires de la  collection ShapeRange  , tels que l'  objet FillFormat  . Si l'objet secondaire représente des opérations pouvant être effectuées sur plusieurs objets sélectionnés dans l'interface utilisateur, vous pourrez renvoyer l'objet d'une  collection ShapeRange  et définir ses propriétés. Par exemple, vous pouvez utiliser la  propriété Fill  pour renvoyer l'  objet FillFormat  qui représente les remplissages de toutes les formes de la  collection ShapeRange  . La définition des propriétés de cet  objet FillFormat  définira les mêmes propriétés pour toutes les formes individuelles de la  collection ShapeRange  .

Parcourir une collection Shapes ou ShapeRange

Même si vous ne pouvez pas effectuer une opération sur plusieurs formes dans l'interface utilisateur en même temps en les sélectionnant puis en utilisant une commande, vous pouvez effectuer l'action équivalente par programme en parcourant la  collection Shapes  ou via une  collection ShapeRange  qui contient les formes que vous souhaitez. vous souhaitez travailler et appliquer les propriétés et méthodes appropriées aux  objets Shape individuels  de la collection. L’exemple suivant parcourt toutes les formes et ajoute du texte à chaque forme qui est une forme automatique. et ajoute du texte à chaque forme qui est une forme automatique.myDocument

VB

Set myDocument = ActivePresentation.Slides(1) 
For Each sh In myDocument.Shapes 
    If sh.Type = msoAutoShape Then 
        sh.TextFrame.TextRange.InsertAfter " (version 1)" 
    End If 
Next

L'exemple suivant construit  la collection ShapeRange  qui contient toutes les formes actuellement sélectionnées dans la fenêtre active et définit le texte de chaque forme de la collection pouvant contenir du texte.

VB

For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

Aligner, distribuer et regrouper des formes dans une plage de formes

Utilisez les  méthodes Aligner  et  Distribuer  pour positionner un ensemble de formes les unes par rapport aux autres ou par rapport au document qui les contient. Utilisez la  méthode Group  ou la  méthode Regroup  pour former une seule forme groupée à partir d’un ensemble de formes.

Laisser un commentaire

Modèle de stratégie marketing imprimable sur une page pour les entreprises locales

Modèle de stratégie marketing imprimable sur une page pour les entreprises locales

Utilisez ce modèle de stratégie marketing imprimable d'une page pour choisir une audience locale, une offre, une combinaison de canaux, un budget, des actions et des objectifs mesurables.

Modèle gratuit de planning des horaires de travail pour Excel avec calculateur d'heures automatique

Modèle gratuit de planning des horaires de travail pour Excel avec calculateur d'heures automatique

Créez gratuitement un planning de travail pour vos employés dans Excel, avec les heures de début et de fin, les déductions pour les pauses, la gestion du travail de nuit, les totaux hebdomadaires et un calculateur d'heures simple.

Meilleures applications de facturation gratuites pour les petites entreprises de services aux États-Unis (2026)

Meilleures applications de facturation gratuites pour les petites entreprises de services aux États-Unis (2026)

Comparez les meilleures applications de facturation gratuites pour les entreprises de services américaines en 2026, notamment Zoho Invoice, Square, Wave, PayPal et Invoice Ninja.

Modèle Excel simple de suivi de la paie bihebdomadaire pour les petites équipes : une configuration facile à mettre en œuvre

Modèle Excel simple de suivi de la paie bihebdomadaire pour les petites équipes : une configuration facile à mettre en œuvre

Créez un outil simple de suivi de la paie bihebdomadaire sous Excel pour une petite équipe, avec des feuilles claires, des formules, des vérifications et des limites pratiques pour un rapprochement de paie sécurisé.

Comment exporter les contacts Salesforce vers un format Excel propre

Comment exporter les contacts Salesforce vers un format Excel propre

Apprenez à exporter vos contacts Salesforce vers un fichier Excel propre, à préserver les identifiants et les champs de texte, à supprimer les doublons en toute sécurité et à éviter les erreurs courantes liées aux fichiers CSV.

Modèle de devis de travaux de construction imprimable au format Excel pour les petits entrepreneurs

Modèle de devis de travaux de construction imprimable au format Excel pour les petits entrepreneurs

Créez un devis de travaux de construction imprimable dans Excel avec des catégories de coûts pratiques, des formules, des champs de modification, des paramètres d'impression et une liste de contrôle prête à l'emploi pour les entrepreneurs.

Liste de contrôle et modèle de budget pour la planification d'événements imprimables pour Word

Liste de contrôle et modèle de budget pour la planification d'événements imprimables pour Word

Utilisez cette liste de contrôle et ce modèle de budget pour la planification d'événements imprimables dans Word pour suivre les responsables, les échéances, les coûts, les fournisseurs et la préparation du jour J avec des contrôles qualité clairs.

Comment corriger le calcul automatique des formules Excel en 3 étapes simples

Comment corriger le calcul automatique des formules Excel en 3 étapes simples

Corrigez les formules Excel qui ne se calculent plus automatiquement en trois étapes : restaurez le mode de calcul, forcez un recalcul et réparez les formules formatées en texte.

Modèle de calendrier de nettoyage hebdomadaire imprimable pour les hôtes Airbnb (Word et PDF)

Modèle de calendrier de nettoyage hebdomadaire imprimable pour les hôtes Airbnb (Word et PDF)

Utilisez ce calendrier de nettoyage hebdomadaire imprimable pour la gestion Airbnb afin d'organiser les rotations, le nettoyage récurrent, le réapprovisionnement, les inspections et les transferts de Word à PDF.

Modèle de feuille de journal de maintenance des équipements Excel pour les responsables d'atelier : Guide de configuration en 4 étapes

Modèle de feuille de journal de maintenance des équipements Excel pour les responsables d'atelier : Guide de configuration en 4 étapes

Créez un journal de maintenance des équipements pratique sur Excel pour les responsables d'atelier, incluant les identifiants d'actifs, l'historique des services, les dates d'échéance, les contrôles de statut, le suivi des temps d'arrêt et une liste de contrôle d'audit finale.