Donnez vie à vos documents numériques !
 

Enlever 1 heure dans un champ

abracadabraPDF Forums PDF – Général Enlever 1 heure dans un champ

  • Créateur
    Sujet
  • #72337
    jctremblay
    Participant

    Bonjour,

    J’ai un PDF qui calcule le total de deux champs au format HH:MM. J’ai utilisé deux scripts de document trouvé/développé ici dans ce forum (HM_Format et Times2Num).

    Le code de ces deux script est dans le PDF en pièce jointe.

    J’ai maintenant besoin de soustraire automatiquement 1h lorsque le total est plus de 6h.

    Ou, alternativement, soustraire 1h si une case à cocher est utilisée en regard de ces champs.

    Un coup de main serait apprécié. Je suis perdu…

    • Ce sujet a été modifié le il y a 2 semaines et 4 jours par jctremblay.
    Attachments:
    You must be logged in to view attached files.
Affichage de 4 réponses de 1 à 4 (sur un total de 4)
  • Auteur
    Réponses
  • #72342
    bebarth
    Maître des clés

    bonjour,
    Voici pour moi ! Juste une petite modification de la fonction HM_Format :

    function HM_Format() {
    var enminutes=Math. round(somme/60)
    // Heures
    var heures=Math.floor(enminutes/60);
    // Minutes
    var minutes=((enminutes/60)-heures)*60;

    // Suppression d'une heure
    if (heures>6) heures--;
    // ou
    // if (this.getField("caseAcocher").value!="Off") heures--;
    //

    event.value=util.printf("%,302.0f", heures)+":"+util.printf("%,302.0f", minutes);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #72355
    jctremblay
    Participant

    Merci bebarth!

    Les deux options fonctionnent. L’option de case à cocher est la plus pertinente pour mes besoins. Par contre, j’ai besoin que chacune des lignes de champs (start.x, end.x, Duree.x) possède leur propre case à cocher et non pas une qui affecte tout les champs. Serait-e possible de spécifier la caseAcocher dans le champ de calcul, tout en gardant l’ajout dans le script de document? Le caseAcocher enleveras 1h quand cocher, remettras une heure quand décocher.

    Merci!
    Qui a besoin de ChatGPT quand on a un Bebarth!

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

    bonjour,
    Il faut écrire le script en fonction de l’indice des champs.
    Pour la fonction :
    function HM_Format(ind) {
    var enminutes=Math. round(somme/60)
    // Heures
    var heures=Math.floor(enminutes/60);
    // Minutes
    var minutes=((enminutes/60)-heures)*60;

    if (this.getField("caseAcocher."+ind).value!="Off") heures--;

    event.value=util.printf("%,302.0f", heures)+":"+util.printf("%,302.0f", minutes);
    }

    et pour appeler la fonction :
    event.value= "";
    var somme=Time2Num("hh:mm", this.getField("end.0").value)-Time2Num("hh:mm", this.getField("start.0").value);
    HM_Format(event.target.name.substr(6));

    A noter que tu devrais utiliser la même méthode pour la variable somme.
    Tu devrais également positionner ces scripts en scripts de touche personnalisés des menus déroulants start et end ce qui éviterait que les calculs se fassent après chaque évènement déclenché dans ton formulaire !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #72369
    jctremblay
    Participant

    Merci Bebarth!
    Ça me sembles bon. Je valide…

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