Il faut savoir qu'avec les UserForms c'est extrêmement difficile de vérifier une donnée tout de suite après sa saisie. C'est d'ailleurs le coté très pénalisant des UserForms.
Il y a 2 évènements sur le
Control (
TextBox par exemple) qui permettent de le faire:
-
AfterUpdate()
-
Exit() le principal avec son paramètre
Cancel qui empêche de passer à autre chose en cas d'erreur.
L'évènement
Change() est déclenché à chaque entrée clavier et ne permet donc pas un contrôle de la valeur finale et ça reste compliqué de contrôler caractère après caractère. De plus il n'est bloquant sur le
Control.
J'ai fait
une ressource qui permet de traiter ce problème mais un débutant ne saurait pas la mettre en place.
Alors il ne reste qu'une solution simple:
effectuer le contrôle des données sur la touche Valider.
C'est ce que j'ai juste complété dans ton code pour les dates.
Comme je ne suis pas sûr de tes formats de dates, j'ai créé une constante de compilation:
#Const ANNÉE_SUR_4CHIFFRES = True (
True si jj/mm/aaaa,
False si jj/mm/aa qui ne se fait plus trop)