Création de contrôle dynamiquement

Résolu
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008 - 20 déc. 2005 à 18:44
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008 - 21 déc. 2005 à 21:43
Bonjour à tous.





En fait ce que j’aimerai faire c’est créer dynamiquement des Label sur ma Form, le tout dans une macro Excel (donc c’est du VBA si j’ai bien compris)


Donc pour cela j’ai cru comprendre qu’il fallait utiliser Load, méthode très bien expliquée dans une célèbre source d’Amonbofis « AJOUTER DYNAMIQUEMENT DES CONTRÔLES », source que je n’arrive malheureusement pas à trouver.


Donc j’ai essayer de trouver des petites infos par-ci par là sur le forum, pour enfin essayer (après avoir mis un contrôle Label1 sur ma form):


Load Label1(1)


Label1(1).Visible = True


Mais lorsque je lance la macro j’ai une erreur :


« Erreur de compilation : Nombre d’arguments incorrect ou affectation de propriétés incorrecte »


De plus j’ai vu qu’il fallait mettre la propriété Index à 0 pour le Label1, mais moi j’ai pas cette propriété, j’ai juste tabIndex(où j’ai mis la valeur 0)


Donc si quelqu’un pouvais m’aider je lui en serrai grandement reconnaissant
Merci d'avance

6 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
21 déc. 2005 à 20:34
Pour une userform, c'est vrai c'est différent, une piste que je viens de tester :

Sub macro1()
Dim c As Control
Set c = UserForm1.Controls.Add("Forms.Label.1", "toto", True)
c.Top = 50
c.Left = 50
c.BackColor = vbWhite
c.Caption = "coucou"
UserForm1.Show
End Sub

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
20 déc. 2005 à 18:55
Salut
L'indexation de controle n'est pas supporté sur VBA.
Je crois qu'il y a un autre moyen, mais je ne m'en souviens plus.
As-tu cherché sur le forum ? (car c'est une question fréquente)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
20 déc. 2005 à 19:34
Salut,

Si mes souvenirs sont exacts, vois du côté de la collection Shapes :
TaFeuille.Shapes.AddOLEObject "Forms.Label.1", etc...

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
20 déc. 2005 à 23:51
jack : en effet j'ai déjà vu cette question sur le forum, mais la réponse est toujours la même : "regarde la source d’Amonbofis" ou "utilise Load" avec des exemple qui marchent pas chez moi, surement parce que j'utilise VBA

CanisLupus : ta ligne en elle même ne marche pas chez moi, j'ai donc regardé du coté de "AddOLEObject" et j'ai trouvé un exemple avec un bouton à la place d'un label :

Dim objWorksheet As Worksheet
Set objWorksheet = ThisWorkbook.Worksheets(1)
objWorksheet.Shapes.AddOLEObject "Forms.CommandButton.1", , , , , , , 141, 28.5, 153, 27.75

Ce code marche chez moi, sauf que ça affiche le bouton sur la feuille de calcul et pas sur ma Form .
D'ailleur j'avais eu ce problème en voulant tracer un rectangle sur ma form, j'avais essayé

ActiveSheet.Shapes.addShape(msoShapeRectangle, 10, 10, 100, 20).Name = "le_nom"

mais pareil, le rectangle s'affiche sur la feuille de calcul et pas sur la Form.

Mes deux problèmes ont peut-être la même solution, sachant que mon but est pour les deux cas de dessiner et écrire dynamiquement sur ma Form
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
21 déc. 2005 à 17:15
Personne ne sait???
jack, CanisLupus, vous n'avez pas une petite idée qui puisse me mettre sur la voie? parce que j'ai vraiment besoin de rajouter des contrôle dynamiquement et j'ai du mal à croire que personne n'a essayé en VBA ...
0
supers03 Messages postés 106 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 1 décembre 2008
21 déc. 2005 à 21:43
Merci beacoup c'est exactement ce que je voulais faire.

Je vais chercher voir si je peu trouver la liste de tout les controles que l'on peu ajouter, de la même manière que "Forms.Label.1" (exemple : un rectangle)

Encore merci,

Sylvain
0