Propriété GroupShapes.Range (Excel)

Renvoie un objet ShapeRange qui représente un sous-ensemble des formes d’une collection Shapes .

Syntaxe

expression. Plage (index)

Expression Variable qui représente un objet GroupShapes .

Parameters

Nom Requis/Facultatif Type de données Description
Index Obligatoire Variant Formes individuelles à inclure dans la plage. Il peut s’agir d’un entier qui spécifie le numéro d’index de la forme, d’une chaîne qui indique le nom de la forme ou d’un tableau qui contient des entiers ou des chaînes.

Remarques

Bien que vous puissiez utiliser la propriété Range pour renvoyer un nombre quelconque de formes, il est plus simple d’utiliser la méthode Item si vous souhaitez renvoyer un seul membre de la collection. Par exemple, Shapes(1) est plus simple que Shapes.Range(1).

Exemple

Cet exemple permet de définir le motif de remplissage des formes 1 et 3 dans myDocument.

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)) _ 
 .Fill.Patterned msoPatternHorizontalBrick

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 arShapes() As Variant 
Dim objRange As Object 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = ActiveSheet.Shapes.Range(arShapes) 
 

Dans Microsoft Excel, vous ne pouvez pas utiliser cette propriété pour renvoyer un objet ShapeRange contenant tous les objets Shape d’une feuille de calcul. Utilisez plutôt le code suivant.

Worksheets(1).Shapes.SelectAll ' select all shapes 
set sr = Selection.ShapeRange ' create ShapeRange 
 

Cet exemple montre comment définir le motif de remplissage des formes nommées Oval 4 et Rectangle 5 sur myDocument.

Dim arShapes() As Variant 
Dim objRange As Object 
Set myDocument = Worksheets(1) 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = myDocument.Shapes.Range(arShapes) 
objRange.Fill.Patterned msoPatternHorizontalBrick

Cet exemple permet de définir le motif de remplissage de la forme 1 dans myDocument.

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(1) 
myRange.Fill.Patterned msoPatternHorizontalBrick

Cet exemple permet de créer un tableau contenant toutes les formes automatiques dans myDocument, utilise ce tableau pour définir une plage de formes, puis distribue tous les formes de cette plage à l’horizontale.

Set myDocument = Worksheets(1) 
With myDocument.Shapes 
 numShapes = .Count 
 If numShapes > 1 Then 
 numAutoShapes = 1 
 ReDim autoShpArray(1 To numShapes) 
 For i = 1 To numShapes 
 If .Item(i).Type = msoAutoShape Then 
 autoShpArray(numAutoShapes) = .Item(i).Name 
 numAutoShapes = numAutoShapes + 1 
 End If 
 Next 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set asRange = .Range(autoShpArray) 
 asRange.Distribute msoDistributeHorizontally, 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.