Créer des objets sous condition
Résolu/Fermé
A voir également:
- Créer des objets sous condition
- Site pour vendre des objets d'occasion - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
2 réponses
NHenry
Messages postés
15185
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
8 janvier 2025
351
6 juin 2015 à 00:14
6 juin 2015 à 00:14
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.
si c'est pour en ajouter sur une feuille de calcul, regardes le code généré à partir de l'enregistreur de macro.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
9 juin 2015 à 08:37
9 juin 2015 à 08:37
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 :
Ou alors, si tu veux en insérer plusieurs (5 dans l'exemple) :
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:
En attendant une réponse, d'avance merci
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
Come on Roger
12 juin 2015 à 10:02
12 juin 2015 à 10:02
Bonjour,
Tu leur donne à tous le même Name. C'est pas possible.
Remplace donc :
par :
Et ensuite utilise leur véritable nom qui sera "OptionButton1" "OptionButton3" "OptionButton18"...
Tu leur donne à tous le même Name. C'est pas possible.
Remplace donc :
Name = "OptionButton"
par :
Name = "OptionButton" & i
Et ensuite utilise leur véritable nom qui sera "OptionButton1" "OptionButton3" "OptionButton18"...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
>
Come on Roger
12 juin 2015 à 13:20
12 juin 2015 à 13:20
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 :
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
8 juin 2015 à 15:11