Bonjour, je suis embêté en vous récrivant ici car je n'arrive pas à faire tourner le code avec l'ajout successif de mes formes. Cela ne me sélectionne que le cercle et à chaque fois un rectangle de moins que demandé. Il reste deux formes libres à sélection et une croix et malheureusement je n'arrive pas à les sélectionner. Voici mon code actuel. Merci pour votre aide.
Sub creashapes()
Dim shTmp As Shape
Dim nNbShape As Long
Dim i As Long
Dim acShape() As String
Application.CutCopyMode = xlCopy
' Pour désélectionner les objets précédemment sélectionnés en cas d'insertion successives ed formes
ActiveSheet.Range("A1").Select
nNbShape = CLng(CréationPièce.TextBox2.Text)
ReDim acShape(0 To nNbShape - 1 + X)
For i = 0 To nNbShape - 1
gauche = 310 + i * 10
haut = 30 + 5 * i
largeur = 30
hauteur = 200
Set shTmp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, gauche, haut, largeur, hauteur)
shTmp.Fill.Transparency = 0.5
acShape(i) = shTmp.Name
Next i
'Création Croix
Set shTmp = ActiveSheet.Shapes.AddShape(msoShapeCross, 310 + i * 10, 30 + 5 * i, 20, 20)
shTmp.Fill.Transparency = 0.5
acShape(NbShape) = shTmp.Name
nNbShape = nNbShape + 1
'Création Surface
Dim FB As FreeformBuilder
' Propriétés de la forme libre
Set FB = ActiveSheet.Shapes.BuildFreeform _
(msoEditingAuto, 390, 60)
FB.AddNodes msoSegment, msoEditingAuto, 390, 120
FB.AddNodes msoSegment, msoEditingAuto, 390, 180
FB.AddNodes msoSegment, msoEditingAuto, 360, 180
FB.AddNodes msoSegment, msoEditingAuto, 330, 180
FB.AddNodes msoSegment, msoEditingAuto, 330, 120
FB.AddNodes msoSegment, msoEditingAuto, 330, 60
FB.AddNodes msoSegment, msoEditingAuto, 360, 60
FB.AddNodes msoSegment, msoEditingAuto, 390, 60
' Dessinez la forme libre comme une forme
Set shTmp = FB.ConvertToShape
shTmp.Fill.Transparency = 0.5
acShape(NbShape) = shTmp.Name
nNbShape = nNbShape + 1
'Création Surface
Dim LB As FreeformBuilder
' Propriétés de la forme libre
Set LB = ActiveSheet.Shapes.BuildFreeform _
(msoEditingAuto, 390, 60)
LB.AddNodes msoSegment, msoEditingAuto, 390, 120
LB.AddNodes msoSegment, msoEditingAuto, 390, 180
LB.AddNodes msoSegment, msoEditingAuto, 360, 180
LB.AddNodes msoSegment, msoEditingAuto, 330, 180
LB.AddNodes msoSegment, msoEditingAuto, 330, 120
LB.AddNodes msoSegment, msoEditingAuto, 330, 60
LB.AddNodes msoSegment, msoEditingAuto, 360, 60
LB.AddNodes msoSegment, msoEditingAuto, 390, 60
' Dessinez la forme libre comme une forme
Set shTmp = FB.ConvertToShape
shTmp.Fill.Visible = msoFalse
shTmp.Line.Weight = 7
acShape(NbShape) = shTmp.Name
nNbShape = nNbShape + 1
'Création Cercle
Set shTmp = ActiveSheet.Shapes.AddShape(msoShapeOval, 310 + i * 10, 30 + 5 * i, 80, 80)
shTmp.Fill.Transparency = 0.5
shTmp.ZOrder msoBringToFront
acShape(NbShape) = shTmp.Name
nNbShape = nNbShape + 1
ActiveSheet.Shapes.Range(acShape).Select
End Sub