'Exemple 1
'
'ATTENTION !!!!!! CET EXEMPLE NE CONTROLE PAS LA VALIDITE DE LA DATE SAISIE!!!!
'ici c'est juste pour montrer l'assistance a la saisie lineaire(à la suite)
'ATTENTION AUSSI!!! il n'y a pas de controle de << Sur-saisie >>
'on utilise l'event keydown pour pouvoir maitriser les autres touches dans le meme events
'!!!il nous faut donc convertir le << KEYCODE EN KEYASCII >> que normalement donne << l'event keypress >>!!!
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim V$, K&
With TextBox1
V = .Value 'on prend la valeur actuelle du textbox
'et selon le keycode de la touche
Select Case KeyCode
'(pour les pcs portables sans pavé numerique)on peut utiliser les chiffres du haut du clavier ou le pavé numerique
Case 96 To 105, 48 To 57 'les touches du pavé et du haut du clavier
K = KeyCode 'on mémorise le keycode dans la variable k
KeyCode = 0 'et on annule aussitôt la touche
If K >= 96 Then K = K - 48: 'on ramène le code asc pour les touche du pavé
'control slachs (before avant )
If Len(V) = 2 Or Len(V) = 5 Then V = V & "/" 'Contrôle avant ajout du chiffre
V = V & Chr(K) 'on peut maintenant ajouter le caractère tapé
'control slachs (after après )
If Len(V) = 2 Or Len(V) = 5 Then V = V & "/" 'Contrôle après ajout du chiffre
' si vous vous demandez pourquoi je fait ces deux controls avant et apres ajout du chiffre
' j'aurais tres bien pu me contenter de faire le 1er controle << avant >>
' c'est purrement de l'ergonomie visuelle et gerer l'erreur du len(2) ou len(5)en resaisie apres etre revenu en arriere
' quand je tape si j'ai 2 ou 5 caracteres il met le slash avant de mettre le chiffre tapé
' visuellement c'est pas tres confortable
' imaginez si je ne met que le control After
' et que si je tape << 01/02 >> j'aurais donc pareil << 01/02/ >>
' et que je revient en arriere par ce que je veut changer le mois
' et que je n'efface que le slachs par erreur et que je tape mon nouveau chiffre << 3 >> par exemple
' et bien comme on est en len(4) le controls ne voit pas l'erreur et je me retrouve avec << 01/023 >>
' j'ai donc le confort visuel de voir les slach des que je tape 2 ou 5 aractere
' et je n'ai pas la l'abscence du callback du slach en re saisie
Case 8:
' la touche (retour en arriere)
' ca c'est marrant
' on met le case de cette touche MAIS!!! on y fait rien
' mais ça sert a rien alors ??!!???
' et si ça sert
' si je ne met pas ce case 8 la touche va passer dans le case else et donc etre annulée
Case Else: KeyCode = 0 'toutes les autres touches sont automatiquement annulées
End Select
' et on fini par mettre la variable v dans le .Value du textbox
' en la bloquant à 10 caractères Max
.Value = Mid(V, 1, 10)
' terminé le controle de saisie avec separateur est opérant
End With
End Sub