Bonjour,
Je cherche comment créer des Textbox dynamiquement, c'est à dire si j'ai :
my_var = 4 alors Textbox1, Textbox2, Textbox3, Textbox4 généré sur mon UserForm.
J'ai pas trouvé, mais je cherche activement
Bonjour,
Je cherche comment créer des Textbox dynamiquement, c'est à dire si j'ai :
my_var = 4 alors Textbox1, Textbox2, Textbox3, Textbox4 généré sur mon UserForm.
J'ai pas trouvé, mais je cherche activement
J'ai réussi à trouver des info intérressantes seulement maintenant je me demande comment linker un bouton avec un evènement click() par exemple
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Private Sub UserForm_Initialize() Dim BT_Suivant As CommandButton Dim BT_Precedant As CommandButton Dim TB1 As Variant Dim TB2 As Variant Set BT_Suivant = UF_DynamiqueForm.Controls.Add("Forms.CommandButton.1", "BT_Suivant", True) Set BT_Precedant = UF_DynamiqueForm.Controls.Add("Forms.CommandButton.1", "BT_Precedant", True) Set TB1 = UF_DynamiqueForm.Controls.Add("Forms.Textbox.1", "TextBox1", True) Set TB2 = UF_DynamiqueForm.Controls.Add("Forms.Textbox.1", "Textbox2", True) 'bouton précedant BT_Precedant.Caption = "<Précedant" BT_Precedant.Top = 10 BT_Precedant.Left = 10 BT_Precedant.Width = 100 'bouton suivant BT_Suivant.Caption = "Suivant>" BT_Suivant.Top = 10 BT_Suivant.Left = 110 BT_Suivant.Width = 100 'textbox TB1.Top = 60 TB1.Left = 10 TB1.Width = 100 'textbox2 TB2.Top = 90 TB2.Left = 10 TB2.Width = 100 End Sub Private Sub BT_Suivant_Click() MsgBox "suivant" End Sub Private Sub BT_Precedant_Click() MsgBox "precedant" End Sub
Salut,
Tu peux essayer ceci :
Tu peux faire la même chose pour les Label, OptionButton, ... en remplaçant
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 Dim collect As Collection Dim Obj As Object Dim i as Integer Set collect = New Collection For i = 1 To 4 Set Obj = UserForm1.Controls.Add("forms.textbox.1") With Obj .Name = "Toto" & i 'nom de ta textbox (toto1, toto2, toto3, ...) .Left = 100 'position par rapport au rebord gauche de l'UserForm .Top = 20 * i + 10 'position par rapport au haut de l'UserForm .Width = 20 'largeur de la zone d'écriture .Height = 15 'hauteur de la zone d'écriture 'tu peux rajouter ou enlever des propriétés de l'objet End With Next
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set Obj = UserForm1.Controls.Add("forms.textbox.1")
par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set Obj = UserForm1.Controls.Add("forms.label.1")
J'espère que ça va fonctionner
Par contre, pour les boutons comment les lier avec les évènement click() ?
Est ce que tu peux expliciter.Par contre, pour les boutons comment les lier avec les évènement click() ?
Ça à marcher ?
J'arrive à créer mes boutons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Set BT_Suivant = UF_DynamiqueForm.Controls.Add("Forms.CommandButton.1", "BT_Suivant", True) Set BT_Precedant = UF_DynamiqueForm.Controls.Add("Forms.CommandButton.1", "BT_Precedant", True) 'bouton précedant BT_Precedant.Caption = "<Précedant" BT_Precedant.Top = UF_DynamiqueForm.Height - 50 BT_Precedant.Left = 10 BT_Precedant.Width = 100 'bouton suivant BT_Suivant.Caption = "Suivant>" BT_Suivant.Top = UF_DynamiqueForm.Height - 50 BT_Suivant.Left = UF_DynamiqueForm.Width - 110 BT_Suivant.Width = 100le messagebox ne s'affiche pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub BT_Suivant_Click() MsgBox "suivant" End Sub Sub BT_Precedant_Click() MsgBox "precedant" End Sub
Je ne sais pas trop là, dsl
Ce code est dans la UserForm ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub BT_Suivant_Click() MsgBox "suivant" End Sub Sub BT_Precedant_Click() MsgBox "precedant" End Sub
Si tu doucle click sur ta UserForm et que tu écris :
Je ne suis pas sur que le "Private" va changer quelque chose, mais test on sait jamais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub BT_Suivant_Click() MsgBox "suivant" End Sub
Tu as combien de boutons en tout? 2 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 'bouton suivant BT_Suivant.Caption = "Suivant>" BT_Suivant.Top = UF_DynamiqueForm.Height - 50 BT_Suivant.Left = UF_DynamiqueForm.Width - 110 BT_Suivant.Width = 100 BT_Suivant.OnAction = "BT_Suivant_Click" Sub BT_Suivant_Click() ' ... End sub
J'ai une erreur 438, propriété ou méthode non géré par cet objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part BT_Suivant.OnAction = "BT_Suivant_Click"
Code complet
J'ai trouvé la solution :
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Option Explicit Private Sub UserForm_Initialize() Dim BT_Suivant As CommandButton Dim BT_Precedant As CommandButton Dim TB1 As Variant Dim TB2 As Variant Dim collect As Collection Dim Obj As Object Dim Obj2 As Object Dim i As Integer UF_DynamiqueForm.Height = 200 UF_DynamiqueForm.Width = 250 Set BT_Suivant = UF_DynamiqueForm.Controls.Add("Forms.CommandButton.1", "BT_Suivant", True) Set BT_Precedant = UF_DynamiqueForm.Controls.Add("Forms.CommandButton.1", "BT_Precedant", True) Set collect = New Collection 'bouton précedant BT_Precedant.Caption = "<Précedant" BT_Precedant.Top = UF_DynamiqueForm.Height - 50 BT_Precedant.Left = 10 BT_Precedant.Width = 100 BT_Suivant.OnAction = "BT_Precedant_Click" 'bouton suivant BT_Suivant.Caption = "Suivant>" BT_Suivant.Top = UF_DynamiqueForm.Height - 50 BT_Suivant.Left = UF_DynamiqueForm.Width - 110 BT_Suivant.Width = 100 BT_Suivant.OnAction = "BT_Suivant_Click" For i = 1 To 4 Set Obj = UF_DynamiqueForm.Controls.Add("forms.textbox.1") With Obj .Name = "TB_Col" & i 'nom de ta textbox (toto1, toto2, toto3, ...) .Left = 10 'position par rapport au rebord gauche de l'UserForm .Top = 20 * i 'position par rapport au haut de l'UserForm .Width = 100 'largeur de la zone d'écriture .Height = 15 'hauteur de la zone d'écriture 'tu peux rajouter ou enlever des propriétés de l'objet End With Next End Sub Sub BT_Suivant_Click() MsgBox "suivant" End Sub Sub BT_Precedant_Click() MsgBox "precedant" End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Private WithEvents BT_Suivant As CommandButton Private WithEvents BT_Precedant As CommandButton
Par contre un dernier problème, comment renseigner une valeur dans le textbox est autogénérer ?
avant dans mon module "main" je le faisiat de cette façon :
maintenant je ne sais pas comment renseigne une valeur dans un TextBox à partir de la
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UF_DynamiqueForm.TextBox1.Text = Cells(1).Value UF_DynamiqueForm.TextBox2.Text = Cells(1).Value ....
macro de mon module...
le message d'erreur est le suivant : membre de méthode ou de donné introuvable
Salut,
Tes contrôles sont accessible dans Me.Controls.item("NomDuControle").
Merci ça m'a donné la voix à suivre
çc fonctionne maintenant !
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 Sub cmdSuivant(ByVal current_index As Integer, ByVal nbcol As Integer) Dim sheet_name As String Dim MaPlage As Range Dim Ligne As Variant Dim i As Integer, last_column As Integer, index As Integer sheet_name = "db_Ordinateur" Worksheets(sheet_name).Activate index = current_index With ActiveSheet For i = 1 To nbcol UF_DynamiqueForm.Controls.Item("TB_Col" & i).Text = Cells(index, i).Value Next End With End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager