Contrôle saisie pour toute TextBox
Résolu
ed555
Messages postés
63
Statut
Membre
-
ed555 Messages postés 63 Statut Membre -
ed555 Messages postés 63 Statut Membre -
Bonjour le forum,
Je cherche à réaliser une routine qui contrôlerait la saisie de toute les TextBox d'un userform.
j'ai donc un module de classe appelé CEventClass qui contient ceci :
Et un module d'initialisation d'userform où je balaie tous les Controls de ma feuille et ajoute les TextBox à CEventClass :
Je suis à deux doigts d'aboutir mais j'ai un message d'erreur "Variable object ou variable de bloc with non définie" au niveau de "mEventTexts.Add clsEventClass "
Je me suis inspiré de ce lien :
https://stackoverflow.com/questions/24558214/actions-for-multiple-similar-dynamically-created-command-buttons
Et la seule différence est au niveau de l'affectation de txt. Dans le lien ci-dessus, il crée la TextBox dynamiquement :
Set txt = Me.Controls.Add("Forms.TextBox.1", "FourthName")
Je sèche... Auriez-vous une idée ?
Toute suggestion est la bienvenue !
Grand merci par avance,
ed
Je cherche à réaliser une routine qui contrôlerait la saisie de toute les TextBox d'un userform.
j'ai donc un module de classe appelé CEventClass qui contient ceci :
'These are declared WithEvents so the events are exposed to us
Public WithEvents tbxEvent As MSForms.TextBox
'This will fire for any control assigned to tbxEvent
Private Sub tbxEvent_Change()
MsgBox "ca marche"
End Sub
Et un module d'initialisation d'userform où je balaie tous les Controls de ma feuille et ajoute les TextBox à CEventClass :
Private Sub UserForm_Initialize()
Dim oControl As MSForms.Control
' je balaie tous les controls de l'userform
For Each oControl In Me.Controls
' si c'est une TextBox on l'ajoute à CEventClass
If TypeName(oControl) = "TextBox" Then
'tout se passe ici
Set txt = oControl '
'Set txt = oControl.Object '>> ne marche pas non plus
'ici rien à changer
Set clsEventClass = New CEventClass
Set clsEventClass.tbxEvent = txt
mEventTexts.Add clsEventClass ' >> ICI PLANTAGE
End If
Next oControl
End Sub
Je suis à deux doigts d'aboutir mais j'ai un message d'erreur "Variable object ou variable de bloc with non définie" au niveau de "mEventTexts.Add clsEventClass "
Je me suis inspiré de ce lien :
https://stackoverflow.com/questions/24558214/actions-for-multiple-similar-dynamically-created-command-buttons
Et la seule différence est au niveau de l'affectation de txt. Dans le lien ci-dessus, il crée la TextBox dynamiquement :
Set txt = Me.Controls.Add("Forms.TextBox.1", "FourthName")
Je sèche... Auriez-vous une idée ?
Toute suggestion est la bienvenue !
Grand merci par avance,
ed
A voir également:
- Contrôle saisie pour toute TextBox
- Saisie gestuelle iphone - Guide
- Fan controle - Télécharger - Optimisation
- Saisie vocale whatsapp - Accueil - Messagerie instantanée
- Saisie vocale sms - Guide
- Gboard saisie vocale - Accueil - Applications & Logiciels
1 réponse
Bonjour,
Si tous les TextBox sont créés "en dur", en mode création, le code de l'UserForm est :
A titre personnel, je préfères déclarer une variable tableau (Cl() As CEventClass) plutôt qu'une collection.
Si tous les TextBox sont créés "en dur", en mode création, le code de l'UserForm est :
Private Cl() As CEventClass Private Sub UserForm_Initialize() Dim Ctl As Control, i As Long For Each Ctl In Me.Controls If TypeOf Ctl Is MSForms.TextBox Then ReDim Preserve Cl(i) Set Cl(i) = New CEventClass Set Cl(i).tbxEvent = Ctl i = i + 1 End If Next End Sub
A titre personnel, je préfères déclarer une variable tableau (Cl() As CEventClass) plutôt qu'une collection.
ed555
Messages postés
63
Statut
Membre
Super, merci beaucoup pour cette réponse rapide et efficace pijaku !