Hi Clive,
Thanks for your help. I finally find a way to check the date's field with differents others checks. Here is the code if that could be usefull... Sorry for the French comments but I do speak French...
In "ThisDocument"
'**************************************************************************
'*** VERIFICATION TBOX_DATE_1 ET TBOX_DATE_2 SI LE TEXTE ENTRE EST UNE DATE OU NON ***
'**************************************************************************
Public Function Date_OK(date_a_tester As String, ByRef date_correcte As String) As Boolean
'*** CHECK IF USER PUT THE DAY IN 1 OR 2 DIGITS DEPENDING OF THE . POSITION ***
'si le . est avant la 2ème position ou après le 3ème
If InStr(date_a_tester, "."

< 2 Or InStr(date_a_tester, "."

> 3 Then
'la date est fausse
Date_OK = False
Close
End If
'si le . est en 2ème position
If InStr(date_a_tester, "."

= 2 Then
'ajout du 0 suivi du chiffre (date_a_tester) entré par l'utilisateur
date_a_tester = "0" + date_a_tester
End If
'*** CHECK IF USER PUT THE MONTH IN 1 OR 2 DIGITS DEPENDING ON THE . POSITION ***
'si le . est avant la 5ème position ou après la 6ème
If InStr(date_a_tester, "."

< 5 Or InStr(date_a_tester, "."

> 6 Then
Date_OK = False
Close
End If
Dim B As String
B = date_a_tester
If InStr(4, date_a_tester, "."

= 5 Then
B = Left(date_a_tester, 3) + "0" + Right(date_a_tester, Len(date_a_tester) - 3)
Else: B = date_a_tester
End If
date_a_tester = B
'*** CHECK IF USER PUT THE YEAR IN 1 OR 2 DIGITS DEPENDING ON THE . POSITION ***
'si le . est avant la 5ème position ou après la 6ème
If Not (Len(date_a_tester) = 8 Or Len(date_a_tester) = 10) Then
Date_OK = False
Close
End If
' si la longueur de date_a_tester est = à 8 (au lieu de 10), après 6 chiffres, on ajoute
' le chiffre 20 (pour 2000) et on ajoute les 2 derniers caractères
If Len(date_a_tester) = 8 Then
date_a_tester = Left(date_a_tester, 6) + "20" + Right(date_a_tester, 2)
End If
'*** CHECK THE ENTERED DIGITS ***
Dim A As Boolean
A = True
'le 1er chiffre doit avoir une longueur de 1 et être = à 0 ou 1 ou 2 ou 3 (jusqu'à 31 jours !) .
A = A And (Mid(date_a_tester, 1, 1) = "0" Or Mid(date_a_tester, 1, 1) = "1" Or Mid(date_a_tester, 1, 1) = "2" Or Mid(date_a_tester, 1, 1) = "3"

'le 1er chiffre ne peut être sup. à 32
A = A And Mid(date_a_tester, 1, 2) < 32
'le 3ème chiffre doit avoir une longueur de 1 et être un .
A = A And Mid(date_a_tester, 3, 1) = "."
'le 6ème chiffre doit avoir une longueur de 1 et être un .
A = A And Mid(date_a_tester, 6, 1) = "."
'le 4ème chiffre doit avoir une longueur de 1 et être = à 0 ou 1 (pas de mois > 12 !).
A = A And (Mid(date_a_tester, 4, 1) = "0" Or Mid(date_a_tester, 4, 1) = "1"
'*** CHECK THE DATE ***
date_correcte = date_a_tester
B = date_correcte
'insertion, dans la date_a_tester, à la 3ème pos. d'un / qui doit avoir une longueur de 1
Mid(B, 3, 1) = "/"
'insertion, dans la date_a_tester, à la 6ème pos. d'un / qui doit avoir une longueur de 1
Mid(B, 6, 1) = "/"
' vérification de la date en fonction du format de date
Date_OK = A And IsDate(B)
End Function
AND FOR THE CONTROL :
Private Sub txtbox_date_1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim date_correcte As String
If Not ThisDocument.Date_OK(txtbox_date_1, date_correcte) Then
MsgBox "VOUS AVEZ ENTRE UN" & vbCr & "MAUVAIS FORMAT DE DATE", 48, "ATTENTION"
Close
Else: txtbox_date_1.Value = date_correcte
End If
End Sub