Bonjour à tous,
J'ai créer un module de classe pour remplacer un traitement répétitif dans l'événement KeyDown des TextBox.
Mais voila, parfois les événements KeyDown des TextBox, contiennent des valeurs différentes et parfois des lignes de commande en plus l'un par rapport à l'autre.
Comment unifier le module de classe, tout en gardant les lignes de codes ou les quelques propriétés en plus.
- Les (.Text) parfois elle est égal à "", "T" ou "L3-"
- On trouve parfois Selstart dans des Textbox et pas d’autres
Merci.
Les Evenements à remplacer.
-----
Classe : KeyControlClass
-----
----------Appel de la classe-----
Mais quand j'appel mon userform avec FrmSaisie.Show ça bug.
Une solution ?
Merci d'avance
http://www.developpez.net/forums/d1170734/logiciels/microsoft-office/excel/macros-vba-excel/module-classe-textbox/
PJ en :https://www.excel-downloads.com/threads/formulaire-modification-ajout-votre-opinion.175488/
J'ai créer un module de classe pour remplacer un traitement répétitif dans l'événement KeyDown des TextBox.
Mais voila, parfois les événements KeyDown des TextBox, contiennent des valeurs différentes et parfois des lignes de commande en plus l'un par rapport à l'autre.
Comment unifier le module de classe, tout en gardant les lignes de codes ou les quelques propriétés en plus.
- Les (.Text) parfois elle est égal à "", "T" ou "L3-"
- On trouve parfois Selstart dans des Textbox et pas d’autres
Merci.
Les Evenements à remplacer.
Code:
Private Sub tbN_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then KeyCode = 0 With tbTr .Text = "T" .SelStart = Len(.Text) .SetFocus End With End IfEnd SubPrivate Sub tbTr_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim Texte As String Texte = tbTr.Text If Len(Texte) = 4 Then Texte = Texte & "-" tbTr.Text = Texte If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then KeyCode = 0 With tbPr .Text = "" .SetFocus End With End IfEnd SubPrivate Sub tbPr_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then With tbL3 KeyCode = 0 .Text = "L3-" .SelStart = Len(.Text) .SetFocus End With End IfEnd SubPrivate Sub tbAD_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then With tbPt KeyCode = 0 .Text = "" .SetFocus End With
End IfEnd Sub
-----
Classe : KeyControlClass
-----
Code:
Public WithEvents tbKey As MSForms.TextBoxPrivate Sub tbKey_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then KeyCode = 0 With tbTr .Text = "T" ' on trouve parfois .Text="", parfois .Text = "L3-" : Comment traiter ce probleme ? .SelStart = Len(.Text) .SetFocus End With End If End Sub
Code:
Dim TBx(1 To 5) As New keyControlClassPrivate Sub UserForm_Initialize() Dim b As Byte Dim Ctl As MSForms.Control b = 1 For Each Ctl In Me.Controls If TypeOf Ctl Is MSForms.TextBox Then TBx(b).tbKey = Ctl.Name b = b + 1 End If Next CtlEnd Sub
Mais quand j'appel mon userform avec FrmSaisie.Show ça bug.
Une solution ?
Merci d'avance
http://www.developpez.net/forums/d1170734/logiciels/microsoft-office/excel/macros-vba-excel/module-classe-textbox/
PJ en :https://www.excel-downloads.com/threads/formulaire-modification-ajout-votre-opinion.175488/
Dernière édition: