Partager via


Shapes.Range, méthode (Publisher)

Renvoie un objet ShapeRange qui représente un sous-ensemble des formes de la collection Shapes.

Syntaxe

expression. Plage (index)

expression Variable qui représente un objet Shapes.

Paramètres

Nom Requis/Facultatif Type de données Description
Index Obligatoire Variant Les formes individuelles qui doivent être incluses dans la plage. Peut être un entier qui spécifie le numéro d'index de la forme, une chaîne qui spécifie le nom de la forme ou un tableau contenant des entiers ou des chaînes. Si Index est omis, la méthode Range retourne tous les objets de la collection spécifiée.

Valeur renvoyée

ShapeRange

Exemple

Pour spécifier un tableau d’entiers ou de chaînes pour Index, vous pouvez utiliser la fonction Array. Par exemple, l'instruction suivante renvoie deux formes spécifiées par leur nom.

Dim arrShapes As Variant 
Dim shpRange As ShapeRange 
 
Set arrShapes = Array("Oval 4", "Rectangle 5") 
Set shpRange = ActiveDocument.Pages(1) _ 
 .Shapes.Range(arrShapes)

Cet exemple définit le motif de remplissage pour les formes un et trois de la composition active.

ActiveDocument.Pages(1).Shapes.Range(Array(1, 3)).Fill _ 
 .Patterned msoPatternHorizontalBrick

Cet exemple définit le motif de remplissage pour les formes « Oval 4 » et « Rectangle 5 » de la première page.

Dim arrShapes As Variant 
Dim shpRange As ShapeRange 
 
arrShapes = Array("Oval 4", "Rectangle 5") 
 
Set shpRange = ActiveDocument.Pages(1).Shapes.Range(arrShapes) 
 
shpRange.Fill.Patterned msoPatternHorizontalBrick

Cet exemple définit le motif de remplissage pour toutes les formes de la première page.

ActiveDocument.Pages(1).Shapes _ 
 .Range.Fill.Patterned msoPatternHorizontalBrick

Cet exemple définit le motif de remplissage pour la forme un de la première page.

Dim shpRange As ShapeRange 
 
Set shpRange = ActiveDocument.Pages(1).Shapes.Range(1) 
 
shpRange.Fill.Patterned msoPatternHorizontalBrick

Cet exemple crée un tableau qui contient toutes les formes automatiques de la première page, utilise ce tableau pour définir une plage de formes, puis redispose toutes les formes de cette plage horizontalement.

Dim numShapes As Long 
Dim numAutoShapes As Long 
Dim autoShpArray As Variant 
Dim intLoop As Integer 
Dim shpRange As ShapeRange 
 
With ActiveDocument.Pages(1).Shapes 
 
 numShapes = .Count 
 If numShapes > 1 Then 
 
 numAutoShapes = 0 
 ReDim autoShpArray(1 To numShapes) 
 
 For intLoop = 1 To numShapes 
 If .Item(intLoop).Type = msoAutoShape Then 
 numAutoShapes = numAutoShapes + 1 
 autoShpArray(numAutoShapes) = .Item(intLoop).Name 
 End If 
 Next 
 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set shpRange = .Range(autoShpArray) 
 shpRange.Distribute _ 
 DistributeCmd:=msoDistributeHorizontally, _ 
 RelativeTo:=False 
 End If 
 
 End If 
 
End With

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.