Gérer les controls d'un UserForm à l'aide de variables tableu
J2P
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour à la communauté,
Avec Excel, j’utilise souvent VBA et des UserForms comme interface pour les utilisateurs de l’entreprise.
Sous VBA Excel, il semble donc impossible de créer dynamiquement des Controls. Aussi, pour faciliter l’écriture des lignes programmes, j’affecte mes Controls à des « variables tableaux ». Par exemple, j’affecte tous les CheckBox de la colonne de gauche dans une variable que j’aimerai déclarer avant « dim var() as CheckBox ». Mais je n’y arrive pas. Je ne sais le faire qu’avec une déclaration « dim … as Object ».
Aujourd’hui, je fais :
Dim Bx(1 To 2, 1 To 50) As Object, Tx(1 To 15, 1 To 50) As Object
Dim O As Object
For Each O In Me.Controls
Select Case UCase(TypeName(O))
Case Is = UCase("CheckBox")
Set Bx(x, y) = O
Case Is =Ucase( "Label")
Set Tx(x,y) = O
End Select
Next
Ne serait-il pas possible de faire :
Dim Bx(1 To 2, 1 To 50) As CheckBox, Tx(1 To 15, 1 To 50) As Label
Dim O As Object
For Each O In Me.Controls
Select Case UCase(TypeName(O))
Case Is = UCase("CheckBox")
Set Bx(x, y) = O
Case Is =Ucase( "Label")
Set Tx(x,y) = O
End Select
Next
Ou passer par : For Each O In Me.CheckBox
Bien entendu j’ai essayé
Set Bx(x, y) = me.controls(O.name)
Set Bx(x, y) = controls(me.controls(O.name))
et je suis passé par l’appel à une routine externe via « ByVal » et via « ByRef »
Merci d’avance pour vos réponses éclairées.
Très cordialement
J2P
Avec Excel, j’utilise souvent VBA et des UserForms comme interface pour les utilisateurs de l’entreprise.
Sous VBA Excel, il semble donc impossible de créer dynamiquement des Controls. Aussi, pour faciliter l’écriture des lignes programmes, j’affecte mes Controls à des « variables tableaux ». Par exemple, j’affecte tous les CheckBox de la colonne de gauche dans une variable que j’aimerai déclarer avant « dim var() as CheckBox ». Mais je n’y arrive pas. Je ne sais le faire qu’avec une déclaration « dim … as Object ».
Aujourd’hui, je fais :
Dim Bx(1 To 2, 1 To 50) As Object, Tx(1 To 15, 1 To 50) As Object
Dim O As Object
For Each O In Me.Controls
Select Case UCase(TypeName(O))
Case Is = UCase("CheckBox")
Set Bx(x, y) = O
Case Is =Ucase( "Label")
Set Tx(x,y) = O
End Select
Next
Ne serait-il pas possible de faire :
Dim Bx(1 To 2, 1 To 50) As CheckBox, Tx(1 To 15, 1 To 50) As Label
Dim O As Object
For Each O In Me.Controls
Select Case UCase(TypeName(O))
Case Is = UCase("CheckBox")
Set Bx(x, y) = O
Case Is =Ucase( "Label")
Set Tx(x,y) = O
End Select
Next
Ou passer par : For Each O In Me.CheckBox
Bien entendu j’ai essayé
Set Bx(x, y) = me.controls(O.name)
Set Bx(x, y) = controls(me.controls(O.name))
et je suis passé par l’appel à une routine externe via « ByVal » et via « ByRef »
Merci d’avance pour vos réponses éclairées.
Très cordialement
J2P
A voir également:
- Gérer les controls d'un UserForm à l'aide de variables tableu
- Gerer les profils netflix - Guide
- Comment gérer les applications qui se lancent au démarrage - Guide
- Gerer stockage google - Guide
- Gerer les cookies - Guide
- Gerer foyer netflix - Accueil - Guide streaming
3 réponses
Bonjour,
Sous VBA Excel, il semble donc impossible de créer dynamiquement des Controls
Ben si!!!!
https://www.commentcamarche.net/faq/31279-vba-ajouter-des-controles-dynamiquement-dans-un-userform
Sous VBA Excel, il semble donc impossible de créer dynamiquement des Controls
Ben si!!!!
https://www.commentcamarche.net/faq/31279-vba-ajouter-des-controles-dynamiquement-dans-un-userform
Bonjour,
Ah, vous êtes l'auteur de ce document. Bravo.
C'est effectivement à partir de votre exemple de calculatrice et des restrictions que vous signaliez que j'ai écrit (un peu vite) que la génération dynamique de Controls semblait compliquée. En fait, j'aurai dû écrire que la génération était possible, mais qu'elle ne permettait pas de gérer facilement les événements.
Or, en utilisant des variables tableaux et insérant plein de routines de type "Private Sub OptionButtonxxx_Click()" puis en comparant par exemple les positions des Controls et celles des Controls représentés par les variables, je peux traiter l'événement.
Bien cordialement
J2P
Ah, vous êtes l'auteur de ce document. Bravo.
C'est effectivement à partir de votre exemple de calculatrice et des restrictions que vous signaliez que j'ai écrit (un peu vite) que la génération dynamique de Controls semblait compliquée. En fait, j'aurai dû écrire que la génération était possible, mais qu'elle ne permettait pas de gérer facilement les événements.
Or, en utilisant des variables tableaux et insérant plein de routines de type "Private Sub OptionButtonxxx_Click()" puis en comparant par exemple les positions des Controls et celles des Controls représentés par les variables, je peux traiter l'événement.
Bien cordialement
J2P