Private Sub txtDateDeb_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'si le nombre de caractères de la date est inférieur à 9, rajoute "20" devant l'année
If Len(Me.txtDateDeb.Value) < 9 Then Me.txtDateDeb.Value = Left(Me.txtDateDeb, 6) & "20" & Right(Me.txtDateDeb, 2)
On Error Resume Next 'gestion des erreurs
Me.txtDateDeb.Value = CDate(Me.txtDateDeb) 'si l'édition n'est pas une date, provoque une erreur
If Err <> 0 Then 'condition : en cas d'erreur
Cancel = True 'annule la sortie de la Textbox
'sélection du texte de la Textbox
Me.txtDateDeb.SelStart = 0 'début de la sélection
Me.txtDateDeb.SelLength = Len(Me.txtDateDeb.Value) 'longueur de la sélection
MsgBox "Date non valide !" 'message
End If 'fin de la condition
End Sub
Private Sub txtDateFin_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'si le nombre de caractères de la date est inférieur à 9, rajoute "20" devant l'année
If Len(Me.txtDateFin.Value) < 9 Then Me.txtDateFin.Value = Left(Me.txtDateFin, 6) & "20" & Right(Me.txtDateFin, 2)
On Error Resume Next 'gestion des erreurs
Me.txtDateFin.Value = CDate(Me.txtDateFin) 'si l'édition n'est pas une date, provoque une erreur
If Err <> 0 Then 'condition : en cas d'erreur
MsgBox "Date non valide !" 'message
GoTo fin 'va à l'étiquette "fin"
End If 'fin de la condition
'interdit la date de fin inférieure à la date de début
If Me.txtDateFin < Me.txtDateDeb Then 'condition : si la date de fin est inférieure à la date de début
MsgBox "Date de fin inférieure à la date de début !" 'message
GoTo fin 'va à l'étiquette "fin"
End If 'fin de la condition
Exit Sub 'sort de la procédure
fin: 'étiquette
Cancel = True 'annule la sortie de la Textbox
'sélection du texte de la Textbox
Me.txtDateFin.SelStart = 0 'début de la sélection
Me.txtDateFin.SelLength = Len(Me.txtDateFin.Value) 'longueur de la sélection
End Sub