Donnez vie à vos documents numériques !
 

Boite de dialogue pour récupérer des valeurs

abracadabraPDF Forums PDF – Général Boite de dialogue pour récupérer des valeurs

  • Créateur
    Sujet
  • #76004
    michel c.
    Participant

    Bonjour, je cherche un scrip qui me permettrait lors du clic sur un bouton d’avoir une boite de dialogue m’invitant à saisir 6 valeurs qui seront par la suite affectée aux variables :HP ; HC ; EJ ; EA ; Reduc et MotifReduc

    Une fois n’est pas coutume, j’ai testé chat GPT pour voir ce que ça donnait. La première proposition fonctionnait mais avec 6 boites de dialogues consécutives.

    J’ai ensuite demandé une modification pour avoir les 6 valeurs saisies dans une seule boite de dialogue et là ça coince.

    Je cherche à modifier ce script pour qu’il fonctionne…

    Merci

    Premier script :

    // Demande à l'utilisateur de saisir 6 valeurs, les stocke dans des variables
    var HP = app.response({
    cQuestion: "Veuillez entrer la valeur de HP :",
    cTitle: "Saisie HP",
    cDefault: ""
    });

    if (HP != null) {
    var HC = app.response({
    cQuestion: "Veuillez entrer la valeur de HC :",
    cTitle: "Saisie HC",
    cDefault: ""
    });

    if (HC != null) {
    var EJ = app.response({
    cQuestion: "Veuillez entrer la valeur de EJ :",
    cTitle: "Saisie EJ",
    cDefault: ""
    });

    if (EJ != null) {
    var EA = app.response({
    cQuestion: "Veuillez entrer la valeur de EA :",
    cTitle: "Saisie EA",
    cDefault: ""
    });

    if (EA != null) {
    var Reduc = app.response({
    cQuestion: "Veuillez entrer le montant de la réduction :",
    cTitle: "Saisie Réduction",
    cDefault: ""
    });

    if (Reduc != null) {
    var MotifReduc = app.response({
    cQuestion: "Veuillez entrer le motif de la réduction :",
    cTitle: "Saisie Motif",
    cDefault: ""
    });

    if (MotifReduc != null) {
    // Facultatif : afficher un résumé
    app.alert(
    "Valeurs saisies :\n" +
    "HP = " + HP + "\n" +
    "HC = " + HC + "\n" +
    "EJ = " + EJ + "\n" +
    "EA = " + EA + "\n" +
    "Réduction = " + Reduc + "\n" +
    "Motif = " + MotifReduc
    );

    // Ici, vous pouvez affecter les valeurs à des champs du PDF si vous le souhaitez, par exemple :
    // this.getField("champ_HP").value = HP;
    // this.getField("champ_HC").value = HC;
    // etc.
    }
    }
    }
    }
    }
    }

     

    2ème script :

    var maBoite = {
    HP: "",
    HC: "",
    EJ: "",
    EA: "",
    Reduc: "",
    MotifReduc: "",

    description: {
    name: "Saisie des valeurs",
    elements: [
    {
    type: "view",
    align_children: "align_fill",
    elements: [
    {
    type: "view",
    align_children: "align_row",
    elements: [
    {
    type: "view",
    width: 250,
    elements: [
    { name: "HP", type: "edit", item_id: "HP" },
    { name: "HC", type: "edit", item_id: "HC" },
    { name: "EJ", type: "edit", item_id: "EJ" }
    ]
    },
    {
    type: "view",
    width: 250,
    elements: [
    { name: "EA", type: "edit", item_id: "EA" },
    { name: "Réduction", type: "edit", item_id: "Reduc" },
    {
    name: "Motif de la réduction",
    type: "edit",
    item_id: "MotifReduc",
    multiline: true,
    height: 60
    }
    ]
    }
    ]
    },
    { type: "gap", height: 20 },
    {
    type: "static_text",
    name: "→ Veuillez remplir tous les champs avant de valider.",
    font: "dialog",
    bold: true
    }
    ]
    }
    ]
    },

    commit: function (dialog) {
    var store = dialog.store();
    this.HP = store["HP"];
    this.HC = store["HC"];
    this.EJ = store["EJ"];
    this.EA = store["EA"];
    this.Reduc = store["Reduc"];
    this.MotifReduc = store["MotifReduc"];
    }
    };

    if (app.execDialog(maBoite) === "ok") {
    app.alert(
    "Valeurs saisies :\n" +
    "HP = " + maBoite.HP + "\n" +
    "HC = " + maBoite.HC + "\n" +
    "EJ = " + maBoite.EJ + "\n" +
    "EA = " + maBoite.EA + "\n" +
    "Réduction = " + maBoite.Reduc + "\n" +
    "Motif = " + maBoite.MotifReduc
    );
    }

     

    Merci

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

    Bonjour

     

    Ça c’est une question pour jctremblay, il est à fond dedans en ce moment !

    😉

    #76007
    jctremblay
    Maître des clés

    Michel, quand j’utilise app.response pour capturer plusieurs données de variable, je demande toujours que les valeurs soient séparées par des virgules. Ce qui donne ceci:

    var toutes_valeurs = app.response({
    cQuestion: "Veuillez entrer les valeurs suivantes séparées par des virgules :\nHP, HC, EJ, EA, Réduction, Motif de réduction\nExemple: 100, 200, 50, 30, 25, Promotion",
    cTitle: "Saisie des valeurs",
    cDefault: ""
    });

    if (toutes_valeurs != null) {
    // Diviser la chaîne en utilisant la virgule comme séparateur
    var valeurs = toutes_valeurs.split(",");

    // Extraire les valeurs individuelles (en supprimant les espaces inutiles)
    var HP = valeurs[0] ? valeurs[0].trim() : "";
    var HC = valeurs[1] ? valeurs[1].trim() : "";
    var EJ = valeurs[2] ? valeurs[2].trim() : "";
    var EA = valeurs[3] ? valeurs[3].trim() : "";
    var Reduc = valeurs[4] ? valeurs[4].trim() : "";
    var MotifReduc = valeurs[5] ? valeurs[5].trim() : "";

    app.alert("Valeurs saisies :\n" +
    "HP = " + HP + "\n" +
    "HC = " + HC + "\n" +
    "EJ = " + EJ + "\n" +
    "EA = " + EA + "\n" +
    "Réduction = " + Reduc + "\n" +
    "Motif = " + MotifReduc);

    }

    #76008
    jctremblay
    Maître des clés

    Pour ce qui est de ton deuxième script. Les item_id doivent absolument être de 4 caractères, ce que n’importe quel IA oublie toujours.

    Une version fonctionnelle ressemble à ceci:

    var d = {
    HP: "",
    HC: "",
    EJ: "",
    EA: "",
    Reduc: "",
    MotifR: "",

    initialize: function(dialog) {
    dialog.load({
    "hp_t": this.HP,
    "hc_t": this.HC,
    "ej_t": this.EJ,
    "ea_t": this.EA,
    "rd_t": this.Reduc,
    "mot": this.MotifR
    });
    },

    commit: function(dialog) {
    var r = dialog.store();
    this.HP = r["hp_t"];
    this.HC = r["hc_t"];
    this.EJ = r["ej_t"];
    this.EA = r["ea_t"];
    this.Reduc = r["rd_t"];
    this.MotifR = r["moti"];
    },

    description: {
    name: "Saisie des valeurs",
    elements: [
    { type: "static_text", name: "HP:" },
    { type: "edit_text", item_id: "hp_t", width: 150 },
    { type: "static_text", name: "HC:" },
    { type: "edit_text", item_id: "hc_t", width: 150 },
    { type: "static_text", name: "EJ:" },
    { type: "edit_text", item_id: "ej_t", width: 150 },
    { type: "static_text", name: "EA:" },
    { type: "edit_text", item_id: "ea_t", width: 150 },
    { type: "static_text", name: "Réduction:" },
    { type: "edit_text", item_id: "rd_t", width: 150 },
    { type: "static_text", name: "Motif:" },
    { type: "edit_text", item_id: "moti", width: 200, height: 40, multiline: true },
    { type: "ok_cancel" }
    ]
    }
    };

    if (app.execDialog(d) == "ok") {
    app.alert("Valeurs saisies :\n" +
    "HP = " + d.HP + "\n" +
    "HC = " + d.HC + "\n" +
    "EJ = " + d.EJ + "\n" +
    "EA = " + d.EA + "\n" +
    "Réduction = " + d.Reduc + "\n" +
    "Motif = " + d.MotifR);
    }

    #76009
    bebarth
    Maître des clés

    bonjour,
    … Après, il faut généralement faire quelques vérifications lorsqu’on appuie sur OK (comme tous les champs doivent être remplis et qu’ils correspondent à quelque chose), sinon généralement cela provoque ensuite des erreurs !

    @+
    😎

    #76010
    michel c.
    Participant

    Oui, c’est ce que je suis en train de mettre au point.

    Merci pour les réponses !

    #76011
    michel c.
    Participant

    J’ai une question à ce sujet : je dois vérifier que le contenu d’un champ soit supérieur au contenu d’un autre. Si c’est le cas, le script doit continuer, dans ce cas pas de problème. Dans l’autre j’aimerais que l’exécution du script s’arrète. Quelle est la commande pour arrêter l’exécution d’un script?

    Merci

    #76012
    Merlin
    Maître des clés

    Il faut utiliser « break » :

    https://www.w3schools.com/jS/js_break.asp

    #76013
    bebarth
    Maître des clés

    bonjour,
    voici un exemple avec quelques vérifications.
    Ici on vérifie que tous les champs de la boite de dialogue sont remplis, que HP est supérieur à HC (supposition) et que à par le champ « Motif » tous les autres champs sont des nombres.
    On peut bien sûr rajouter des vérifications…
    J’ai fait en sorte que le script pour la boite de dialogue soit le plus compréhensible possible. Ici on doit vérifier tous les champs avec la fonction validate ce n’est donc pas indispensable d’utiliser commit (qui valide sans vérification).

    var bbDialogue={
    loadDefaults: function(boiteDialogue) {
    boiteDialogue.load({
    HPtx: "987",
    HCtx: "123",
    redu: "0",
    moti: "Réduction du "+util.printd("dd mmm yyyy", new Date()),
    })
    },
    initialize: function(boiteDialogue) {
    this.loadDefaults(boiteDialogue);
    },
    validate: function(boiteDialogue) {
    var oRslt=boiteDialogue.store();
    HP=oRslt["HPtx"];
    HC=oRslt["HCtx"];
    EJ=oRslt["EJtx"];
    EA=oRslt["EAtx"];
    reduc=oRslt["redu"];
    motif=oRslt["moti"];
    var testOK0=true;
    if (!HP || !HC || !EJ || !EA || !reduc || !motif) var testOK0=false;
    var testOK1=true;
    if (isNaN(HP) || isNaN(HC) || isNaN(EJ) || isNaN(EA) || isNaN(reduc)) var testOK1=false;
    var testOK2=true;
    if (Number(HC)>=Number(HP)) var testOK2=false;
    if (!testOK0) app.alert("Veuillez remplir tous les champs.",3);
    else if (!testOK1) app.alert("A part le motif de réduction, la valeur des autres champs doit être un nombre.",3);
    else if (!testOK2) app.alert("Le montant HP doit être supérieur au montant HC.",3);
    var testOK=testOK0 && testOK1 && testOK2;
    return testOK;
    },
    description: {
    name: "b2Tools",
    elements: [
    {
    type: "view",
    alignment: "align_fill",
    elements: [
    {
    type: "static_text",
    alignment: "align_center",
    char_width: 20,
    char_height: 3,
    name: "Veuillez de remplir\rtous les champs".toUpperCase(),
    font: "dialog",
    bold: true,
    },
    {
    type: "static_text",
    name: "HP",
    font: "dialog",
    bold: true,
    },
    {
    type: "edit_text",
    item_id: "HPtx",
    width: 200,
    },
    {
    type: "static_text",
    name: "HC",
    font: "dialog",
    bold: true,
    },
    {
    type: "edit_text",
    item_id: "HCtx",
    alignment: "align_fill",
    },
    {
    type: "static_text",
    alignment: "align_center",
    char_width: 20,
    char_height: 3,
    name: "Attention,\rHP doit être > à HC",
    font: "dialog",
    italic: true,
    },
    {
    type: "static_text",
    name: "EJ",
    font: "dialog",
    bold: true,
    },
    {
    type: "edit_text",
    item_id: "EJtx",
    alignment: "align_fill",
    },
    {
    type: "static_text",
    name: "EA",
    font: "dialog",
    bold: true,
    },
    {
    type: "edit_text",
    item_id: "EAtx",
    alignment: "align_fill",
    },
    {
    type: "gap",
    height: 5,
    },
    {
    type: "cluster", //
    elements: [
    {
    type: "static_text",
    name: "Montant de la réduction",
    font: "dialog",
    bold: true,
    },
    {
    type: "edit_text",
    item_id: "redu",
    alignment: "align_fill",
    },
    {
    type: "static_text",
    name: "Motif de la réduction",
    font: "dialog",
    bold: true,
    },
    {
    type: "edit_text",
    item_id: "moti",
    multiline: true,
    alignment: "align_fill",
    height: 75,
    },
    ]
    },
    {
    type: "gap",
    height: 15,
    },
    {
    type: "ok_cancel",
    },
    ]
    },
    ]
    }
    };
    if(app.execDialog(bbDialogue)=="ok"){
    this.getField("HP").value=HP;
    this.getField("HC").value=HC;
    this.getField("EJ").value=EJ;
    this.getField("EA").value=EA;
    this.getField("reduc").value=reduc;
    this.getField("motif").value=motif;
    }

    @+
    😎

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

    Merci beaucoup, j’ai intégré et adapté ton script et ça fonctionne. Sauf un bug mais qui je pense n’est pas lié à ton script.

    A la ligne 175 : this.getField(« montRed1 »).value=reduc;

    la valeur saisie dans la boite de dialogue pour le montant de la réduction devrait grâce à ce code être la nouvelle valeur du champ montRedu1

    Or, quelle que soit la valeur saisie, ce champ a toujours la même valeur.

    Je dois avoir un conflit avec autre chose…

    Ps : j’ai désactivé les dernières lignes pour m’assurer que le problème ne venait pas d’ailleurs…

    Le script est affecté au bouton Index à la page2

    Merci

    • Cette réponse a été modifiée le il y a 2 semaines et 2 jours par michel c..
    Attachments:
    You must be logged in to view attached files.
    #76021
    bebarth
    Maître des clés

    bonjour,
    Après avoir cherché un certain temps, j’avoue que je n’ai pas trouvé le pourquoi.
    Par contre, j’ai trouvé que ça fonctionne si tu remplis en premier ce champ :
    ...
    if(app.execDialog(bbDialogue)=="ok"){
    this.getField("montRed1").value=reduc;
    this.getField("Index1HP").value=HP;
    this.getField("Index1HC").value=HC;
    this.getField("i1cP").value=EJ;
    this.getField("i1c2").value=EA;
    this.getField("reduc1").value=motif;
    }
    ...

    J’en ai profité pour faire quelques modifications à ta boite de dialogue (si ça te convient)…

    @+
    😎

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

    Les modifications sont Super, j’avais pensé à renommer les titres des éléments de la boîte de dialogue mais je n’avais pas pensé aux titres de rubriques ni aux consignes avec les valeurs mini à saisir en dessous (d’ailleurs je ne savais pas comment faire ni si c’était possible)…

    Et maintenant ça fonctionne pour la saisie du montant de la réduction. Même si je saisis le montant à la fin…

    Je vais faire quelques dernières vérifications avant d’utiliser ce fichier. Les codes sont mal fichus car j’avais fait ce formulaire il y a longtemps. J’avais la flemme de tout recommencer. Si je devais le refaire, je le simplifierai, à commencer par les noms des champs…

    En tout cas, tu es bien meilleur que chat GPT et de loin.

    Je ne sais pas si c’est le lieu ou (je n’ai pas vu de rubrique pour cela dans le forum) mais j’ai vu une vidéo qui fait réfléchir sur les prises de décisions des IA.

    Si ça intéresse, je peux poster le lien

    Un grand merci en tout cas

    • Cette réponse a été modifiée le il y a 2 semaines et 2 jours par michel c..
    #76026
    jctremblay
    Maître des clés

    «En tout cas, tu es bien meilleur que chat GPT et de loin… »

    Je suis bien d’accord, Bebarth est imbattable!
    Je veux une greffe de son cerveau.

    #76027
    Merlin
    Maître des clés

    Je crois que jctremblay sera d’accord avec moi : « intelligence artificielle » est une mauvaise traduction de l’anglais (comme Réseaux sociaux qu’on aurait du traduire par Réseaux relationnels).

    En anglais américain « intelligence » signifie plutôt « traitement de l’information » ou « renseignement », comme dans CIA (Central Intelligence Agency).

    Un peu comme quand en français on parle « d’intelligence avec l’ennemi ».

    #76029
    michel c.
    Participant

    Si ces problématiques vous intéressent, la vidéo dont je parlais est très intéressante : L’horreur existentielle de l’usine à trombones.

     

    #76030
    Merlin
    Maître des clés

    Tu n’as pas posté le lien vers la vidéo

    😉

    #76031
    michel c.
    Participant

    Ah oui…

    Vidéo

    #76032
    Merlin
    Maître des clés

    Intéressant, mais j’ai failli zaper avant la fin de l’intro (un peu trop longue) !

     

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

    Oui, javais la même référence en tête, on est en plein dans Skynet

    #76035
    Merlin
    Maître des clés

    Ce soir j’étais plutôt dans « Légion », j’ai regardé Terminator Dark Fate.

    😉

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