Gérer les controls d'un UserForm à l'aide de variables tableu

Fermé
J2P - 16 mars 2016 à 10:28
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 16 mars 2016 à 13:28
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

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
16 mars 2016 à 12:29
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
0
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
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
16 mars 2016 à 13:28
Re,

Ah, vous êtes l'auteur de ce document. Bravo.
Non, ce n'est pas moi mais lermitte222 de CCM, que je salue au passage
0