Donnez vie à vos documents numériques !
 

Calcul de produit et formulaire

abracadabraPDF Forums PDF – Général Calcul de produit et formulaire

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46177
    jeffda1979
    Membre

    Bonjour à tous !
    Peut-être auriez-vous une idée, et la gentillesse de la partager avec moi…
    1)J’ai crée un formulaire avec 10 cases à cocher.
    2)chaque case a une valeur d’exportation différente
    3)Une case total répertorie le total du produit de ces valeurs.
    Sauf que… Acrobat calcule uniquement le produit si l’utilisateur coche “toutes” ces cases….or l’utilisateur peut très bien décider de cocher la case 1,4,6 et 8 et pas les autres… et si il fait çà et bien acrobat ne le calcule pas…. Ce qui est étrange c’est que pour les additions cela ne pose aucun problème…

    Avez vous une idée, astuce ??? Je suis bloquééééééé

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #66501
    bebarth
    Maître des clés

    bonjour,
    Pourrais-tu partager ton fichier, ce serait plus simple !
    Tu dois certainement avoir une erreur renvoyée par la console…
    Les cases ne renvoient leur valeur que si elles sont cochée.
    Vu que tu veux un produit, il faudrait qu’elles renvoient 1 si elles ne sont pas cochées, et pour ça il faut un petit script.
    @+
    :bonjour:

    #66502
    Merlin
    Maître des clés

    Bonjour et bienvenue

    2)chaque case a une valeur d’exportation différente

    Le problème le plus courant avec la case à cocher vient du fait que, pour plein de bonnes raisons, la valeur renvoyée quand elle n’est pas cochée est “Off“, qui est une valeur non numérique, donc traitée comme “NaN” (Not a Number : qui n’est pas un chiffre) lors des calculs, qui donc ne peuvent pas se faire correctement.

    Si on n’est pas certain que la valeur reçue soit vraiment numérique il vaut mieux protéger le script de calcul en détectant préalablement la valeur NaN :

    Code:
    if (!isNaN(this.getField(“nomDeLaCase”).value) {
    // script de calcul
    }

    Ou en ne calculant que si la case est cochée :

    Code:
    if (this.getField(“nomDeLaCase”).value != “Off”) {
    // script de calcul
    }

    3)Une case total répertorie le total du produit de ces valeurs.

    Quel calcul ou script utilise-t-elle ?
    As-tu un exemple à partager ?

    #66503
    Merlin
    Maître des clés

    Les cases ne renvoient leur valeur que si elles sont cochée.

    C’est vrai pour les calculs intégrés dans l’onglet Calculs d’Acrobat mais pas pour les calculs en JavaScript
    :mur:

    #66504
    jeffda1979
    Membre

    Je vais poster un exemple de ce que je souhaite faire le fichier initial étant confidentiel.

    #66505
    jeffda1979
    Membre

    Voila un bout du fichier. La ligne qui me pose problème est la ligne F = Ligne D x Ligne E. je n’arrive pas à faire fonctionner le calcul pour chaque case cochée sur la ligne E. Je voudrai que quelque soit la case cochée sur la ligne E le calcul se fasse… et çà je ne sais pas l’écrire :(  Actuellement je suis obligé de choisir une case en particulier (le 4 sur mon test).

    #66506
    bebarth
    Maître des clés

    bonsoir,
    Voici un petit script de calcul :

    Code:
    var total=0;
    for (var i=0; i    if (this.getField(“Case à cocher “+(177+i)).value!=”Off”) var total=total+i;
    }
    event.target.value=total*this.getField(“Total tête”).value;

    Attention : Il ne faut pas mettre d’espace(s) ni de caractères spéciaux ou accentués dans les noms des champs.
    @+
    :bonjour:

    #66507
    Merlin
    Maître des clés

    :bravo:

    InDesign* permet de faire de beaux champs de formulaire avec des effets sympas mais il montre ses limites lors de l’exportation en PDF : dans ce document les cases à cocher de chaque rangée devraient avoir exactement le même nom pour fonctionner ensemble (1 seul choix possible) et effectuer des calculs intégrés à Acrobat Pro*.
    Et quand on change leur nom, ou d’autres choses, avec Acrobat Pro elles perdent leur aspect*.

    Merci à JavaScript de pouvoir gérer les situations les plus tordues !

    * Si ces deux logiciels n’étaient pas fait par le même éditeur on comprendrait, mais là…    :mur:

    #66508
    jeffda1979
    Membre

    Merci Bebarth, peux-tu me traduire ta ligne de code en français je ne suis pas familier du js, j’aimerai comprendre ce que je fais afin de progresser :)

    #66509
    bebarth
    Maître des clés

    bonjour,

    …peux-tu me traduire ta ligne de code en français…

    Code:
    // initialisation de la variable “total”
    var total=0;
    // pour chaque indice de 0 à 6
    for (var i=0; i    // si la case à cocher 177+indice (donc de 177 à 183) est cochée, la variable total est incrémentée de la valeur “indice” (0 à 6)
        if (this.getField(“Case à cocher “+(177+i)).value!=”Off”) var total=total+i;
    }
    // la valeur de cette case (Total tête x surface tête) devient égale à la valeur de la variable “total” x la valeur du champ “Total tête”
    event.target.value=total*this.getField(“Total tête”).value;

    @+
    :bonjour:

    #66510
    jeffda1979
    Membre

    Merci à tous, pour votre aide précieuse ! Mon problème est résolu ! A bientôt

    #66511
    Merlin
    Maître des clés

    :bonjour:

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