Donnez vie à vos documents numériques !
 

Calcul d’heures dans un formulaire PDF

abracadabraPDF Forums PDF – Général Calcul d’heures dans un formulaire PDF

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45306
    fokusse
    Membre

    Bonjour à tous,

    Je vous écris ce post afin de demander votre aide ^^ .

    Pour commencer je suis novice en la matière, c’est la première fois que je me trouve à créer un formulaire en PDF et encore plus d’avoir à faire du JavaScript .
    Ce que je souhaite est plutôt simple je pense, seulement après plusieurs heures de recherches j’ai l’impression de tourner en rond et je ne sais par où commencer , je pense que c’est mon plus gros problème.

    Voici le formulaire en question :

    1448373969-okl.jpg

    Je vous explique un peu, l’utilisateur rentre la date et l’heure de son départ (dans deux champs différents) et idem pour l’arrivée ainsi que son temps de pause. J’aimerais avoir dans le champ “Total” de la ligne le résultat de Heure d’arrivée – heure de départ – temps de pauses. Je précise que l’heure est en format heure HH:MM et la date en format Date dd/mm/yyyy

    J’ai compris que je devais avoir tout à la même unité afin de pouvoir procéder à mon calcul , cependant je ne sais comment fusionner les valeurs de Date et d’heure pour avoir au final (Date+Heure de départ et Date+Heure d’arrivée)

    J’ai cru comprendre qu’il fallait que je passe par getTime().

    Tout les exemples que j’ai pu trouver sur internet sont avec des dates déjà définies, cependant moi je ne sais pas qu’elle date va rentrer l’utilisateur et je suis donc bloqué.
     

    Merci d’avance pour vos réponses et votre aide, je vous souhaite une bonne journée malgré ce froid ;)

