1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
Option Explicit
Const val_numeric = "[0-9]" 'constante comportant uniquement des chiffres
Const val_texte = "[a-zA-Z ]" 'constante comportant uniquement les 26 lettres de l'alphabet (minuscule et majuscule )
Const val_textnum = "[a-zA-Z0-9(),éèàç'-âêîÏ ]" 'constante comportant uniquement les 26 lettres de l'alphabet (minuscule et majuscule )
'et certain caractere spéciaux
Public WithEvents groupetexto As MSForms.TextBox
Private Sub groupetexto_Change()
Select Case groupetexto.Tag
Case "tel"
Select Case Len(groupetexto)
Case 2, 5, 8, 11: groupetexto = groupetexto & " ": End Select 'on rajoute un espace a chaque fois qu'il y a 2 chiffres de tapé
Case "date"
Select Case Len(groupetexto)
Case 2, 5: groupetexto = groupetexto & "/": End Select 'on ajoute un slasch a chaque fois que l'on tape 2 chiffres
'on force la majuscule de la première lettre de chaque mots du nom
Case "Npropre": groupetexto = Application.WorksheetFunction.Proper(groupetexto)
End Select
End Sub
Private Sub groupetexto_KeyPress(ByVal keyAscii As MSForms.ReturnInteger)
'ici on force le format accepté par les constante comparé avec "Like"
Select Case groupetexto.Tag
Case "tel", "date": If Not Chr(keyAscii) Like val_numeric Then keyAscii = 0
Case "texto": If Not Chr(keyAscii) Like val_texte Then keyAscii = 0
Case "Npropre": If Not Chr(keyAscii) Like val_texte Then keyAscii = 0
Case "textnum": If Not Chr(keyAscii) Like val_textnum Then keyAscii = 0
End Select
End Sub
Private Sub groupetexto_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'comme le textbox est formaté au keypress on ne peut que supprimer jusqu'au dernier"/" ou espace ,alors
If KeyCode = 8 Then
Select Case Right(groupetexto, 1)
Case "/": groupetexto = Left(groupetexto, Len(groupetexto) - 2)
Case " ": groupetexto = Left(groupetexto, Len(groupetexto) - 2)
End Select
End If
End Sub |
Partager