Donnez vie à vos documents numériques !
 

Valeur d’un champ, en fonction d’un autre…

abracadabraPDF Forums PDF – Général Valeur d’un champ, en fonction d’un autre…

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46663
    Nico
    Membre

    Bonjour à tous. Voici quelques temps que j'utilise Acrobat DC pour réaliser des formulaires (assez simplistes) et que je trouve une mine d'information très précieuses sur ce forum, alors merci pour votre investissement.

    Cela étant, j'ai un soucis aujourd'hui, pour lequel il semble qu'il n'y ait pas de réponse publiée… pas encore.

    Voilà, je cherche à ce qu'un champ se remplisse automatiquement en fonction de la valeur d'un autre champ. Le hic c'est que la valeur de ce champ dépendra de la fourchette dans laquelle se trouve la valeur du premier. Voilà donc mon problème: Réaliser un script permettant d'afficher dans ce champ une valeur plus ou moins élevée, en fonction de la valeur affichée dans le premier champ (qui lui, totalise les valeurs de différentes check box), en se basant sur une échelle définie.

    Merci d'avance pour l'aide que vous pourrez m'apporter.

Affichage de 5 réponses de 1 à 5 (sur un total de 5)
  • Auteur
    Réponses
  • #69654
    Prop0f0L
    Participant

    Bonjour,

    Je trouve cela intéressant, je répond à la fois pour suivre les réponses des pros, et pour apporter une très mince contribution (n'étant pas suffisamment qualifié).
    Le code à placer dans le 2e champ :

    var f = this.getField(“PremierChamp”).value;
    if (f>5)

    {
    (this.getField(“DeuxiemeChamp”).value = “le chiffre est supérieur à 5”);
    }
    else
    {
    (this.getField(“DeuxiemeChamp”).value = “le chiffre est inferieur à 5”);
    }

    Avec ceci, on crée une variable (je ne sais même pas si c'est indispensable  :doute: ) appelée “f” à qui on affecte la valeur contenue dans le champ intitulé “PremierChamp”. On teste ensuite si f est strictement supérieure à 5 ou non.
    Si tel est le cas, on rempli le champ “DeuxiemeChamp” par la valeur souhaitée (pour vous ce sera un chiffre, ici on fait écrire “le chiffre est supérieur à 5”).

    Il faudrait rajouter de nouvelles conditions pour tester si le chiffre est présent dans une fourchette (supérieur à 5 et inférieur à 10), mais à partir de là je m'abstient car mon code marche moyennement…
    Hâte d'avoir la réponse d'un qualifié  :extra:

    #69655
    Nico
    Membre

    Bonjour,

    merci pour cette première réponse que je vais tenter de mettre en oeuvre de ce pas et reviendrai dire ce qu'il en est.

    edit: Ca marche mais ne me permet pas d'avoir plus de 2 niveaux à mon échelle. Par exemple, on est au dessus de 5 ou au dessus de 5… J'aimerai pouvoir avoir plus de 2 niveaux. Plus de 10, entre 10 et 5, Entre 4 et 0, moins de 0 et avoir dans le second champ, une valeur correspondant à chaque niveau pour le premier champ.

    J'a essayé de “bidouiller” sur la base de ce bout de script, mais sans succès.  :Euuuh:

    edit2: EUREKA!!!

    Oui, bon, c'est peut être un détail pour vous, mais pour moi ça veut dire beaucoup…

    j'ai mis ça, et ça marche!

    var f = this.getField(“Text8”).value;
    if (f>11)
    {
    (this.getField(“Text9.0”).value = “- de 25”);
    }
    if (f<12)
    {
    (this.getField(“Text9.0”).value = “25”);
    }
    if (f<6)
    {
    (this.getField(“Text9.0”).value = “25 à 30”);
    }
    if (f<1)
    {
    (this.getField(“Text9.0”).value = “+ de 30”);
    }

    Merci encore pour ce que vous faites sur ce forum!

    #69656
    Merlin
    Maître des clés

    Bonjour

    La rubrique Support & Assistance ne concerne que les utilitaires (gratuit) fournis par le site abracadabraPDF, le reste se passe ici.  :idee:

    Ton script peut être amélioré ainsi :
    – un peu d'Unicode pour la compatibilité, voir : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/pdf-javascript-et-unicode/
    – “else if” fait que le script s'arrêtera dès qu'il aura trouvé une concordance au lieu de continuer à tester toutes les conditions.
    – le “else” final sert à gérer tous les autres cas indéterminés et à vider le champ texte, qui sinon conserverait la valeur précédente.
    – pourquoi mettre un champ en variable et pas l'autre ? Pour le coup ça ne fait pas une grosse différence mais ça permet aux scripts de s'exécuter beaucoup plus vite et qui simplifie la maintenance.


    var f = this.getField(“Text8”).value;
    var g = this.getField(“Text9.0”).value;

    if (f>11) {
    (g = “- de 25”);
    }
    else if (f<12) {
    (g = “25”);
    }
    else if (f<6) {
    (g = “25 u00E0 30″);  // u00E0 = “à” en Unicode
    }
    else if (f<1) {
    (g = “+ de 30”);
    }
    else {
    g = “”;
    }

    Modif : voir ci-dessous.

    #69657
    Nico
    Membre

    Merci à vous Merlin, d'abord d'avoir pris soins de déplacer mon sujet dans la bonne section (toutes mes excuses) et aussi d'avoir proposé cette amélioration de mon code plus que maladroit. Grâce à vous j'ai découvert unicode c'est un petit plus pour ma culture informatique…

    Cela dit, inexplicablement, la valeur du champ à modifier reste invariablement “+ de 30”, et ce quelle que soit la valeur de la variable f…  :doute:

    #69658
    Merlin
    Maître des clés

    La valeur du champ reste bloquée à la valeur précédente parce-que le script ci-dessus ne fonctionne pas.
    Ce n'est pas la 1re fois que je me fais avoir : il ne faut pas mettre .value en variable quand on veut l'assigner, ça ne fonctionne qu'en lecture.    :oh:  :geek:
    Par ailleurs j'ai aussi changé l'ordre des conditions, sinon dans certains cas certaines ne s'exécuteront pas.

    var f = this.getField(“Text8”).value;
    var g = this.getField(“Text9.0”);

    if (f>11) {
    (g.value = “- de 25”);
    }
    else if (f<1) {
    (g.value = “+ de 30”);
    }
    else if (f<6) {
    (g.value = “25 u00E0 30”);  // u00E0 = “à” en Unicode
    }
    else if (f<12) {
    (g.value = “25”);
    }
    else {
      g.value = “”;
    }

    Exemple ci-joint (parce-que cette fois j'ai testé…).

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