Créer des objets sous condition
Résolu
Come on Roger
-
Come on Roger -
Come on Roger -
Bonjour
Je suis débutant en vba et j'aimerais savoir si il est possible de créer des objets (en particulier checkBox) tout cela à travers du code. D'avance merci
Je suis débutant en vba et j'aimerais savoir si il est possible de créer des objets (en particulier checkBox) tout cela à travers du code. D'avance merci
2 réponses
-
En VBA, peut être, mais assez complique si tu veux que ça soit sur une UserForm.
si c'est pour en ajouter sur une feuille de calcul, regardes le code généré à partir de l'enregistreur de macro.
-
Bonjour,
Pour ajouter un CheckBox dans un Userform de manière dynamique par le code :
1- ouvre un nouveau classeur ,
2- Alt + F11
3- insertion/UserForm
4- le code, dans le module de l'userform est :Private Sub UserForm_Initialize() Dim Obj As Object Set Obj = Me.Controls.Add("forms.CheckBox.1") With Obj .Move 6, 6, 80, 20 .Name = "myCheck" .Value = False .Caption = "Cochez-moi!" End With Me.Move Me.Left, Me.Top, 200, 200 End Sub
Ou alors, si tu veux en insérer plusieurs (5 dans l'exemple) :Private Sub UserForm_Initialize() Dim Obj As Object, Cpt As Byte For Cpt = 1 To 5 Set Obj = Me.Controls.Add("forms.CheckBox.1") With Obj .Move 6, 6 + (20 * (Cpt - 1)), 80, 20 .Name = "myCheck" & Cpt .Value = False .Caption = "Cochez-moi!" End With Next Me.Move Me.Left, Me.Top, 200, 200 End Sub
-
-
Bonjour
Maintenant j'arrive bien à créer les objets dans une boucle, cependant une fois créés, je n'arrive pas à communiquer avec ces objets.Voilà mon code:Dim i As Integer Dim obj As Object While (Range("B" & i).Text <> "\") If (Range("B" & i) <>"" Then Set obj = Me.Controls.Add("forms.OptionButton.1") With obj .Name = "OptionButton" [ ... ] End With End If i = i + 1 Wend MsgBox OptionButton1.Value 'En arrivant sur le MsgBox, j'ai un message d'erreur "Objet requis"
En attendant une réponse, d'avance merci -
-
-
Oui, pardon, tu as raison.
Comme je n'ai pas testé, je n'ai pas fait attention à cela.
Comme l'objet n'est pas présent dans l'userform, lors de l'initialize, VBA considère que OptionButton1 écrit comme ça est une variable. Or non déclarée, cela engendre une erreur.
Pour résoudre ceci, il convient d'utiliser la syntaxe :MsgBox Me.Controls("OptionButton3").Value
-