Sélection de plusieurs "Shapes" VBA

benjamin.prade

XLDnaute Nouveau
Bonjour la communauté,

J'ai un petit problème de sélection de formes via VBA dans Excel. Je m'explique :
J'ai un onglet intitulé "Métadonnées" dans lequel j'ai fait une mise en page précise avec plusieurs formes (rectangles, ellipses, cadres ...). Chacune de ces formes possède un nom. Par exemple dans le code ci-dessous la forme sélectionnée MEPR1 correspond à Métadonnées (ME) Petit Rectangle (PR) 1 (c'est le premier de la page).
En appuyant sur mon bouton, une Userform s'ouvre où j'ai le choix entre 4 cases à cocher, chacune accompagnée d'un nom de couleur. Le code pour ma première case est le suivant :


Private Sub CheckBox1_Click()

CheckBox1.Value = True

CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False

' déclaration de variables
Dim shp As Shape
Dim wks As Worksheet

' affectation
Set wks = ActiveWorkbook.Worksheets("Métadonnées")
Set shp = wks.Shapes("MEPR1")

shp.OLEFormat.Object.Interior.Color = RGB(255, 0, 102)

End Sub


Mon problème est que pour le moment ce code ne sélectionne qu'une forme et que j'aimerais bien pouvoir en sélectionner plusieurs en même temps (je ne veux pas toutes les sélectionner) en listant leurs noms.

J'ai déjà essayé :
Set shp = wks.Shapes("MEPR1" & "MEPR2")
Set shp = wks.Shapes("MEPR1"), wks.Shapes("MEPR2")
Mais ça ne marche pas.

Pour l'instant je réécris le code pour chaque forme de ma page mais vous comprenez que c'est assez long et qu'il y a sûrement mieux à faire.
Si vous avez donc des idées elles sont les bienvenues.

Merci d'avance !
 

Pierrot93

XLDnaute Barbatruc
Re : Sélection de plusieurs "Shapes" VBA

Bonjour,

regarde peut être ceci :
Code:
Option Explicit
Sub test()
Dim x(), i As Integer
x = Array("rectangle 1", "rectangle 2")
For i = LBound(x) To UBound(x)
    Feuil1.Shapes(x(i)).Select i = LBound(x)
Next i
End Sub

bon après midi
@+
 

benjamin.prade

XLDnaute Nouveau
Re : Sélection de plusieurs "Shapes" VBA

Merci Pierrot pour ta réponse.

Ce bout de code m'a l'air pas mal du tout cependant j'ai eu beau le triturer dans tous les sens j'ai pas réussi à le faire fonctionner =/
Cependant je le met de côté car je pense qu'il me sera très utile plus tard.

Je vais continuer à chercher.
 

Pierrot93

XLDnaute Barbatruc
Re : Sélection de plusieurs "Shapes" VBA

Re,

tu peux adapter comme ceci peut être :
Code:
Option Explicit
Sub test()
Dim x(), i As Integer
x = Array("rectangle 1", "rectangle 2")
For i = LBound(x) To UBound(x)
    Feuil1.Shapes(x(i)).OLEFormat.Object.Interior.Color = RGB(255, 0, 102)
Next i
End Sub
 

Discussions similaires

Réponses
6
Affichages
99
Réponses
2
Affichages
98

Statistiques des forums

Discussions
311 711
Messages
2 081 782
Membres
101 817
dernier inscrit
carvajal