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

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  LongSingle 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.


Correction : le solde Google Play continue dêtre refusé

Correction : le solde Google Play continue dêtre refusé

Si le solde Google Play continue d

[RESOLU] Comment corriger lerreur Hulu 94 sur Windows 10 et Xbox One ?

[RESOLU] Comment corriger lerreur Hulu 94 sur Windows 10 et Xbox One ?

Résolvez l’erreur 94 Échec du chargement de Hulu sur un PC Windows 10 ou une Xbox One grâce à nos solutions efficaces pour corriger le code d

[7 solutions testées] Correction du code derreur 0xc000017 sur Windows 10

[7 solutions testées] Correction du code derreur 0xc000017 sur Windows 10

Apprenez à corriger le code d

Comment insérer des images, des fichiers et des vidéos dans Microsoft OneNote

Comment insérer des images, des fichiers et des vidéos dans Microsoft OneNote

Si vous avez une image, une vidéo ou un fichier qui accompagne une note, apprenez à les insérer facilement dans OneNote grâce à notre guide étape par étape !

[RÉSOLU] Comment réparer Discord en changeant davatar trop rapidement ?

[RÉSOLU] Comment réparer Discord en changeant davatar trop rapidement ?

Obtenez des solutions pour corriger l

Comment citer des sources et inclure une bibliographie dans Google Docs

Comment citer des sources et inclure une bibliographie dans Google Docs

Apprenez à citer des sources et à créer une bibliographie dans Google Docs de manière efficace. Suivez ces étapes simples pour améliorer la qualité de vos travaux.

CORRIGÉ : Erreur de VIOLATION DE LICENCE SYSTÈME dans Windows 10 [10 CORRECTIONS FACILES]

CORRIGÉ : Erreur de VIOLATION DE LICENCE SYSTÈME dans Windows 10 [10 CORRECTIONS FACILES]

Suivez ici tous les correctifs possibles pour résoudre l

Correctif : « Les fonctionnalités de jeu ne sont pas disponibles pour le bureau Windows »

Correctif : « Les fonctionnalités de jeu ne sont pas disponibles pour le bureau Windows »

Résolvez le problème lorsque les fonctionnalités de jeu ne sont pas disponibles pour le bureau Windows ou l

Comment exporter des messages de chat Discord

Comment exporter des messages de chat Discord

Découvrez comment exporter vos messages de chat Discord. Apprenez les meilleures méthodes, y compris l

Correction de lerreur Tête dimpression manquante ou défaillante sur les imprimantes HP [8 astuces]

Correction de lerreur Tête dimpression manquante ou défaillante sur les imprimantes HP [8 astuces]

Obtenez des détails complets sur l'erreur de tête d'impression manquante ou défaillante. Essayez les meilleurs correctifs pour résoudre l'erreur de tête d'impression manquante ou en échec de HP Officejet.