Ouch !
Ton système ressemble fort à une usine à gaz :
Beaucoup de travail, et un résultat pas forcément correct.
Parce qu'une fois qu'on a testé le jour (1<x1<31), il faut encore faire un test par rapport au mois (on ne prend pas le 31 avril, mais on prend le 31 janvier). Et même sur l'année (années bissextiles).
J'ai eu un programme qui contrôlait les dates plus ou moins comme ça :
Gestion des années bissextiles calamiteuse.
Alors qu'il suffit de prendre la saisie complète (JJ/MM/AAAA), et de regarder si on arrive à la transformer en date
De tête, je dirais (au niveau syntaxe, c'est limite, mais dans l'esprit c'est compréhensible, je pense) :
function TesterDate(valeur string) {
result := false;
try
StrtoDate (string);
result := true;
end try;
return result;
}
Avec un appel à TesterDate à la sortie du champ (ou à l'appui sur la touche Entrée)