Contrôle saisie pour toute TextBox
Résolu
ed555
Messages postés
61
Date d'inscription
Statut
Membre
Dernière intervention
-
ed555 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
ed555 Messages postés 61 Date d'inscription Statut Membre Dernière intervention -
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
- Saisie vocale whatsapp - Accueil - Messagerie instantanée
- Saisie vocale sms - Guide
- Gboard saisie vocale - Accueil - Applications & Logiciels
- Fan controle - Télécharger - Optimisation
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
61
Date d'inscription
Statut
Membre
Dernière intervention
Super, merci beaucoup pour cette réponse rapide et efficace pijaku !