Sélection de plusieurs "Shapes" VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 !
 
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
@+
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour