'Controls de saisie (longueur, caractères...)
'les contraintes dans les évènements pour chaque type de textbox
Private Sub textDate_Change() 'control de saisie de Date au format "dd/mm/yyyy"
Dim T$
T = Mid(textDate.Text, 1, 10) 'on limite à 10 caractères
If Mid(T, 1, 1) > 3 Then T = "" 'si le premier caractère (=dizaine jour) >3 on le supprime
If Len(T) = 2 And Val(T) > 31 Then T = Mid(T, 1, 1) 'si les deux chifres du jours forment un nombre >31 ==> on supprime le second
If Len(T) >= 3 And Mid(T, 3, 1) <> "/" Then T = Mid(T, 1, 2) 's'il y a 3 car et que le 3eme est différent du "/" on garde les 2 premiers (= Jour)
If Len(T) >= 4 And Val(Mid(T, 4, 1)) > 1 Then T = Mid(T, 1, 3) 's'il y a 4 car, et que le 4eme (dizaine mois) >1 on ne garde que les 3 premiers
If Len(T) >= 5 And Val(Mid(T, 4, 2)) > 12 Then T = Mid(T, 1, 4) 'si le mois >12, on supprime l'unité du mois
If Len(T) >= 6 And Mid(T, 6, 1) <> "/" Then T = Mid(T, 1, 5) 's'il y a 6 car et que le 6eme est différent du "/" on garde les 5 premiers (= Jour/Mois)
If Len(T) = 10 And Not IsDate(T) Then MsgBox T & vbCrLf & "la date entrée n'est pas valide" & vbCrLf & "veuillez recommencer": T = "": 'le nombre de caractères est bon, mais on vérifie s'il s'agit d'une date valide
[COLOR=rgb(226, 80, 65)] If Len(T) < 10 Then MsgBox T & vbCrLf & "la date entrée n'est pas valide" & vbCrLf & "veuillez recommencer": T = "": ' on vérifie qu'il y a bien 10 caractères[/COLOR]
textDate = T 'on renvoie T
End Sub