bonjour,
C’est possible si tu n’utilise pas un champ date mais un champ texte en forçant l’utilisation des caractère.
Il y a 2 possibilités : Soit tu obliges l’utilisateur à taper tous les chiffres et dans ce cas tu peux insérer automatiquement les points de séparation ou l’utilisateur peut ne taper qu’un seul chiffres pour les jours et mois et 2 chiffres pour l’année et un script de format personnalisé se charge de remettre ça en forme.
Voici les scripts utilisés dans mon document exemple qui vérifie les mois de 30 et 31 jours ainsi que le 29 février des année bissextiles :
// script de document
function verifDate(laDate) {
var jour=Number(laDate.substr(0,2));
var mois=Number(laDate.substr(3,2));
var annee=Number(laDate.substr(6));
var bissextile=annee%4==0 && (annee%100!=0 || annee%400==0)?"OUI":"NON";
if (mois==2) {
var leMois="FEVRIER";
} else if (mois==4 || mois==6 || mois==9 || mois==11) {
var leMois="30 JOURS";
} else {
var leMois="31 JOURS";
}
if (laDate.length==6) return (leMois=="30 JOURS" && jour<=30) || leMois=="31 JOURS" || (leMois=="FEVRIER" && jour<=29);
else return (leMois=="30 JOURS" && jour<=30) || leMois=="31 JOURS" || (leMois=="FEVRIER" && jour<=28) || (bissextile=="OUI" && jour<=29);
}
// Script de touches personnalisé pour date entrée 01.02.2025
if(!event.willCommit) {
if (event.change==",") event.change=".";
if ((/^0$/.test(event.value) || /^\d{2}\.0$/.test(event.value)) && event.change==0) var dateOK=false;
else {
var aTester=event.value.split("");
if (event.value.length==1 && event.change!="") event.change=event.change+"\.";
if (event.value.length==4 && event.change!="") event.change=event.change+"\.";
aTester.splice(event.selStart, event.selEnd-event.selStart, event.change);
var testeChaine=aTester.join("");
if (testeChaine.length==6 || testeChaine.length==10) var dateOK=verifDate(testeChaine);
else var dateOK=true;
}
var modeleRegEx=/^(([0-2][0-9]?|(3)[0-1]?)([\.](((0)[0-9]?|(1)[0-2]?)([\.]([2]([0]\d{0,2})?)?)?)?)?)?$/;
event.rc=modeleRegEx.test(testeChaine) && dateOK;
} else {
var modeleRegEx=/^(\d{2}\.\d{2}\.\d{4})?$/;
event.rc=event.value=="" || modeleRegEx.test(event.value);
}
// Script de touches personnalisé pour date entrée 1.2.25
if(!event.willCommit) {
if (event.change==",") event.change=".";
if ((/^0$/.test(event.value) || /^\d{1,2}\.0$/.test(event.value) || /^\d{1,2}\.\d{1,2}\.0?$/.test(event.value)) && event.change==0) var dateOK=false;
else {
var aTester=event.value.split("");
aTester.splice(event.selStart, event.selEnd-event.selStart, event.change);
var testeChaine=aTester.join("");
var aRetester=testeChaine.split(".");
for (var i=0; i<aRetester.length; i++) {
if (i==0 || i==1) {
if (aRetester.length==1) aRetester="0"+aRetester+".";
else aRetester=aRetester.toString()+".";
} else if (i==3 && aRetester.length==2) aRetester="20"+aRetester;
}
var testeChaine=aRetester.join("");
if (testeChaine.length==6 || testeChaine.length==10) var dateOK=verifDate(testeChaine);
else var dateOK=true;
}
var modeleRegEx=/^(([0-2]?[0-9]?|(3)[0-1]?)([\.](((0)?[0-9]?|(1)[0-2]?)([\.](([2][0]?)?\d{0,2})?)?)?)?)?$/;
event.rc=modeleRegEx.test(testeChaine) && dateOK;
} else {
var modeleRegEx=/^(\d{1,2}\.\d{1,2}\.\d{2,4})?$/;
event.rc=event.value=="" || modeleRegEx.test(event.value);
}
// Script de format personnalisé
var cetteDate=event.target.value.split(".");
if (cetteDate[0].length==1) cetteDate[0]="0"+cetteDate[0];
if (cetteDate[1].length==1) cetteDate[1]="0"+cetteDate[1];
if (cetteDate[2].length==2) cetteDate[2]="20"+cetteDate[2];
event.value=cetteDate[0]+"."+cetteDate[1]+"."+cetteDate[2];
@+
😎
Attachments:
You must be
logged in to view attached files.