Donnez vie à vos documents numériques !
 

Calcul date automatique j+1, j+2, j+3….

abracadabraPDF Forums PDF – Général Calcul date automatique j+1, j+2, j+3….

  • Créateur
    Sujet
  • #69978
    SEBCOLINI
    Participant

    Bonjour,

    J’ai développé un Agenda PDF et j’ai besoin d’automatiser les dates sur 6 semaines suivant la date de début de l’agenda qui elle est aléatoire

    J’ai besoin du script qui permet de d’ajouter (1, 2, 3, x…) journée sur une date saisie

    J’espère que mes explications sont claires

    Je vous remercie par avance pour votre retour

    Cordialement

     

    Attachments:
    You must be logged in to view attached files.
Affichage de 16 réponses de 1 à 16 (sur un total de 16)
  • Auteur
    Réponses
  • #69980
    bebarth
    Maître des clés

    bonjour,
    Voici un script de calcul pour ajouter 1 jour à la date (champ laDate) :

    var chaine=this.getField("laDate").valueAsString;
    if (chaine!="") {
    // des éléments de la date
    var jour=chaine.substring(0,2);
    var mois=chaine.substring(3,5);
    var annee=chaine.substring(6,10);
    //Définition de l'objet date + 1 jour (les mois sont numérotés de 0 à 11)
    var d=new Date(annee,(mois-1),jour);
    var n=d.getTime()+(1*24*3600*1000); // 1 pour 1 jour, n est en millisecondes
    var date=new Date(n);
    this.event.target.value=date;
    } else {
    this.event.target.value="";
    }

    Pour ton exemple, il faudrait peut-être mieux mettre une fonction en script de document au lieu de dupliquer ce script.
    Si tu veux, tu peux partager ton fichier.

    @+
    😎

    #69981
    SEBCOLINI
    Participant

    Merci beaucoup bebarth

    Mais ça ne marche pas …

    Je te joints le document

    Si tu peux y jeter un coup d’oeil merci 🙂

    • Cette réponse a été modifiée le il y a 2 années et 5 mois par SEBCOLINI.
    Attachments:
    You must be logged in to view attached files.
    #69984
    Merlin
    Maître des clés

    Bonjour et bienvenue

     

    J’ai placé ce script en script de validation dans le champ de départ (en orange dans le ci-joint).

    (Le format de date du champ de départ doit correspondre à celui de la 3e ligne du script)

     

    var daDate = event.value;
    if(daDate !== "") {
    var aDate = util.scand("dd/mm/yyyy", daDate);
    if(aDate) {
    for (var i=1; i<42; i++) {
    var Dday = i * 24 * 60 * 60 * 1000;
    oNewDate = new Date(Dday + aDate.getTime());
    this.getField("date." + i).value = util.printd("dd/mm/yyyy", oNewDate);
    }

    }
    }

    else {
    for (var i=1; i<42; i++) {
    this.getField("date." + i).value = "";
    }
    }

    Attachments:
    You must be logged in to view attached files.
    #69987
    Merlin
    Maître des clés

    Je viens de re-regarder le document : je trouve que dissocier les noms de jour (en dur, dans le fond de page) et les dates (dans des champs de formulaire) est source d’erreur car rien ne vérifie la concordance entre date et jour.

    À mon avis il vaudrait mieux n’utiliser que des dates longues (avec le nom du jour) dans les champs.

    😎

    #69988
    bebarth
    Maître des clés

    Voici ma version qui vérifie que la date entrée est bien un lundi !

    Le calcul de date est en script de document.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #69990
    Merlin
    Maître des clés

    🙌🙌🙌

    👏👏

    👍

    #69991
    SEBCOLINI
    Participant

    Un grand merci à tous ! Ça marche !
    🙏🙏🙏🤩🤩🤩

    #70257
    michel c.
    Participant

    Bonjour, je relance ce fil car il y a un truc qui me chiffonne avec ce fichier…

    Au travail, nous avons opté pour un autre logiciel qu’adobe DC pour des raisons financières.

    Jusqu’à présent tous les formulaires fonctionnaient aussi bien sur adobe reader DC que sur notre logiciel.

    Mais là, c’est le 1er fichier qui me pose un problème (la même date s’affiche dans tous les champs)

    Ensuite, j’ai essayé de rajouter les champs manquants pour les semaines 3 à 6 en copiant les scripts et là, même sur adobe reader DC cela ne marche plus, certaines dates sont incohérentes.

    Bref, je sèche un peu là….

     

    Attachments:
    You must be logged in to view attached files.
    #70260
    michel c.
    Participant

    Et le fichier modifié :

     

    Merci

    Attachments:
    You must be logged in to view attached files.
    #70271
    bebarth
    Maître des clés

    bonjour,
    À part qu’il y a une erreur de dénomination des champs à partir de “date.10” (existe 2 fois), le script fonctionnait.
    Sauf qu’il est en script de calcul de tous les champs et est donc exécuté au moindre évènement !

    Essaie donc avec ce nouveau fichier. Le champ “laDate” n’est plus au format Date, mais il y a un script de touches personnalisé qui ne permet que de frapper des dates correctes et qui vérifie que la date est bien un lundi. Impossible de même frapper une date incorrecte (un 31 avril par exemple ou le 29 février d’une année non bissextile).

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #70297
    michel c.
    Participant

    Bonjour, j’ai testé et cela fonctionne sur Adobe mais toujours pas sur notre logiciel.

    J’essaye de comprendre…

    J’ai affecté le script initial à un bouton en le modifiant un peu (un champ permet de saisir le nombre de jours de décalage pour afficher la date à n+le nombre de jours) : j’ai demandé à afficher sur la console les variables pour voir ce qui ne va pas.

    Donc pour la date du 25/03/2030 avec 10 jours de décalage, la console affiche ceci :

    le numéro du jour extrait de la date saisie (jour) → 25
    le numéro du mois extrait de la date saisie (mois) → 03
    l’année extrait de la date saisie (annee) → 2030
    le nombre de jours de décalage (nb) → 10
    la date saisie (d) → Mon Mar 25 2030 00:00:00 GMT+0100 (Paris, Madrid)
    le résultat du calcul (d.getTime()+(nb*24*3600*1000)) (variable n) → 1901487600000
    la date calculée avec le décalage (util.printd(“dd/mm/yyyy”, new Date())) → 05/01/2022

    C’est sur cette ligne que ça cloche ; quelle que soit la date choisie, et le nombre de jours de décalage j’ai cette date du 5/01/22

    Attachments:
    You must be logged in to view attached files.
    #70313
    michel c.
    Participant

    Même problème sur le dernier fichier proposé. J’ai juste ajouté un bouton pour afficher les valeurs sur la console.

    Je me demandais si il n’y avait pas une solution pour contourner ce problème. Pour cela je voulais savoir à quoi correspond la variable n (il me semble que c’est l’intervalle de temps en millisecondes entre la date décalée et le 1er janvier 1970) mais je ne suis pas sûr.

     

    Attachments:
    You must be logged in to view attached files.
    #70317
    Merlin
    Maître des clés

    “j’ai testé et cela fonctionne sur Adobe mais toujours pas sur notre logiciel. J’essaye de comprendre…”

    A priori la réponse est simple (et peu plaisante) : ce logiciel ne supporte pas toutes les fonctionnalités d’ECMAScript.

    Voir : https://www.abracadabrapdf.net/format_pdf/normes_iso_et_pdf/norme-iso-ecmascript-for-pdf/

    #70320
    bebarth
    Maître des clés

    bonjour,

    (util.printd(« dd/mm/yyyy », new Date())) → 05/01/2022 C’est sur cette ligne que ça cloche ; quelle que soit la date choisie, et le nombre de jours de décalage j’ai cette date du 5/01/22

    Il faut écrire : util.printd(« dd/mm/yyyy », new Date(n)); sinon c’est le jour actuel qui est pris en compte !

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 années et 3 mois par bebarth.
    #70322
    michel c.
    Participant

    Bonjour, entre temps j’ai réussi à faire quelque chose qui fonctionne (avec l’aide du net) → voir en pièce jointe

     

    bonjour,

    michel c. wrote:
    (util.printd(« dd/mm/yyyy », new Date())) → 05/01/2022 C’est sur cette ligne que ça cloche ; quelle que soit la date choisie, et le nombre de jours de décalage j’ai cette date du 5/01/22
    Il faut écrire : util.printd(« dd/mm/yyyy », new Date(n)); sinon c’est le jour actuel qui est pris en compte ! @+

    Je vais essayer d’intégrer cela pour voir ce que ça donne.

    Merci

    • Cette réponse a été modifiée le il y a 2 années et 3 mois par michel c..
    Attachments:
    You must be logged in to view attached files.
    #70327
    michel c.
    Participant

    Je viens de regarder, c’est ce qui est fait dans le script mais en passant par  la variable oDate

Affichage de 16 réponses de 1 à 16 (sur un total de 16)
  • Vous devez être connecté pour répondre à ce sujet.