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
- Fan controle - Télécharger - Optimisation
- Saisie gestuelle iphone - Guide
- Liste deroulante excel avec saisie semi-automatique - Guide
- Controle parental disney plus - Guide
- Controle à distance windows 10 - Guide
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 !