Bonjour, C'est un vieux problème auquel j'ai décidé de m'attaquer une fois pour toute, Estimant probablement que des plugins tierces peuvent s'en charger... Voilà donc un Champ Date : SAI_Date, dans lequel est incrusté un bouton Calendrier. Quand on clique sur ce bouton, un calendrier apparaît où l'utilisateur peut choisir une date qui va donner la valeur du champ. L'objectif est de pouvoir griser les cases de ce calendrier qui sont en dehors d'une plage de dates prédéfinies. Nous aurons le Chargement de la page (onload) : Code (Text): // Variables globales navigateur gsAC est une chaîne = "dwwSAISIEDATEEX_CAL" gsBC est une chaîne = SAI_Date..Alias gsBMini est une chaîne = "20171125" gsBMaxi est une chaîne = "20171231" Code (Text): // Initialisation du champ Date jsInitCal(gsAC) jsInitDateCal(gsBC) Avec : - gsAC l'alias du calendrier, à vérifier dans le code source d'une page - gsBC l'alias du champ Date, ce qui va permettre de retrouver son bouton - gsBMin et gsBMaxi les dates au format ISO qui sont les bornes de la plage souhaitée Code (Text): Initialisation générale avec jsInitCal(gsAC) : function jsInitCal(ac) { $('#'+ac).on("DOMSubtreeModified",function(){ jsBorneCal(); }); } Qui va permettre d'agir à chaque changement qui intervient dans la DIV qui entoure le calendrier. Initialisation spécifique au champ date jsInitDateCal(gsBC) : Code (Text): function jsInitDateCal(bcal) { abtn = $("#tz"+bcal).find("a"); oc = abtn.attr('onclick'); oc += ";jsBorneCal();" abtn.attr('onclick',oc); } Qui va insérer un traitement qui sera déclenché sur le clic du bouton dans le champ date. Ce traitement c'est le bornage dans le calendrier jsBorneCal() : Code (Text): function jsBorneCal() { $("#"+gsAC+" a[href^='javascript']").each(function(){ hrf = $(this).attr('href'); if (isvalDateCal(hrf) == 0){ $(this).attr('href', "#"); $(this).find('.Normal-Fond').css("background-color","grey"); $(this).find('.Normal').css("color","white"); } }); } Qui fait appelle à une procédure navigateur en WL (parce que c'est tout de même plus simple !): Code (Text): Procedure isvalDateCal(sOnclick est une chaîne) SI sOnclick ~= "" ALORS RENVOYER 1 sOnclick = Remplace(Remplace(Remplace(ExtraitChaîne(sOnclick,2," "),"'",""),")",""),"}","") SI PAS DateValide(sOnclick) ALORS RENVOYER 1 dDate est une Date = sOnclick dMini est une Date = gsBMini dMAxi est une Date = gsBMaxi SI dMini <= dDate <= dMAxi ALORS RENVOYER 1 SINON RENVOYER 0 FIN Et ça marche ! Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! Quand vous avez plusieurs champs Date dans une page, il faut juste appeler jsInitDateCal pour chacun. Cadeau de fin d'année 2017 à la communauté webdev Bonne fêtes à tous ! -- Code par : René MALKA