Shapes.Range, propriété (Excel)
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 | 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 ne souhaitez renvoyer qu’un seul membre de la collection. Par exemple, Shapes(1)
est plus simple que Shapes.Range(1)
.
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
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
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.