Je souhaite creer de façon dynamique des contrôles dans une userForm en VBA sous Excel.
Si cela est possible, par avance merçi de bien vouloir m'orienter.
Je souhaite creer de façon dynamique des contrôles dans une userForm en VBA sous Excel.
Si cela est possible, par avance merçi de bien vouloir m'orienter.
Salut
Question intéressante! J'ai fouillé un peu de mon côté mais n'ai rien trouvé de probant pour le moment. J'ai regardé du côté de la fonction CreateObject et aussi la méthode Controls.Add mais n'ai pas eu les résultats escomptés. Il faut dire, que je n'avais encore jamais essayé ce genre de gymnastique. Qu'as-tu essayé? Quels résultats as-tu obtenu?
C'est encore moi,
J'ai trouvé ça dans la FAQ.
Serait-ce là ce que tu cherchais?
Salut,
C'est re-encore moi
Si tu cherches bien dans l'aide de VBA (chez moi j'ai Office97) dans l'index, les mots "Add, méthode", tu risques de tomber sur la référence de la méthode Add. Clique sur le lien Exemple. On y crée un bouton de commande. Ça devrait marcher avec les autres contrôles de la boîte d'outils.
Bye!
J'ai tester divers methode du style AddLibel et autes qui semble bien fonctionner sur une feuille Excel, mais je ne parviens pas à les adapter à une UserForm.
J'ai testé ce que tu as trouvé dans la FAQ.
Même constat : cela fonctionne bien avec une feuille Excel, mais comment l'adapter à une UserForm, si celà est possible !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim objWorksheet As Worksheet Set objWorksheet = ThisWorkbook.Worksheets(1) objWorksheet.Shapes.AddOLEObject "Forms.CommandButton.1", , , , , , , 141, 28.5, 153, 27.75
Je fonctionne avec Excel2000
Merçi zazaraignée pour ces diverses tentatives
As tu essayé les createControl. Je l'ai déjà fais sous access mais sous excel, mais je pense que ça marche, ça doit être général à VB ça.
Salut.
Je n'ai pas trouvé de Méthode ou Fonction CreateControl dans l'aide en ligne ! ! !
Merçi quand même
Salut
Selon l'exemple mentionné plus haut :
C'est dans l'aide de VBA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 dim Mycmd as Control Set Mycmd = Controls.Add("Forms.CommandButton.1") ', _ CommandButton2, Visible) Mycmd.Left = 18 Mycmd.Top = 50 Mycmd.Width = 175 Mycmd.Height = 20 Mycmd.Caption = "Cest amusant." & Mycmd.Name
Pardon,
je pensais que ça marcherai aussi sous EXCEL. J'ai essayé mais effectivement, createControl n'est pas trouvé.
Ca doit donc être une fonction spécial ACCESS, je me suis un peu avancé.
Salut
Bravo et merçi à zazaraignée, ça fonctionne bien.
Je ne connais pas ta technique de recherche, mais même avec la solution, j'ai du mal à la trouver dans l'aide en ligne VBA.
Et sous Excel 2000, y a-t-il une propriété Index à tes contrôles ? Parce que si c'est le cas, il y a plus simple.
Tu crées un premier contrôle et tu lui mets sa propriété Index à 0 (zéro). Ensuite, dans ton Form_Load, tu mets :
C'est ce que j'ai cherché au départ. Mais sous Office 97, les contrôles de Form n'ont pas de propriétés Index.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Dim nMaxCtrls as Integer 'nombre maximum de contrôles Dim x as Integer 'compteur For x = 1 to nMaxCtrls Load monControle(x) ' autres paramètres de monControles ' comme sa position sur la feuille et ' son Caption monControle(x).Visible = True Next x
Il n'y a pas d'index pour les controles sous Excel2000. Cette technique ne peut marcher qu'avec VB et non en VBA sous Excel2000.
C'est beau, merci. C'est que chez moi, je suis encore sous Office97. Suis donc pas au courant de toutes les améliorations des versions plus récentes. Donc pas d'index...
Partager