VBA : Création de "shapes" variables d'une boucle

bonjour à tous,

Je débute en VBA et je ne comprends pas ce qui cloche dans mon code.

L'objectif de mon code est de réaliser en un click press bouton différents rectangles de différentes tailles. (longueur / hauteur)

Les paramètres longueur et hauteur pour chaque forme à matérialiser se trouvent en dur dans une feuille "base de donnée" et je veux que mes formes apparaissent dans ma deuxième feuille nommée "Illustration".

Je déclare mes variables :

Dim Longueur As Integer
Dim Hauteur As Integer
Dim Changelongueur As Integer
Dim Changehauteur As Integer

Je donne des valeurs à mes variables

Changelongueur = 2
Changehauteur = 2
Longueur = Sheets("Feuil1").Cells(Changelongueur, 16)
Hauteur = Sheets("Feuil1").Cells(Changehauteur, 15)

J'ouvre ma boucle :

For i = 1 To 3 

'test sur les trois première ligne de ma BDD

Je crée une forme en fonction des premières valeurs.

With Worksheets("Illustration").Shapes.AddShape(msoShapeRectangle, PositionRectangleLongueur, PositionRectangleHauteur, Longueur, Hauteur)

J'ajoute 1 à mes variables afin de récupérer les paramètres de la lignes en dessous :

Changelongueur = Changelongueur + 1
    Changehauteur = Changehauteur + 1

Je ferme ma boucle et ma procédure.

Et hop j'appuie sur mon bouton. J'ai effectivement 3 formes qui se créent mais toujours de la même taille. Savez vous où se trouve l'erreur dans mon code?

Je pense faire une ou des erreurs de débutant sur l'utilisation de la boucle. Mais je n'ai pas réussi à trouver/comprendre mon erreur sur d'autres posts et topics similiaires.

J'en profite pour mettre en lien mon fichier test.

Merci à tous

bonjour,

tu dois mettre tes instructions d'attribution de valeurs à longueur et largeur dans ta boucle,

voir ci-dessous, à tester

'déclaration des variables

Dim Longueur As Integer
Dim Hauteur As Integer
Dim Changelongueur As Integer
Dim Changehauteur As Integer
Dim EcartRectangle As Integer
Dim PositionRectangleLongueur As Integer
Dim PositionRectangleHauteur As Integer
Dim i As Integer

Sub créer_form()

'valeur des variables
Changelongueur = 2
Changehauteur = 2
PositionRectangleLongueur = 500
PositionRectangleHauteur = 80

EcartRectangle = 2

'Je test ma boucle sur uniquement les trois première ligne de ma base de donnée

For i = 1 To 3
Longueur = Sheets("Base de données").Cells(Changelongueur, 16)
Hauteur = Sheets("Base de données").Cells(Changehauteur, 15)
With Worksheets("Illustration").Shapes.AddShape(msoShapeRectangle, PositionRectangleLongueur, PositionRectangleHauteur, Longueur, Hauteur)

'    PositionRectangleLongueur = PositionRectangleLongueur + 10
    Changelongueur = Changelongueur + 1
    Changehauteur = Changehauteur + 1

End With

     Next i

End Sub

Ha super merci. Tout simplement! (fallait le savoir quand même!)

Super super j'avance dans ce vaste monde si passionnant!

Petit question supplémentaire si je n'abuse pas trop... Je change de sujet... (je ne préfère pas changer de topic)

Est ce qu'il existe un code (plutôt simple de préférence^^) qui me ferait apparaitre ma forme2 à "X" cm de ma forme1, et ainsi dessuite.

Je sais que je peux décaler la position de départ de la forme 2 de "X" cm à partir de la position de départ de la forme1 mais dans ce cas là mes formes risquent de se superposer.

je vous mets un petit excel qui montre les deux cas.

C'est bon trouvé :

En posant la question, la solution m'est arrivée. Il faut mettre dans les arguments de décalage de la forme la/les variables(s) de la longueur largeur + un écart.

Encore merci H2s04. Et bonne journée!

Rechercher des sujets similaires à "vba creation shapes variables boucle"