Salut, j'ai exactement besoins de faire la meme chose, donc j'ai essayé d'utiliser ce code là, mais ca marche pas. Il me dit que je fait une utilisation incorecte du mot-clé new. C'est peut-etre parceque je travail en vba?Envoyé par gars_toff
Salut, j'ai exactement besoins de faire la meme chose, donc j'ai essayé d'utiliser ce code là, mais ca marche pas. Il me dit que je fait une utilisation incorecte du mot-clé new. C'est peut-etre parceque je travail en vba?Envoyé par gars_toff
Je ne suis pas sur que cela soit possible d'ajouter dynamiquement des controles sur une form :
Tu peux cependant passer par un groupe de controles.Envoyé par msdn
Si tu travailles en vba, tu peux passer par la collection OLEObjects. Dans ce cas il est tout à fait possible d'ajouter dynamiquement des controles sur une feuille Excel (Sur un UserForm?)
Ok je vais essayer avec OLEObjects d'ajouter un objet de type label sur ma UserForm.Envoyé par Catbull
Voici comment je crée mes Contrôles en VBA:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim oNewControl As Control Set oNewControl = frmMyForm.Controls.Add("Forms.Label.1") oNewControl.Name = "lbl1" oNewControl.Caption = "Caption1" Set oNewControl = frmMyForm.Controls.Add("Forms.Label.1") oNewControl.Name = "lbl2" oNewControl.Caption = "Caption2" Etc...
N'oubliez pas de cliquer surquand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
Ok, merci beaucoup j'ai finalement utilisé la méthode d'AlainTech et c'est top.
Pour ton info, le seul controle classique que l'on ait pas reussi à créer dynamiquement (qque soit la méthode utilisée, en VB6) c'est un sous-menu dans un menu - lui aussi créé dynamiquementEnvoyé par Catbull
![]()
Au passage, si qqun a la combine ....
bon je suis de nouveau bloqué car j'arrive plus a retrouver mes textbox, je m'explique:
dans un premier temps, lors de la l'activation de ma UserForm, je cré dynamique mes TextBox comme cela (selon les conseils d'AlainTech):
Ensuite, sur ma userfrom1 je dispose aussi d'un bouton ok et j'aimerais, lorsque je clique sur ok, utiliser les valeurs de mes différents textbox. Malheureusement je ne sais pas comment retrouvé mes textbox, si quelqu'un pouvait m'éclairer ce serait vraiment cool car la je rame a fond
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For Each mycell In Worksheets("Sheets1").Range("A1:A15") Set oNewControl2 = UserForm1.Controls.Add("Forms.TextBox.1") oNewControl2.Name = mycell.Value 'Plus la positions x, y etc next mycell
tiens une solution en stockant les références à tes contôles dans un tableau ....Envoyé par wind_vinch
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Sub CommandButton1_Click() Dim c Dim i As Integer i = 1 For i = 0 To UBound(oNewControl2) - 1 Worksheets("Sheets1").Cells(i + 1, 2).Value = oNewControl2(i).Value Next Me.Hide End Sub Private Sub UserForm_Initialize() Dim iTop As Integer Dim i As Integer ReDim Preserve oNewControl2(Worksheets("Sheets1").Range("A1:A3").Cells.Count) For Each mycell In Worksheets("Sheets1").Range("A1:A3") Set oNewControl2(i) = UserForm1.Controls.Add("Forms.TextBox.1") oNewControl2(i).Text = mycell.Value oNewControl2(i).Top = iTop iTop = iTop + 20 i = i + 1 'Plus la positions x, y etc Next mycell End Sub![]()
Sinon il y as peu être une autre solution que je n'ai pas développé c'est sur validation, parcourir tous les contrôles de l'userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for each c in userform1.controls SI c.name = xxx* ...![]()
![]()
ok, c'est tout bon en bidouillant un peu j'y suis arrivé (meme si le code n'est pas parfait) merci a tous.
Partager