@Johnny, créer des nouvelles formes

@Johnny,
concernant vos questions sur les formes, ceci est peut-être une application plus simple pour créer des nouvelles formes

Sub MonDuplicate()
     '***********************************************************************************
     'le but est de créer un shape unique de la forme voulu (ici msoShapeFlowchartOr avec des dimensions minimales
     'Puis on sait faire autant de copies que vous voulez.
     'Avec ce copie, c'est vraiment facile de le positionner sur les coordinates X&Y
     'Et puis on agrandit à partir du centre, largeur et hauteur indépendant ou en proportion.
     '***********************************************************************************

     With Sheets("Blad1")
          For Each shp In .Shapes
               If StrComp(shp.Name, "Duplicate", 1) = 0 Then shp.Delete     'pour avoir un shape "unique" Duplicate
          Next

          'msoShapeFlowchartOr >>> choisir le bon format
          With .Shapes.AddShape(msoShapeFlowchartOr, 1, 1, 0.1, 0.1)     'largeur et hauteur sont vraiment minimal !!!, position XY n'a pas d'importance
               .Name = "Duplicate"
               .LockAspectRatio = msoTrue    'largeur et hauteur : msoTrue= les 2 changent en proportion, msoFalse = les 2 sont indépendant
               '.... 'éventuellement d'autres propriétés communs (couleur intérieur, bordures, ...)
          End With
     End Sub
End Sub

Sub Nouveau_Shape()
     '***************************************************************************************
     'on copie&colle(=duplicate) l'origine, on le déplace et change ses dimensions
     'comme les dimensions sont du centre ("msoScaleFromMiddle"), le centre du shape reste le même
     'c'est à dire qu'on ne doit plus faire le décalage avec la moitié du largeur et hauteur pou savoir le point haut&gauche
     'si ".LockAspectRatio = msoTrue", on ne change qu'une dimension
     '***************************************************************************************

     With Sheets("blad1")
          With .Shapes("Duplicate").Duplicate     'copie&colle de l'origine
               .Name = "Nom_du_Nouveau_shape" & Format(i, "000")     'avec i un numéro
               .Left = x
               .Top = y
               .ScaleWidth MonLargeur, msoFalse, msoScaleFromMiddle     'agrandir avec le centre figé
               .ScaleHeight MonHauteur, msoFalse, msoScaleFromMiddle     'si "lockratio=..." seulement un dès 2
          End With
     End With
End Sub

Hello Cow , j’espere que vous allez bien.

Top merci pour le temps prie , j’essayerai au plus vite :slight_smile:

Toute belle journée
Johnny

1 « J'aime »