Bonjour à tous,
Je suis bloqué sur un problème depuis maintenant 2 jours. J'ai déjà tenté de trouver la réponse sur ce forum, mais je n'ai rien trouvé![Frown :( :(](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Je vous explique :
J'ai une Userform classique. Au moment de l'initialisation de cette form, je créé autant checkbox qu'il y a de valeur sur une feuille excel. Jusque là tout va bien. J'utilise la méthode add de cette manière :
Dim newCtrl As Control
Set newCtrl = frmParam.frmList.Controls.Add("Forms.CheckBox.1", newCtrlName)
Je ne peux évidemment pas créer un évènement click pour chacun des checkbox créée de cette façon, je passe donc par un module de classe classique :
Option Explicit
' Mise en place des événements d'une feuille de calcul classique
Public WithEvents oneCheckBox As MSForms.CheckBox
' Quand on sélectionne un truc
Private Sub OneCheckBox_Click()
' Par défaut
frmParam.cmdSuppr.Enabled = False
' Recherche d'une checkbox cochée
Dim oneCheckBox As Control
For Each oneCheckBox In frmParam.frmList.Controls
If TypeName(oneCheckBox) = "CheckBox" Then
If oneCheckBox.value Then
frmParam.cmdSuppr.Enabled = True
Exit For
End If
End If
Next oneCheckBox
End Sub
Et voilà mon problème, mon module de classe attend en entrée un objet de type Checkbox et moi je n'ai qu'un objet de type Control à lui donner (celui provenant de la méthode Add). Donc voilà ma question : est-il possible de transtyper un Control en Checkbox ? Grosso-modo faire la même chose qu'un Cast en Java ...
Je suis bloqué sur un problème depuis maintenant 2 jours. J'ai déjà tenté de trouver la réponse sur ce forum, mais je n'ai rien trouvé
Je vous explique :
J'ai une Userform classique. Au moment de l'initialisation de cette form, je créé autant checkbox qu'il y a de valeur sur une feuille excel. Jusque là tout va bien. J'utilise la méthode add de cette manière :
Dim newCtrl As Control
Set newCtrl = frmParam.frmList.Controls.Add("Forms.CheckBox.1", newCtrlName)
Je ne peux évidemment pas créer un évènement click pour chacun des checkbox créée de cette façon, je passe donc par un module de classe classique :
Option Explicit
' Mise en place des événements d'une feuille de calcul classique
Public WithEvents oneCheckBox As MSForms.CheckBox
' Quand on sélectionne un truc
Private Sub OneCheckBox_Click()
' Par défaut
frmParam.cmdSuppr.Enabled = False
' Recherche d'une checkbox cochée
Dim oneCheckBox As Control
For Each oneCheckBox In frmParam.frmList.Controls
If TypeName(oneCheckBox) = "CheckBox" Then
If oneCheckBox.value Then
frmParam.cmdSuppr.Enabled = True
Exit For
End If
End If
Next oneCheckBox
End Sub
Et voilà mon problème, mon module de classe attend en entrée un objet de type Checkbox et moi je n'ai qu'un objet de type Control à lui donner (celui provenant de la méthode Add). Donc voilà ma question : est-il possible de transtyper un Control en Checkbox ? Grosso-modo faire la même chose qu'un Cast en Java ...