Objet Shape (Publisher)

Représente un objet dans la couche dessin, comme une forme automatique, une forme libre, un objet OLE, un contrôle ActiveX ou une image. L'objet Shape est un membre de la collection Shapes, qui inclut toutes les formes sur une page ou d'une sélection.

Remarque

Il existe trois objets qui représentent des formes :

  • Collection Shapes , qui représente toutes les formes d’un document.
  • La collection ShapeRange , qui représente un sous-ensemble spécifié des formes d’un document (par exemple, un objet ShapeRange peut représenter des formes un et quatre sur le document, ou il peut représenter toutes les formes sélectionnées sur le document).
  • Objet Shape , qui représente une forme unique sur un document.

Pour utiliser plusieurs formes simultanément ou des formes faisant partie de la sélection, utilisez une collection ShapeRange.

Remarques

Retourner une forme existante sur un document

Utilisez Shapes (index), où index est le nom ou le numéro d’index, pour renvoyer un seul objet Shape .

Un nom par défaut est affecté à chaque forme lors de sa création. Par exemple, lorsque vous ajoutez trois formes différentes à un document, vous pouvez les nommer « Rectangle 2 », « TextBox 3 » et « Oval 4 ». Pour donner un nom plus explicite à une forme, définissez la propriété Name de la forme.

Retourner une ou plusieurs formes au sein d’une sélection

Utilisez Selection.ShapeRange (index), où index est le nom ou le numéro d’index, pour renvoyer un objet Shape qui représente une forme dans une sélection.

Retourner une forme nouvellement créée

Pour ajouter un objet Shape à la collection de formes du document spécifié et renvoyer un objet Shape qui représente la forme nouvellement créée, utilisez l’une des méthodes suivantes de la collection Shapes :

Utiliser un groupe de formes

Utilisez GroupItems (index), où index est le nom de la forme ou le numéro d’index dans le groupe, pour renvoyer un objet Shape qui représente une forme unique dans une forme groupée. Utilisez la méthode ShapeRange.Group ou Regroup pour regrouper une plage de formes et renvoyer un seul objet Shape qui représente le groupe nouvellement formé. Une fois qu’un groupe a été formé, vous pouvez travailler avec le groupe de la même façon que vous utilisez n’importe quelle autre forme.

Mettre en forme une forme

  • Utilisez la propriété AutoShapeType pour spécifier le type de forme automatique : ovale, rectangle ou bulle, par exemple.

  • Utilisez la propriété Callout , qui renvoie l’objet CalloutFormat , pour mettre en forme les légendes de ligne.

  • Utilisez la propriété Fill pour renvoyer l'objet FillFormat, qui contient toutes les propriétés et méthodes de mise en forme du remplissage d'une forme fermée.

  • Utilisez la propriété Line pour renvoyer un objet LineFormat qui contient les propriétés et méthodes de mise en forme des lignes et des flèches.

  • Utilisez les méthodes PickUp et Apply pour transférer la mise en forme d’une forme à une autre.

  • Utilisez la méthode SetShapesDefaultProperties pour définir la mise en forme de la forme par défaut du document. Les nouvelles formes reçoivent un grand nombre des attributs de la forme par défaut.

  • Utilisez la propriété Shadow , qui renvoie l’objet ShadowFormat , pour mettre en forme une ombre.

  • Utilisez la propriété TextEffect , qui renvoie l’objet TextEffectFormat , pour mettre en forme WordArt.

  • Utilisez les propriétés TextFrame et Cell.TextRange pour renvoyer les objets TextFrame et TextRange , respectivement, qui contiennent toutes les propriétés et méthodes permettant d’insérer et de mettre en forme du texte dans des formes et des publications et de lier les cadres de texte.

  • Utilisez la propriété TextWrap , qui renvoie l’objet WrapFormat , pour définir la façon dont le texte s’enroule autour des formes.

  • Utilisez la propriété ThreeD , qui renvoie l’objet ThreeDFormat , pour créer des formes 3D.

  • Utilisez la propriété Type pour spécifier le type de forme : forme libre, forme automatique, objet OLE, légende ou image liée, par exemple.

  • Utilisez les propriétés Width et Height pour spécifier la taille de la forme.

Exemple

L'exemple suivant retourne horizontalement la forme 1 du document actif.

Sub FlipShape() 
    ActiveDocument.Pages(1).Shapes(1).Flip FlipCmd:=msoFlipHorizontal 
End Sub

L’exemple suivant montre comment retourner horizontalement la forme nommée Rectangle 1 sur le document actif.

Sub FlipShapeByName() 
    ActiveDocument.Pages(1).Shapes("Rectangle 1") _ 
        .Flip FlipCmd:=msoFlipHorizontal 
End Sub

L'exemple suivant montre comment définir le remplissage de la première forme de la sélection, sous réserve que cette sélection contienne au moins une forme.

Sub FillSelectedShape() 
    Selection.ShapeRange(1).Fill.ForeColor.RGB = RGB(255, 0, 0) 
End Sub

L'exemple suivant montre comment définir le remplissage de toutes les formes de la sélection, sous réserve que cette sélection contienne au moins une forme.

Sub FillAllSelectedShapes() 
    Dim shpShape As Shape 
    For Each
shpShape In Selection.ShapeRange 
       
shpShape.Fill.ForeColor.RGB = RGB(Red:=255, Green:=0, Blue:=0) 
    Next shpShape 
End Sub

L'exemple suivant ajoute un rectangle au document actif.

Sub AddNewShape() 
    ActiveDocument.Pages(1).Shapes.AddShape Type:=msoShapeRectangle, _ 
        Left:=400, Top:=72, Width:=100, Height:=200 
End Sub

Cet exemple montre comment ajouter trois formes à la composition active, les regrouper et définir la couleur de remplissage de chacune des formes du groupe.

Sub WorkWithGroupShapes() 
 
    With ActiveDocument.Pages(1).Shapes 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=100, _ 
            Top:=72, Width:=100, Height:=100 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=250, _ 
            Top:=72, Width:=100, Height:=100 
        .AddShape Type:=msoShapeIsoscelesTriangle, Left:=400, _ 
            Top:=72, Width:=100, Height:=100 
        .SelectAll 
 
        With Selection.ShapeRange 
            .Group 
            .GroupItems(1).Fill.ForeColor _ 
                .RGB = RGB(Red:=255, Green:=0, Blue:=0) 
            .GroupItems(2).Fill.ForeColor _ 
                .RGB = RGB(Red:=0, Green:=255, Blue:=0) 
            .GroupItems(3).Fill.ForeColor _ 
                .RGB = RGB(Red:=0, Green:=0, Blue:=255) 
        End With 
    End With 
End Sub

L’exemple suivant ajoute une zone de texte à la première page de la composition active, puis y ajoute du texte et met en forme le texte.

Sub CreateNewTextBox() 
    With ActiveDocument.Pages(1).Shapes.AddTextbox( _ 
        Orientation:=pbTextOrientationHorizontal, Left:=100, _ 
        Top:=100, Width:=200, Height:=100).TextFrame.TextRange 
        .Text = "This is a textbox." 
        With .Font 
            .Name = "Stencil" 
            .Bold = msoTrue 
            .Size = 30 
        End With 
    End With 
End Sub

Méthodes

Propriétés

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.