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.


Gingembre 2.7.53.0

Gingembre 2.7.53.0

Ginger est un vérificateur d'orthographe et de grammaire gratuit.

Blocs

Blocs

Blocks est un jeu intellectuel permettant aux élèves de 3e année du primaire de mettre en pratique leurs compétences de détection et de vision. Il est inclus par les enseignants dans le programme de soutien pédagogique en informatique.

Prezi 6.26

Prezi 6.26

Prezi est une application gratuite qui vous permet de créer des présentations numériques, en ligne et hors ligne.

Mathway

Mathway

Mathway est une application très utile qui peut t'aider à résoudre tous ces problèmes mathématiques qui nécessitent un outil plus complexe que la calculatrice intégrée de ton appareil.

Présentateur Adobe

Présentateur Adobe

Adobe Presenter est un logiciel d'apprentissage en ligne publié par Adobe Systems, disponible sur la plate-forme Microsoft Windows en tant que plug-in Microsoft PowerPoint.

Toucans 2.3.0

Toucans 2.3.0

Toucan est une plateforme technologique éducative. Il vous permet d'apprendre une nouvelle langue tout en parcourant des sites Web courants et quotidiens.

ENetViet 24.2

ENetViet 24.2

eNetViet est une application qui permet de connecter les parents avec l'école où étudient leurs enfants afin qu'ils puissent comprendre clairement la situation d'apprentissage actuelle de leur enfant.

Duolingo

Duolingo

Duolingo - Apprendre des langues gratuitement, ou simplement Duolingo, est un programme éducatif qui vous permet d'apprendre et de pratiquer de nombreuses langues différentes.

Typagerapide

Typagerapide

RapidTyping est un outil de formation au clavier pratique et facile à utiliser qui vous aidera à améliorer votre vitesse de frappe et à réduire les fautes d'orthographe. Avec des cours organisés pour de nombreux niveaux différents, RapidTyping vous apprendra à taper ou à améliorer les compétences existantes.

MathType 7.4.10.53

MathType 7.4.10.53

MathType est un logiciel d'équation interactif du développeur Design Science (Dessci), qui vous permet de créer et d'annoter des notations mathématiques pour le traitement de texte, les présentations, le eLearning, etc. Cet éditeur est également utilisé pour créer des documents TeX, LaTeX et MathML.