1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| Sub test()
'Ici on efface toutes les formes qui sont déjà présentes dans la feuille
'afin d'éviter de créer des formes par dessus les existantes
For Each sh In Activesheet.Shapes
sh.Delete
Next sh
'Déclaration des variables
Dim Etape As Shape 'L'étape sera une forme
Dim EtapePrécédente As Shape 'L'étape précédente aussi
Dim Fleche As Shape 'La fleche le sera également
Dim Gauche As Single, Haut As Single 'Coordonnées du coin haut/gauche de chaque étape, ce seront des nombres
Dim Largeur As Single, Hauteur As Single 'Dimensions des étapes, nombres également
Dim PasGauche As Single, PasHaut As Single '"pas", décalage d'une étape à une autre, nombres également
'Affectation des variables, change ici pour mettre ce que tu veux
Gauche = 100
Haut = 30
Largeur = 100
Hauteur = 50
PasGauche = 100
PasHaut = 75
For ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row 'pour la ligne 2 à la dernière trouvée en colonne A
Set Etape = Activesheet.Shapes.AddShape(msoShapeRectangle, Gauche, Haut, Largeur, Hauteur) 'tu ajoutes la forme
With Etape
.TextFrame2.TextRange.Text = Cells(ligne, "A").Text 'on écrit l'intitulé de l'étape depuis le tableau excel
.TextFrame2.HorizontalAnchor = msoAnchorCenter 'on centre horizontalement
.TextFrame2.VerticalAnchor = msoAnchorMiddle 'On centre verticalement
.Fill.ForeColor.RGB = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 'couleur aléatoire
End With
If Not EtapePrécédente Is Nothing Then 'si l'étape précédente existe (voir quelques lignes plus bas)
Set Fleche = Activesheet.Shapes.AddConnector(msoConnectorCurve, 100, 100, 200, 200)
Fleche.ConnectorFormat.BeginConnect EtapePrécédente, 3
Fleche.ConnectorFormat.EndConnect Etape, 2
'NOTA, les BeginConnect et EndConnect pour les rectangles sont 1 = en haut, 2 à gauche, 3 en bas, 4 en haut
Fleche.Line.EndArrowheadStyle = msoArrowheadOpen 'tu spécifies que la fin du connecteur est une fleche
End If
Set EtapePrécédente = Etape 'avant de passer à l'étape suivante, tu écris que celle en cours sera appelée "précédente"
Gauche = Gauche + PasGauche 'tu incrémentes avec le pas choisi
Haut = Haut + PasHaut 'tu incrémentes avec le pas choisi
Next ligne 'tu passes à la ligne suivante sur le tableau Excel
End Sub |
Partager