Affichage de 16 réponses de 1 à 16 (sur un total de 16)
  • Auteur
    Réponses
  • #60007
    fokusse
    Membre

    Désolé du double post mais je n’ai pas trouvé le bouton modifier :/ .

    J’ai oublié hier de vous montrer ce que j’avais commencer à faire , je rappelle encore une fois que je suis complètement novice en la matière et que c’est une ébauche  ^^

    Il faut que j’arrive également à retourner le résultat de la fonction dans le champ ” total ”

    function diffTemps()
    {
    var Date1 = new Date(this.getField(“Date DateRow1”).value,this.getField(“Heure TimeRow1”).value);
    var Date2 = new Date(this.getField(“Date DateRow1_2”).value,this.getField(“Heure TimeRow1_2”).value);
    var Date3 = document.getElementById(“Pause BreakRow1”).value;
    var msdiff = Date2.getTime() – Date1.getTime() – Date3.getTime();
    var secDiff = hourDiff / 1000;
    var minDiff = hourDiff / 60 / 1000;
    var hDiff = hourDiff / 3600 / 1000;
    return ;
    }

    var total = this.getField(“Total TotalRow1_2”);
    total.value =”(RésultatFonction”;

    #60008
    Merlin
    Maître des clés

    Bonjour et bienvenue.

    Je n’ai pas le temps de répondre en détail aujourd’hui mais je te laisse disséquer les deux exemples ci-joints.
    La seule petite difficulté des scripts anglo-saxons c’est qu’il faut adapter les format de date si on veut utiliser le format français (jj/mm/yyyy) ou le format international ISO (yyyy-mm-jj).
    :Smiley15:

    Désolé du double post mais je n’ai pas trouvé le bouton modifier

    Je crois qu’il faut avoir déjà posté au moins cinq fois pour le voir apparaitre, ou quelque chose comme ça…

    #60009
    Merlin
    Maître des clés

    A propos des formats de date.  :Smiley08:

    iso_8601.png

    ==> http://www.xkcd.com/1179/

    #60010
    alex
    Participant

    Bonjour à tous,

    Sur cette maquette le script est un script de calcul est associé au champ “TotalTemps”.
    Une boucle balaye les lignes de saisies et fait les calculs souhaités. La difficulté provient du fait que la saisie du jour est séparée de celle de la date ce qui conduit à reconstituer les objets Date(). Pour cela on décompose les saisies en tables par la méthode split() et on récupère les morceaux pour générer un objet Date.
    Pour voir les calculs ouvrir la console sous Acrobat PRO.
    Faites des tests avec des missions démarrant à une date donnée et finissant un autre jour.
    Pour une application plus PRO, il faudra aller un peu plus loin dans l’analyse des saisies.

    J’ai choisi de garder les formats Adobe !

    #60011
    fokusse
    Membre

    Merci à vous pour ces réponses ,

    @Merlin Pas de soucis , je vais déjà commencer par étudier ce que vous m’avez transmis .

    @Alex Je ne dispose pas de Acrobat PRO , et ducoup quand je fais clique droit /propriétés je ne vois aucun script de calcul sur le champ TempsTotal et le pdf rempli semble ne pas fonctionner , Est-ce normal ?

    #60012
    Merlin
    Maître des clés

    Il faut impérativement Acrobat Pro (payant) ou Scribus (gratuit) pour pouvoir JavaScripter dans les formulaires PDF.
    Acrobat Reader c’est fait juste pour afficher, remplir, commenter, envoyer, signer et imprimer des PDF créés par ailleurs.
    Voir : http://abracadabrapdf.net/forum/index.php/topic,2160.msg11116.html#msg11116

    :idee:

    #60013
    Merlin
    Maître des clés

    Sur cette maquette le script est un script de calcul est associé au champ “TotalTemps”…

    Encore une fois :  :bravo:  :bravo:    :bravo:
    :Smiley01:

    #60014
    fokusse
    Membre

    Je n’ai pas Acrobat Reader mais bien Adobe Acrobat Standard X , j’ai réussi a faire 2 , 3 trucs en javascript sur mon formulaire , je ne comprend pas pourquoi tu me dit qu’on peux pas faire de javascript sans la version Pro :/

    #60015
    alex
    Participant

    Ma maquette fonctionne indifféremment sous Acrobat PRO, Acrobat Standard et Acrobat Reader ou Adobe Reader à partir des versions 10.
    L’usage d’Acrobat Pro est conseillé pour ouvrir le capot et aller plus loin et comprendre le fonctionnement (le script).
    Bonne soirée.

    #60016
    Merlin
    Maître des clés

    Je n’ai pas Acrobat Reader mais bien Adobe Acrobat Standard X , j’ai réussi a faire 2 , 3 trucs en javascript sur mon formulaire , je ne comprend pas pourquoi tu me dit qu’on peux pas faire de javascript sans la version Pro

    – Parce-que la version Standard n’existe pas sur Mac OS et j’ai tendance à oublier son existence.  :geek:

    – Parce-que si j’en crois cette page (dernière ligne tout en bas), les fonctions de formulaire et de JavaScript n’existent pas dans la version Standard, comme les fonctions prépresse et quelques autres.
    ==> https://acrobat.adobe.com/fr/fr/pricing/pricing-compare-plans.html

    Mais bon… Je n’ai jamais utilisé Acrobat Standard et à l’évidence il y a des erreurs sur cette page (par exemple il n’y a pas de coche pour Reader en face des Tampons, alors qu’il fait ça très bien).
    :doute:

    #60017
    fokusse
    Membre

    J’ai télécharger une version d’éval de Acrobat DC PRO et ta maquette est vraiment géniale c’est exactement ce que je voulais ! Maintenant je vais essayer de repasser en heures le résultat  :geek:

    Merci beaucoup , car vu la complexité du code je n’y serais jamais arrivé sans votre aide ^^ .

    Je vous tiens au courant de mon incorporation du code dans mon pdf ;)

    #60018
    Merlin
    Maître des clés

    J’ai télécharger une version d’éval de Acrobat DC PRO

    Il te reste 29 jours pour finaliser ton document…
    :Smiley08:

    #60019
    fokusse
    Membre

    Il te reste 29 jours pour finaliser ton document…
    :Smiley08:

    C’est exactement sa mdr , Tic … Tac …  :siffle:

    Juste une petite question , si je place ton code dans un de mes champs et que j’appelle la formule dans le champs que je veux sans le mettre dans le script Javascript du document Est-ce que cela peut également marcher ou il faut absolument qu’il soit placé comme chez toi @alex ?

    #60020
    alex
    Participant

    Désolé de répondre si tard mais oui le script peut-être embarqué en totalité par le champ TotalTemps (onglet “Calcul” script de calcul personnalisé) sans recourir à un script de document.
    Ce qui doit concorder, c’est le nom des champs DepartDate.xx , DepartHeure.xx, ArriveeDate.xx, ArriveeHeure.xx, Pause.xx bien sûr.
    Par contre on peut augmenter librement le nombre de lignes (plus de 4 donc en numérotant à partir de 0).

    #60021
    fokusse
    Membre

    Je suis également désolé de répondre aussi tard mais je suis en alternance , cette semaine je suis donc de retour sur ce fameux formulaire avec en plus l’échéance de ma version d’essai qui se rapproche à grands pas ^^ . Grâce à ton message j’ai enfin compris d’où venait mon erreur . Je n’appelais pas la fonction calcul dans le champ “TotalTemps” … Quand je vous disais que j’étais novice … Je vous remerci beaucoup pour l’aide que vous m’avez apporté , cependant j’aurais besoin d’un autre petit coup de main , si ce n’est pas trop vous demandé bien sûr  :Smiley08:

    Voici la deuxième partie de mon pdf  :

    1449582134-partie-2.png

    Il est toujours question d’un calcul d’heure cependant cette fois-ci il y a des restrictions et je ne sais comment m’y prendre , je vous explique .
    L’utilisateur rentre la date , l’heure de son arrivée et son heure de départ . Ce nombre d’heure doit figurer dans le champ total .
    Ensuite l’utilisateur doit détaillé le temps qu’il a passé dans chaque catégorie mais le cumul des temps des catégories ne doit pas dépasser le nombre contenu dans la case Total .

    J’espère que vous m’aiderez ^^ Salut à tous et passez une bonne après-midi .

    #60022
    fokusse
    Membre

    Pour l’histoire de mon deuxième tableau , je pense pourvoir réutilisé des bouts de code à Alex .

    1449654516-tablo-2-avec-champs.png( Pour le noms des champs ;) )

    Je pensais à faire quelque chose comme sa :

    delta=(De fromRow1.getTime()-A toRow1.getTime())/1000/60/60;
    this.getField(“Total TotalRow1_2.”+ligne).value=delta;

    Ce qui permettrait d’avoir en heure l’écart entre les deux heures saisies par l’utilisateur et serait affiché dans le champ total de la même ligne .

    Jusqu’ici tout va bien ( Je crois :$ )

    Maintenant il faut que l’utilisateur rentre le détail du temps passé dans chaque catégories . Et il ne faut pas que le cumul de temps des catégories soit supérieur au champ total de la même ligne . Pour ce faire , j’ai pensé à créer un objet regroupant le cumul des temps des catégories et en le comparant simplement avec mon nombre d’heures totales .
    Cela vous semble t-il juste ?

    Merci encore une fois pour vos réponses .

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