Donnez vie à vos documents numériques !
 

bebarth

Toutes mes réponses sur les forums

Affichage de 99 réponses de 1 à 99 (sur un total de 3,195)
  • Auteur
    Réponses
  • en réponse à : Chiffre en lettres avec JavaScript #74846
    bebarth
    Maître des clés

    bonjour,

    je ne sais pas s’il y a eu d’autres versions depuis.

    Il y a une version Suisse & Belgique…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Dupliquer un modèle visible et Réinitialiser #74841
    bebarth
    Maître des clés

    bonjour,

    J’ai essayer en ajout ceci suggérer par Thom Parker mais cela ne fonctionne pas. var strPrefix = event.targetName.split(“.”).splice(0,2).join(“.”); this.resetForm(strPrefix);

    Ça fonctionne si ce script est sur la page des champs à réinitialiser, mais pour ton exemple, le bouton ne l’est pas.
    Vu que la syntaxe des préfixes est toujours la même et que tu ajoutes la page dupliquée en fin de document, tu peux écrire :
    this.getTemplate("page").spawn(this.numPages, true, false);
    var t=this.templates;
    var strPrefix="P"+(this.numPages-1)+"."+t[0].name;
    // ou directement var strPrefix="P"+(this.numPages-1)+".page";
    this.resetForm(strPrefix);
    this.removeField(strPrefix+"."+event.target.name);

    Ici j’ai supprimé le bouton sur la page dupliquée.

    @+
    😎

    P.S. : Dans le script de Thom, “event.targetName” est mal écrit. Ça devrait être “event.target.name” !

    • Cette réponse a été modifiée le il y a 2 jours et 2 heures par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Léger bug sur mon formulaire #74829
    bebarth
    Maître des clés

    Après avoir cherché un certain temps, je me suis aperçu que :
    Lorsque l’on crée une case à cocher sur Acrobat, sa valeur par défaut est “Off” (décochée).
    Apparemment, avec ton logiciel, sa valeur par défaut lors de sa création est “undefined” (décochée), et lorsqu’on la coche puis décoche sa valeur est “Off”.

    Pour que ça fonctionne sans modifier le script, il faut donc cocher/décocher toutes les cases à cocher avant de les utiliser (idem pour les boutons radio je suppose), ou lancer ce script :
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton") && this.getField(nomChamp).value=="undefined") this.getField(nomChamp).value="Off";
    }

    Pour info, ça ne fonctionnait pas non plus dans le premier fichier que tu as partagé…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Léger bug sur mon formulaire #74825
    bebarth
    Maître des clés

    bonjour,
    Il faut vérifier toutes les réponses possibles séparées par “|” :
    ...
    this.getField("Q."+n+"."+a).readonly=true;
    // BB
    var rep=this.getField("R."+n+"."+a).valueAsString.split("|");
    var OK=0;
    for (var k=0; k<rep.length; k++) {
    var RegExTest=new RegExp("^"+rep[k]+"$");
    if (RegExTest.test(this.getField("Q."+n+"."+a).value)) OK++;
    }
    if (OK) {this.getField("Q."+n+"."+a).fillColor=eval("color."+colorOk);}
    else {this.getField("Q."+n+"."+a).fillColor=eval("color."+colorErr);erreurs++;this.getField("Erreurs").value++;}
    // BB
    if (!erreurs) {
    ...

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplir les champs d’une 2e liste déroulante dynamiquement #74820
    bebarth
    Maître des clés

    bonjour,
    Ce sont des listes mères-filles… le plus simple est de chercher “mère fille” sur le forum et tu devrais trouver des réponses.
    https://www.abracadabrapdf.net/forums/search/m%C3%A8re+fille/

    @+
    😎

    en réponse à : Execution d’un script si un champ est absent #74814
    bebarth
    Maître des clés

    je n’avais jamais vu le point d’exclamation placé avant…

    Si, certainement… “==” signifie “est égale à” alors que “!=” signifie “est différent de“. Le point d’exclamation (!) exprime l’inverse.
    Donc if (!this.getField("meca")) signifie s’il n’y a pas de champ nommé “meca”.

    À noter que “==” est le signe d’égalité faible qui ne tient compte que de la valeur (donc0=="0",  le chiffre 0 est égal au caractère “0” et idem pour 0==null) alors que “===” est le signe d’égalité stricte qui tient compte que de la valeur et du type, d’où 0!=="0" et 0!==null.

    @+
    😎

    en réponse à : Execution d’un script si un champ est absent #74812
    bebarth
    Maître des clés

    bonjour,
    …ou if (!this.getField("meca")) {..., ça fonctionne aussi !

    @+
    😎

    en réponse à : Mr ou Mme qui s’inscrit avec bouton radio ou case à cocher #74803
    bebarth
    Maître des clés

    bonjour,
    Tu peux écrire :
    if (event.target.value!="Off") this.getField("Texte1").value=event.target.value+" "+this.getField("Texte1").value.replace(/^(M.\s)|(Mᵐᵉ\s)/,"");
    else this.getField("Texte1").value=this.getField("Texte1").value.replace(/^(M.\s)|(Mᵐᵉ\s)/,"");

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Not Allowed – Script #74795
    bebarth
    Maître des clés

    bonjour,
    Toujours le même problème d’affichage d’un “i” entre crochets sur le forum… On peut le remplacer l’indice par un “j” et ça devrait beaucoup mieux marcher :
    var aTousLesModeles=this.templates;
    for (j=0; j<aTousLesModeles.length; j++) {
    aTousLesModeles[j].hidden=false; // true ou false
    var leNom=aTousLesModeles[j].name;
    var ind=leNom.substr(leNom.length-1);
    var nm=leNom.substr(0,leNom.length-1);
    this.setPageLabels(this.numPages-1, ["D",leNom.substr(0,leNom.length-1),ind-1]);
    }

    P.S. : Je ne me souviens pas ce qu’elle fait là, mais la variable nm en ligne 6 ne sert à rien ici…

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 semaines et 3 jours par bebarth.
    en réponse à : Calcul tangente #74786
    bebarth
    Maître des clés

    bonjour,

    Si ce calcul est correct, il faudra le multiplier par 180/π pour l’avoir en degrés…

    Mais il n’est pas correct, et le calcul n’est pas une notation simplifiée du champ “tangresultatab”.
    Pour trouver la tangente, il faut écrire en script de calcul :
    event.value=Math.tan(this.getField("Resultab").value*Math.PI/180);

    On utilise “Math.tan2” pour trouver la tangente lorsque l’on a les coordonnées d’un point et non un angle !

    @+
    😎

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Calcul tangente #74785
    bebarth
    Maître des clés

    bonjour,

    event.value=Math.atan2(this.getField(“Resultab”).value);

    Attention, les calculs trigonométriques utilisent le radian comme unité. Si ce calcul est correct, il faudra le multiplier par 180/π pour l’avoir en degrés…

    @+
    😎

    en réponse à : Script qui fonctionne de façon isolée #74773
    bebarth
    Maître des clés

    bonjour,

    Je pense avoir réussi. Il y avait sûrement plus simple avec une autre numérotation des champs mais je ne voulais pas me refaire tous les calculs… Le script est long mais ça a l’air de marcher. Enfin ça fonctionne si il y a 10 caissons….Il va falloir que je trouve un truc s’il y a moins de 10 caissons…

    Si je peux me permettre, j’aurais quelques recommandations à te donner avant de te lancer dans des calculs, surtout lorsqu’il y a autant de champs… et malheureusement, lorsqu’on “commence” à programmer (durant quelques années), on doit souvent recommencer la nomination des champs, même si c’est un travail fastidieux…

    Je croyais avoir compris que les quantités de formats identiques s’ajoutaient ! Ça n’a pas l’air d’être le cas dans ton tableau.

    @+
    😎

     

    en réponse à : Script qui fonctionne de façon isolée #74765
    bebarth
    Maître des clés

    bonsoir,
    Je ne comprends pas bien ce qu’il faut indiquer dans les colonnes 1 et 2…
    Ce qui va compliquer c’est qu’il n’y a pas de logique de numérotation pour les champs “essence” et “Ep” ! Il aurait été plus simple qu’il y en ait une en fonction de l’indice des champs…

    @+
    😎

    en réponse à : Script qui fonctionne de façon isolée #74748
    bebarth
    Maître des clés

    bonjour,
    Tu pourrais placer en script de format de tous les champs “Caiss” et “Tiroir” :
    if (/(××)|(0×)|(NaN)/.test(event.value)) event.value="–";

    Pour éviter de modifier tous ces champs manuellement, tu peux lancer ce script :
    for (var i=0; i<this.numFields; i++) {
    if (/^(Tiroir)|(Caiss)[.]\d[.]\d$/.test(this.getNthFieldName(i))) {
    this.getField(this.getNthFieldName(i)).setAction("Format","if (/(××)|(0×)|(NaN)/.test(event.value)) event.value=\"–\";");
    }
    }

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74738
    bebarth
    Maître des clés

    bonjour,
    Après une première lecture rapide je remarque qu’il y a 2 fois la fonction “Calc()” en lignes 1 et 71.
    Je n’ai pas vérifié si elles sont exactement identiques, mais peut-être que la seconde qui annule la première ne permet pas l’exécution de certains calculs…

    @+
    😎

    en réponse à : Somme des radio boutons en mots #74735
    bebarth
    Maître des clés

    bonjour,
    Si on veut gagner quelques lignes de script on peut écrire :
    var OK=true;
    for (var i=1; i<=7; i++) var OK=OK && this.getField("Groupe "+i).value!="Off";
    if (OK) {
    // script
    } else event.value="";

    Mais là, j’avoue,je chipote…

    @+
    😎

    en réponse à : Not Allowed – Script #74734
    bebarth
    Maître des clés

    bonjour,

    Si ça t’intéresse, bebarth m’avait écrit un script qui “démasque” les modèles masqués en conservant leurs noms de modèle dans le panneau des pages, au lieu d’avoir page 1, page 2, etc. C’est très pratique quand il y en a beaucoup. Avec son autorisation (dont je doute pas) je pourrais te l’envoyer, ou le poster céans.


    @Merlin
    : Tu peux partager car de tête je ne me souviens pas et je ne serai de retour qu’à la fin du mois pour le plonger dans mes archives…

    @+
    😎

    en réponse à : Not Allowed – Script #74715
    bebarth
    Maître des clés

    Désolé je suis dans le cap corse sans pratiquement aucun réseau…

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Not Allowed – Script #74708
    bebarth
    Maître des clés

    bonjour,

    Si tu regardes la 3e colonne de la Quick bar, le S indique les niveaux de privilèges où tu peux exécuter cette méthode et on ne trouve pas le niveau Sript de document.

    Par contre, si tu étends les privilèges tu devrais pouvoir te créer un menu qui te permette d’exécuter ce script.

    Essaye et dis-moi/nous.

    @+

    en réponse à : Caractères avec accents dans les menus #74703
    bebarth
    Maître des clés

    Ah, l’Ardèche, ses gorges et jardins suspendus…

    😎

    en réponse à : Caractères avec accents dans les menus #74689
    bebarth
    Maître des clés

    bonjour,

    Bonjour, est-ce que vous avez remarqué dernièrement que les caractères avec accents ne sont plus interprétés correctement même si on utilise leurs valeurs Unicode ? Ex: \u00E9 pour «é».

    Est-ce que cela signifie que ça a déjà fonctionné un jour ???
    A ce que je me souvienne, depuis que j’ai commencé à écrire des utilitaires exécutables depuis un menu ça na jamais fonctionné…
    Pour mon premier utilitaire j’avais même abrégé “Proppriétés” par “Prop.”, mais maintenant j’essaie de trouver des mots sans caractères accentués ou je mets des “e” à la places des “é” !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Sinus pour baïonnette #74682
    bebarth
    Maître des clés

    bonjour,
    Je n’avais pas vu la vidéo ! Si on la regarde, on peut comprendre que l’opération effectuée n’est pas celle indiquée sur la copie d’écran, mais : coef = déport ÷ sin(22,5) ÷ déport
    Et là on remarque vite que déport ÷ déport = 1… donc coef = 1/sin(angle) quel que soit le cet angle qui est fonction du déport.
    On peut donc écrire :
    event.value=1/Math.sin(this.getField("angle").value*Math.PI/180);
    Ici on transforme les angles en “radian” qui est l’unité trigonométrique utilisée en JavaScript.

    @+
    😎

    PS : les vacances sont pour la fin de semaine, mais j’ai (encore) des soucis avec mes e-mails et je ne reçois pas les notifications ni de ce forum, ni de celui d’adobe…

    • Cette réponse a été modifiée le il y a 1 mois et 3 semaines par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Sinus pour baïonnette #74681
    bebarth
    Maître des clés

    bonjour,
    Comment un sinus compris entre -1 et +1 divisé par 500 peut-il être égale à 2,613 ???
    De plus, 541,196/500 ne fait jamais 2,6 mais 1 et des brouettes…
    Il doit y avoir une erreur de formule !

    @+
    😎

    en réponse à : Créer un lien vers une base de donnés en ligne #74640
    bebarth
    Maître des clés

    Il faudrait demander à Thom Parker, ou chercher sur son site, si quelqu’un connaît la réponse c’est lui.

    Tu nous donneras sa réponse…

    @+
    😎

    en réponse à : Créer un lien vers une base de donnés en ligne #74637
    bebarth
    Maître des clés

    bonjour,

    Non ce n’est pas possible !

    @+
    😎

    en réponse à : Générateur liste déroulantes #74633
    bebarth
    Maître des clés

    bonjour,
    Oups ! Je suppose que tout le monde aura rectifié de lui-même ce dysfonctionnement… on ne peut pas penser à tout. 😉
    Pour ma part, j’ai donc modifié les expressions régulières en ligne 124 qui servent à supprimer/rectifier certains caractères inutiles (pour éviter d’avoir des lignes vierges ou des espaces multiples par exemple). Dans la théorie, on a pas besoin de ça si l’on fait attention à ce qu’on frappe…
    La nouvelle ligne est :
    lesElements=oRslt["elem"].replace(/[ ]{2,}/g," ").replace(/^\s+|\s+$/g,"").replace(/[^\S ]+/g,"\r").replace(/\s{3,}/g,"\r");
    Explications sur demande…
    J’espère avoir pensé à tout ce coup ci !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Somme des radio boutons en mots #74626
    bebarth
    Maître des clés

    bonjour,
    En script de format personnalisé tu peux écrire :
    if (event.value==1) event.value="Growth";
    else if (event.value==2) event.value="Diversified";
    else if (event.value==3) event.value="Growth or Diversified";
    // etc.
    else event.value="";

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74621
    bebarth
    Maître des clés

    En fait, dans ton fichier précédent, les champs à double indices n’étaient que des menus déroulants alors que dans celui-ci il y a tous types de champs.
    J’ai donc modifié le script pour qu’il ne tienne compte que des menus déroulants (2 fois : en lignes 9 et 88) :
    if (OK && this.getField(nomChamp).type=="combobox") {
    Ce qui entraine une modification en ligne 195 que je n’écris pas ici car elle comporte un “i” entre crochets, mais je fais une copie d’écran !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74614
    bebarth
    Maître des clés

    bonjour,
    Je partage (pratiquement) toujours un fichier lorsque je fournis un script et il vaut mieux utiliser le script du fichier plutôt que celui affiché sur le post.
    J’avais remarqué qu’il y a un problème d’affichage lorsqu’on indique un “i” entre crochets (disparait à l’affichage, doit être interprété comme une balise).
    En tout cas, j’utilise souvent ce” i” entre crochets lorsque j’écris un script et des fois je pense à le modifier avant de partager ce script et d’autres fois je n’y pense pas…
    Dans ce script, il y a effectivement plusieurs fois ce “i” entre crochets et si tu as utilisé celui affiché sur le post de réponse, je pense que l’erreur doit venir de là !!!
    Essaye donc avec celui fourni dans le fichier et (normalement) ça devrait beaucoup mieux fonctionner…

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 mois et 2 semaines par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74608
    bebarth
    Maître des clés

    bonjour,
    Fonctionne correctement avec PDF-XChange pour moi alors que j’ai un message d’erreur avec ton dernier fichier !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74594
    bebarth
    Maître des clés

    bonjour,
    Il n’y avait pas d’erreur chez moi, et par contre ton fichier ne fonctionne pas (chez moi également) !

    @+
    😎

    en réponse à : Générateur liste déroulantes #74586
    bebarth
    Maître des clés

    bonjour,
    Voici ma proposition que je partage maintenant, avant d’être de mauvaise humeur… (ce que je n’espère pas, évidemment !).
    Tu me dis si je n’ai pas tout compris.
    C’est la première fois que je fais une boite de dialogue à éléments variables. Ce n’est pas ce qu’il y a de plus simple, mais lorsqu’on a compris comment fonctionnent les boites de dialogue, ça se fait… et voici le script pour ton fichier :
    nbChamps=this.numFields;
    if (nbChamps) {
    var leChamp="- Liste des champs -";
    var listeChamps="var listeChamps \= \{\""+leChamp+"\": "+(nbChamps+1)+",";
    for (var i=0; i < nbChamps; i++) {
    var nomChamp=this.getNthFieldName(i);
    var RegExTest=new RegExp("^(\\w\\.\\d+)\\.(\\d+)$");
    var OK=nomChamp.match(RegExTest);
    if (OK) {
    listeChamps+="\""+OK[1]+"\": "+(-1*(i+1)).toString()+",";
    }
    }
    var listeChamps=listeChamps.substring(0, listeChamps.length-1);
    listeChamps+="\}";
    eval(listeChamps);
    var bDialogue={
    initialize: function(bDialogue) {
    this.loadDefaults(bDialogue);
    },
    loadDefaults: function(bDialogue) {
    bDialogue.load({
    LCha: listeChamps,
    })
    },
    validate: function(bDialogue) {
    var oRslt=bDialogue.store();
    var elements=bDialogue.store()["LCha"];
    var testOK=true;
    for (var i in elements) {
    if (elements>0) {
    valeurListe=listeChamps;
    nomListe=i;
    }
    }
    if (valeurListe>0) var testOK=false;
    if (!testOK) app.alert("Veuillez sélectionner un nom de champ.",3);
    return testOK;
    },
    description: {
    name: "Générer des menus déroulants",
    elements: [
    {
    type: "view",
    elements: [
    {
    type: "view",
    alignment: "align_fill",
    elements: [
    {
    type: "static_text",
    name: "Champs à double indices",
    font: "dialog",
    bold: true,
    },
    {
    type: "static_text",
    name: "Sélectionnez...",
    },
    {
    type: "popup",
    item_id: "LCha",
    width: 150,
    alignment: "align_fill",
    },
    ]
    },
    {
    type: "gap",
    height: 5
    },
    {
    type: "ok_cancel",
    },
    ]
    },
    ]
    }
    };
    if("ok"==app.execDialog(bDialogue)){
    debutChamp=nomListe;
    lesIndices=[];
    var leChamp="- Liste des seconds indices -";
    var listeChamps="var listeChamps \= \{\""+leChamp+"\": "+(nbChamps+1)+",";
    for (var i=0; i < nbChamps; i++) {
    var nomChamp=this.getNthFieldName(i);
    var RegExTest=new RegExp("^"+nomListe+"\\.(\\d+)$");
    var OK=nomChamp.match(RegExTest);
    if (OK) {
    lesIndices.push("0"+OK[1].slice(-2));
    }
    }
    var listeChamps=listeChamps.substring(0, listeChamps.length-1);
    listeChamps+="\}";
    eval(listeChamps);
    //
    var nbH=Math.ceil(Math.sqrt(lesIndices.length));
    var nbV=Math.ceil(lesIndices.length/nbH);
    numIndice=0;
    champsCaC="[";
    for (var i=0; i<nbH; i++) {
    champsCaC+="{type: \"view\",elements: [";
    for (var j=0; j<nbV; j++) {
    if (numIndice<lesIndices.length) {
    champsCaC+="{type: \"check_box\",item_id: \"cb"+lesIndices[numIndice]+"\",name: \" ."+Number(lesIndices[numIndice])+"\",},";
    numIndice++;
    } else break;
    }
    champsCaC+="]},{type: \"static_text\",name: \" \",},"
    }
    champsCaC+="]";
    //
    var bDialogue={
    validate: function(bDialogue) {
    var oRslt=bDialogue.store();
    for (var i=0; i<lesIndices.length; i++)eval("theCB"+i+"=oRslt[\"cb"+lesIndices+"\"];")
    var testOK0=true;
    var txtTest="";
    for (var i=0; i<lesIndices.length; i++){
    txtTest+="theCB"+i+"==false";
    if (i<lesIndices.length-1) txtTest+=" && ";
    }
    if (eval(txtTest)) var testOK0=0;
    var testOK1=true;
    lesElements=oRslt["elem"].replace(/^\s+|\s+$/g,"").replace(/\s+/g,"\r");
    if (lesElements=="") var testOK1=0;
    if (!testOK0) app.alert("Veuillez sélectionner au moins un indice pour le champ "+debutChamp+".",3);
    else if (!testOK1) app.alert("Veuillez indiquer les éléments à ajouter pour les indices sélectionnés pour le champ "+debutChamp+".",3);
    var testOK=(testOK0 && testOK1);
    return testOK;
    },
    description: {
    name: "Générer des menus déroulants",
    elements: [
    {
    type: "view",
    elements: [
    {
    type: "view",
    alignment: "align_fill",
    elements: [
    {
    type: "static_text",
    name: "Seconds indices du champ "+debutChamp,
    font: "dialog",
    bold: true,
    },
    {
    type: "static_text",
    name: "Sélectionnez...",
    },
    {
    type: "view",
    align_children: "align_top",
    elements: eval(champsCaC)
    },
    {
    type: "gap",
    height: 5
    },
    {
    type: "static_text",
    name: "Élément des menus déroulants",
    font: "dialog",
    bold: true,
    },
    {
    type: "static_text",
    name: "Indiquez une liste à intégrer",
    },
    {
    type: "edit_text",
    item_id: "elem",
    multiline: true,
    alignment: "align_fill",
    height: 150
    }
    ]
    },
    {
    type: "gap",
    height: 5
    },
    {
    type: "ok_cancel",
    },
    ]
    },
    ]
    }
    };
    if("ok"==app.execDialog(bDialogue)){
    lesElements=lesElements.split("\r");
    lesElements.unshift("?");
    for (var i=0; i<lesIndices.length; i++) {
    if (eval("theCB"+i)) this.getField(debutChamp+"."+i).setItems(lesElements);
    }
    }
    }
    } else app.alert("Il n'y a pas de champ dans ce document.",3);

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74583
    bebarth
    Maître des clés

    bonjour,
    Je regarde ça ce weekend.
    Dans ta boite de dialogue, faut-il laisser la possibilité d’indiquer le nom de champ manuellement ???

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Assistant d’actions pour remplir en javascript #74578
    bebarth
    Maître des clés

    … pas tant que ça en fait ! La plupart des zones devraient être inaccessibles et les boutons radios décochées à l’ouverture de la boîte de dialogue.

    La fenêtre de script est également mal placée.

    Je n’est pas testé l’exécution du script.

    @+
    😎

    en réponse à : Assistant d’actions pour remplir en javascript #74574
    bebarth
    Maître des clés

    bonjour,
    Ça à l’air moins pratique qu’avec Acrobat, mais le script semble fonctionner depuis la console PDF-XChange !

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Multiliste déroulante #74571
    bebarth
    Maître des clés

    bonjour,
    Voilà, je redonne l’ensemble des scripts qui ont, pour certains, un peu évolués :
    // Scripts de document
    //
    var nbDepart=0;
    for (var i=0; i<this.numFields; i++) {
    if (/^Départ\.\d+/.test(this.getNthFieldName(i))) nbDepart++;
    }
    var fichier=this.getDataObjectContents("Départ.csv");
    var donnees=util.stringFromStream(fichier);
    var lignes=donnees.split("\r\n");
    var colonnes=new Array();
    for (var ii=0 ; iivar colonne0=[];`
    for (var j=0 ; jif (colonnes[j][0]) colonne0.push([colonnes[j][0]]);`
    }
    for (var i=1; i<=colonne0.length; i++) {
    eval("var colonne"+(i+1)+"=[];");
    for (var j=0 ; jif (colonnes[j][i+1]) eval(“colonne”+(i+1)).push(colonnes[j][i+1]);`
    }
    }
    colonne0[0].push(0);
    for (var ii=1; ii<colonne0.length; ii++) {
    colonne0[ii].push(eval("colonne"+(i+1)))
    }
    // Fichier "Départ Arrivée.csv"
    var fichierDA=this.getDataObjectContents("Départ Arrivée.csv");
    var donneesDA=util.stringFromStream(fichierDA);
    var lignesDA=donneesDA.split("\r\n");
    var colonnesDA=new Array();
    for (var i=0 ; ifor (var i=1; i<=colonnesDA[0].length; i++) {`
    eval("var colonne"+(i+1)+"DA=[\"- Sélectionnez -\"];");
    for (var j=1 ; jif (colonnesDA[j][i+1]) eval(“colonne”+(i+1)+”DA”).push(colonnesDA[j][i+1]);`
    }
    }
    //
    var leCanal=this.getField("Canal").value;
    this.getField("Canal").clearItems();
    this.getField("Canal").setItems(colonne0);
    this.getField("Canal").value=leCanal;
    //
    function menuCanal(laValeur) {
    try {
    for (var i=0; i<nbDepart; i++) {
    this.getField("Départ."+i).clearItems();
    this.getField("Arrivée."+i).clearItems();
    }
    if (laValeur!=0) {
    var leMenu=laValeur.split(",");
    var ind=leMenu[0].substr("Canal ".length);
    leMenu[0]=["- Sélectionnez -",0];
    for (var ii=1; ii<leMenu.length; ii++) {
    leMenu[ii]=[leMenu[ii],eval("colonne"+(i+1)+"DA")];
    }
    for (var i=0; i<nbDepart; i++) {
    this.getField("Départ."+i).clearItems();
    this.getField("Départ."+i).setItems(leMenu);
    }
    }
    } catch(e) {}
    }
    //
    function menuDepart(ind,laValeur) {
    this.getField("Arrivée."+ind).clearItems();
    this.getField("Arrivée."+ind).setItems(laValeur.split(","));
    }
    function menuArrivee(leChamp) {
    try {
    var ind=leChamp.name.substring(leChamp.name.indexOf(".")+1);
    var laTable=this.getField("Départ."+ind).value.split(",");
    for (var i=0; i<nbDepart; i++) {
    if (i==ind) continue;
    for (j=0; j<leChamp.numItems; j++) {
    if (this.getField("Départ."+i).getItemAt(this.getField("Départ."+i).currentValueIndices,false)==this.getField("Départ."+ind).getItemAt(this.getField("Départ."+ind).currentValueIndices,false) && this.getField("Arrivée."+i).value==laTable[j]) laTable.splice(j,1);
    }
    }
    var lArrivee=leChamp.value;
    leChamp.clearItems();
    leChamp.setItems(laTable);
    leChamp.value=lArrivee;
    } catch(e) {}
    }
    //
    function cAc(arrivee) {
    if (this.getField("Canal").value && this.getField("Départ.0").value && arrivee!="- Sélectionnez -") {
    this.getField("Check Box1").display=display.noPrint;
    } else {
    this.getField("Check Box1").display=display.hidden;
    var modeles=this.templates;
    if (this.getField("Check Box1").value!="Off") {
    for (ii=0; ii<modeles.length; ii++) {
    if (modeles[ii].name=="page2") {
    this.deletePages(1);
    break;
    }
    }
    }
    this.getField("Check Box1").value="Off";
    this.pageNum=0;
    }
    }

    // Script de touches personnalisé Menu "Canal"
    if (!event.willCommit) {
    menuCanal(event.changeEx);
    cAc(this.getField("Arrivée.0").value);
    }
    // Script de touches personnalisé des Menus "Départ" sauf "Départ.0"
    if (!event.willCommit) {
    if (event.changeEx!=0) {
    menuDepart(event.target.name.substring(event.target.name.indexOf(".")+1),event.changeEx);
    cAc(this.getField("Arrivée.0").value);
    } else {
    this.getField("Arrivée."+event.target.name.substring(event.target.name.indexOf(".")+1)).clearItems();
    }
    }
    // Script de touches personnalisé Menu "Départ.0"
    if (!event.willCommit) {
    if (event.changeEx!=0) {
    menuDepart(event.target.name.substring(event.target.name.indexOf(".")+1),event.changeEx);
    cAc(this.getField("Arrivée.0").value);
    } else {
    this.getField("Arrivée."+event.target.name.substring(event.target.name.indexOf(".")+1)).clearItems();
    this.getField("Check Box1").display=display.hidden;
    var modeles=this.templates;
    if (this.getField("Check Box1").value!="Off") {
    for (ii=0; ii<modeles.length; ii++) {
    if (modeles[ii].name=="page2") {
    this.deletePages(1);
    break;
    }
    }
    }
    this.getField("Check Box1").value="Off";
    this.pageNum=0;
    }
    }

    // Ajout Script de touches personnalisé de TOUS les Menus "Départ" sauf "Départ.0"
    for (var i=1; i<30; i++) {
    this.getField("Départ."+i).setAction("Keystroke","if (!event.willCommit) {\r\tif (event.changeEx!=0) {\r\t\tmenuDepart(event.target.name.substring(event.target.name.indexOf(\".\")+1),event.changeEx);\r\t\tcAc(this.getField(\"Arrivée.0\").value);\r\t} else {\r\t\tthis.getField(\"Arrivée.\"+event.target.name.substring(event.target.name.indexOf(\".\")+1)).clearItems();\r\t}\r}");
    }

    // Script de touches personnalisé Menu "Arrivée.0"
    if (!event.willCommit) {
    if (event.changeEx!="- Sélectionnez -") cAc(event.changeEx);
    }

    // Souris entrée de tous les Menus "Arrivée"
    menuArrivee(event.target);

    // Ajout Script Souris entrée de TOUS les Menus "Arrivée"
    for (var i=0; i<30; i++) {
    this.getField("Arrivée."+i).setAction("MouseEnter","menuArrivee(event.target);");
    }

    // Script d'ouverture de page
    if (app.viewerType!="Exchange-Pro") this.viewState={overViewMode:2};
    this.viewState={overViewMode:5}

    // Script Affichage Page 2
    if (event.target.value!="Off") {
    var modeles=this.templates;
    for (ii=0; ii<modeles.length; ii++) {
    if (modeles[ii].name=="page2") {
    modeles[ii].spawn(1, false, false);
    break;
    }
    }
    this.pageNum=0;
    } else {
    this.deletePages(1);
    }

    // Ajouter page 4
    var modeles=this.templates;
    for (ii=0; ii<modeles.length; ii++) {
    if (modeles[ii].name=="page4") {
    modeles[ii].spawn(this.numPages-1, false, false);
    break;
    }
    }

    PS : Les [ii] dans les scripts ci-dessus sont en fait de simples “i” entre crochets dans le document joint. Il est donc préférable de se reporter aux scripts contenus dans le fichier ci-joint.

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Assistant d’actions pour remplir en javascript #74565
    bebarth
    Maître des clés

    bonsoir,
    Pas de souci pour te le partager, mais sais-tu si tu peux ajouter un script d’application avec PDF-XChange ? Je n’ai pas l’impression…

    @+
    😎

    en réponse à : Multiliste déroulante #74564
    bebarth
    Maître des clés

    bonsoir,
    Je regarde ça demain… il faut utiliser la méthode spawn qui permet de dupliquer et supprimer des pages modèles avec Acrobat Reader.

    D’autre question, serait-il possible de dupliquer la page4 au besoin, et les pages dupliquer sera toujours avant la dernière page qui est p05? en respect toujours l’ordre des pages

    Pas de problème pour ça, mais peut-on dupliquer cette page plusieurs fois ou juste une fois ?

    @+
    😎

    en réponse à : Assistant d’actions pour remplir en javascript #74551
    bebarth
    Maître des clés

    Il ne faut pas faire de retours lignes mais l’équivalent JavaScript “\r” et il faut échapper les guillemets pour qu’ils soient interprétés correctement. Cela donne :
    this.addScript("init", "if (app.viewerVariation==\"Full\" || (app.viewerVariation!=\"Full\" && app.viewerVersion>=11)) {\rthis.getField(\"cache\").display=display.hidden;\rthis.dirty=false;\r}");

    @+
    😎

    en réponse à : Multiliste déroulante #74548
    bebarth
    Maître des clés

    Je ne me souviens pas où on les trouvait sous Acrobat Pro 9, mais voici ce que j’ai trouvé :
    https://answers.acrobatusers.com/Where-Page-Templates-Windows-Adobe-Acrobat-9-Pro-q21342.aspx
    Menu “Avancé”, sélectionnez “Pages modèles”… ensuite tu devrais les trouver.

    @+
    😎

    en réponse à : Multiliste déroulante #74543
    bebarth
    Maître des clés

    bonjour,
    A vérifier que le script de document “init” est bien intégré à ton fichier et que la page modèle se nome bien “page2”, sinon il faut adapter le script.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Assistant d’actions pour remplir en javascript #74542
    bebarth
    Maître des clés

    bonjour,
    Peux-tu coller dans une réponse ta ligne exacte ou faire une copie d’écran ?

    @+
    😎

    en réponse à : Assistant d’actions pour remplir en javascript #74526
    bebarth
    Maître des clés

    bonjour,
    Tu sais quoi ? Il y a 2 mois j’ai écris un utilitaire suite à une demande que j’avais eu.
    Je donne ici une version minifiée (car c’est un peu de boulot) d’un script qui peut être utilisé depuis l’assistant d’actions ou la console :

    var b2="ffea3337fff70000fff70000fff50f1aff3ca39eff00b0aaff00aea6ff00b4acff00b2aaff00aea6ff00aea6ff00b2abff93c1ccff92c7d7ff92c7d7ff9ccad7ff22b4abff00aea6ff00aea6ff00b4acff00afa8ff00aea6ff00aea6ff00b3abff00afa8ff00aea6ff00aea6ff00bab4ffea3337fff70000fff70000fff50f1aff23aba3ff00aea6ff00aea6ff00b3abff00afa8ff00aea6ff00aea6ff00b3abff00afa8ff00aea6ff00aea6ff00b5afff93c1ccff92c7d7ff92c7d7ff9ccad7ff00afa8ff00aea6ff00aea6ff00b5afff00aca7ff00aea6ff00aea6ff00b2aaffea3337fff70000fff70000ffea3337fff70000ffff0000ffff0000ffff0000ff009c96ff00aca0ff00aaa1ff00b2a8ff00aca3ff00aaa0ff00aaa0ff00b0a6ff84c4d3ff8ccfe6ff8ccfe6ff9bd3e7ff00aea6ff00aa9eff00aaa0ff00b2aaff00aca3ff00aaa0ff00aaa0ff00b2aaff00aba2ff00aaa0ff00aba1ff00b5adffec0000ffff0000ffff0000ffff0000ff00a59cff00ada3ff00aaa0ff00b2aaff00aba2ff00aaa0ff00aaa0ff00b3abff00aba2ff00aaa0ff00aaa0ff00b3abff89c5d5ff8ccfe6ff8ccfe6ff94d0e2ff00aba2ff00aaa0ff00aaa0ff00b3abff00aaa1ff00aba0ff00ada3ff00b1a8fff90000ffff0000ffff0000ffff0000ffec0000ffff0000ffff0000ffff0000ff009c96ff00ada3ff00aba1ff00b2aaff00ada6ff00aba0ff00aba1ff00b2a8ff84c4d3ff8ccfe6ff8ccfe6ff9bd3e7ff00b0aaff00aaa0ff00aba0ff00b5adff00aca3ff00aba1ff00aba1ff00b3abff00aca3ff00aba1ff00ada3ff00b5adffec0000ffff0000ffff0000ffff0000ff00a59cff00ada3ff00aba1ff00b3abff00aba2ff00aba1ff00aba1ff00b3abff00aba2ff00aba1ff00aba0ff00b3aaff89c5d5ff8ccfe6ff8ccfe6ff97d1e4ff00aca3ff00aba1ff00aba1ff00b3aaff00aba2ff00aca0ff00ada3ff00b1a8fff90000ffff0000ffff0000ffff0000fff50f1affff0000ffff0000ffff0000ff2ba19cff00b3acff00b2abff00b9b2ff00b2abff00b2aaff00b2aaff00b7afff92c7d7ff9bd3e7ff9bd3e7ffa6d6e7ff00b5afff00b2aaff00b2aaff00b9b3ff00b2abff00b2aaff00b2aaff00b8aeff00b2abff00b2aaff00b2aaff00b9b3fff50f1affff0000ffff0000ffff0000ff00aca7ff00b5adff00b2aaff00b9b3ff00aea6ff00b0a6ff00b2a8ff00b7afff00b1aaff00b2aaff00b2aaff00b9b3ff9ccad7ff9bd3e7ff9bd3e7ffa6d6e7ff00b1aaff00b2aaff00b2aaff00bbb4ff00b0aaff00b2abff00b2abff00b9b3fff70000ffff0000ffff0000ffff000fff3ca39eff009c96ff009c96ff2ba19cffb8ae91ffd5ad8fffd5ad8fffd1b49cff31aca5ff00ada5ff00ada5ff00b2abff22b4abff00b1aaff00b1aaff00b7b2ff00afa8ff00ada5ff00ada5ff00b4acff00afc5ff00aed3ff00aed3ff00b5d4ff00aca7ff00ada5ff00ada5ff00b4acff3ca39eff009c96ff009c96ff3ca39eff00aca7ff00ada5ff00ada5ff00b4acffdce6c1ffdce6c1ffd6dfbaffe6ecc5ff00afa8ff00ada5ff00ada5ff00b3abff00afa8ff00b2abff00b1aaff00b7b2ff00aca7ff00ada5ff00ada5ff00b3abffcbad93ffd5ad8fffd5ad8fffd1b49cff2ba19cff009c96ff009c96ff31aca5ff00b1a8ff00ada3ff00ada3ff00b2abffcbad93ffffac7effffac7effffb38aff00ada4ff00a9a0ff00aaa0ff00b2aaff00aca3ff00aaa0ff00aaa0ff00b0a6ff00aca3ff00aaa0ff00aaa0ff00b2aaff00aed6ff00ade7ff00ade7ff00b5e7ff00aca3ff00aaa0ff00aaa0ff00b3abff00ada5ff00ada3ff00ada3ff00b5adff00aba2ff00aaa0ff00aaa0ff00b2aafffeffceffb0a889ff83815bfffeffceff00aba2ff00aa9eff00aaa0ff00b3abff00aaa1ff00aaa0ff00aaa0ff00b2aaff00aba2ff00aba0ff00aaa0ff00b3aaffecaa88ffffac7effffac7efff7b591ff00aaa6ff00ada3ff00ada3ff00b8afff00aea6ff00aaa0ff00aba1ff00b2abffcbad93ffffac7effffad80ffffb58dff00ada4ff00aaa1ff00aba1ff00b2aaff00aca3ff00aba1ff00aba1ff00b2aaff00aca3ff00aba1ff00aba0ff00b2aaff00aed3ff00ade7ff00ade7ff00b5e7ff00ada7ff00aba0ff00aba1ff00b3abff00aca3ff00aba1ff00aba1ff00b3abff00aba2ff00aba1ff00aba1ff00b3abfff3f0c7ff7c7863ff615d48ffe6ddb4ff00b19fff00aba1ff00aba1ff00b3abff00aba2ff00aba1ff00aba1ff00b4acff00aba2ff00aca0ff00aba1ff00b3aaffe9ac8bffffad80ffffad80fff7b591ff00aaa1ff00ada3ff00aba0ff00b7afff00b4acff00b2aaff00b2aaff00b9b2ffe0b297ffffb38affffb58dffffb995ff00b2aaff00b2a8ff00b2abff00b9b2ff00b4acff00b2aaff00b2aaff00b9b3ff00b2abff00b2aaff00b2aaff00b8aeff00b5d8ff00b5e7ff00b5e7ff00bce5ff00b1aaff00b2a8ff00b2a8ff00b8aeff00b2abff00b2aaff00b2aaff00b9b3ff00b1aaff00b2a8ff00b2a8ff00b8aeffe6ecc5ffd9d0aaffe6ddb4ffd9d0aaff00b4acff00b2aaff00b2aaff00b9b3ff00b1aaff00b2aaff00b2aaff00b9b3ff00b0aaff00b2a8ff00b2abff00b9b3ffeeb192ffffb38affffb38afff2bb9bff00b1aaff00b2aaff00b2aaff00bbb4ff00b2aaff00ada5ff00ada5ff00b2abff31aca5ff00ada4ff00ada4ff00b2aaffb8ae91ffd5ad8fffd5ad8fffd1b49cff31aca5ff00ada5ff00ada5ff00b2abff00aca7ff00ada5ff00ada5ff00b2abff00aca7ff00aea9ff00aea9ff00b2abff87bdc8ff84c4d3ff84c4d3ff92c7d7ff00afa8ff00ada5ff00ada5ff00b4acff87bdc8ff84c4d3ff84c4d3ff92c7d7fffbf4c7ffe9e9b4ffd9d0aafffcf1c1ff00afa8ff00ada5ff00ada5ff00b4acff00aca7ff00ada5ff00ada5ff00b4acffcbad93ffd5ad8fffd5ad8fffd1b49cff31aca5ff00ada4ff00ada4ff22b4abff00ada4ff00ada5ff00ada5ff00bab2ff00ada5ff00aaa0ff00aba0ff00b2a8ff00aca3ff00a9a3ff00aaa1ff00b2abffd5ad8fffffac7effffac7effffb38aff00aca2ff00aba0ff00aba0ff00b2aaff00aca3ff00aba0ff00aba0ff00b2aaff00aca3ff00aaa1ff00aaa1ff00b2aaff89c5d5ff8ccfe6ff8ccfe6ff9bd3e7ff00ada6ff00aa9eff00aba0ff00b2aaff89c5d5ff8ccfe6ff8ccfe6ff97d1e4ffdce6c1ff8a866effb0a889ffe9e9b4ff00aca3ff00aba0ff00aba0ff00b3abff00aba2ff00aba0ff00aba0ff00b4acffe9ac8bffffac7effffac7efffbb38fff00aaa2ff00aba1ff00aaa1ff00b3abff00aaa2ff00aca0ff00aba0ff00b8afff00ada5ff00aaa0ff00aba1ff00b2aaff00ada6ff00aaa0ff00aba1ff00b2abffd5ad8fffffac7effffad80ffffb58dff00aca2ff00aba1ff00aba1ff00b2aaff00aca3ff00aba1ff00aba1ff00b2aaff00aca3ff00aba1ff00aba1ff00b2aaff89c5d5ff8ccfe6ff8ccfe6ff9bd3e7ff00ada5ff00aba1ff00a9a3ff00b2abff89c5d5ff9ed3e2ffaedbd6ffdce6c1ffe6ddb4ff8a866effc3be9affe9e9b4ff00aca3ff00aba1ff00aba1ff00b3abff00aba2ff00aba1ff00aba1ff00b4acffe9ac8bffffad80ffffad80fff7b591ff00aba2ff00ada3ff00aba1ff00b4acff00aaa2ff00ada3ff00aba0ff00b8afff00b2abff00b2aaff00b2aaff00b7afff00b4acff00b2aaff00b3abff00b9b2ffe0b297ffffb38affffb58dffffb995ff00b2aaff00b0a6ff00b2aaff00b7afff00b1aaff00b2a8ff00b2aaff00b7afff00b1aaff00b2aaff00b2aaff00b7afff92c7d7ff94d0e2ff94d0e2ff9bd3e7ff00b2abff00b2a2ff00c3a7ff80d7adffe9e9b4fffbf5aefffff7acfffffaabfffef8afffc3be9affbfb696ffe6ddb4ff00aca2ff00b2a8ff00b2aaff00b8aeff00b0aaff00b5adff00b5adff00b7aeffe0b297ffffb58dffffb58dfff2bb9bff00b1aaff00b3abff00b3abff00bbb4ff00b0aaff00b2aaff00b2aaff00bbb4ff93c1ccff84c4d3ff84c4d3ff92c7d7ff22b4abff00ada5ff00ada5ff00b2abff23aba3ff00ada4ff00ada4ff00b3abffdce6c1ffe6ecc5ffd6dfbaffe6ecc5ffe6ecc5ffdce6c1ffd6dfbaffe6ecc5ffdce6c1ffd6dfbaffd6dfbaffdce6c1fff3f0c7fff3f0c7fff3f0c7fff4edc0ffe9e9b4ffedf2adfffff9aefffefcaefffffaabfffff7aefffff6adfffff6adfffff7aefffeffb3fff4edc0fff4edc0ffe6ecc5ffdce6c1ffdce6c1ffe6ecc5ffe6ecc5ffc9d3b0ffc9d3b0ffe6ecc5fff4edc0ffd9d0aaffd9d0aaffe9e9b4ff00aca7ff00ada5ff00ada5ff00b5afff87bdc8ff84c4d3ff84c4d3ff9ccad7ff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff00b1aaff00a89fff00aba0ff00b2aaff00aca3ff00aba1ff00aba1ff00b2abffe6ecc5fffeffceff959075fffcf1c1fffeffceffb8ae91ff726e51fffeffcefffcf1c1ffa69d7fffb8ae91ffece4a1fffefcb4fffff7aefffff7aefffff7acfffff9aefffff9aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffffab0ffd6d294ffe9e9b4fffeffceffc3be9affbfb696fffeffcefffcf1c1ff7c7863ff726e51ffe6ddb4fffafccaff959075ff959075fff3f0c7ff00aba2ff00aba0ff00aba0ff00b4acff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff00b1aaff00aaa0ff00aba1ff00b2aaff00ada6ff00aba0ff00aba0ff00b0a6ffe6ecc5ffb8ae91ff7c7863fff3f0c7fffbf4c7ff7c7863ff726e51ffe9e9b4fffefcb4fff3eba3fffef5acfffff8aefffff6acfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffffab0fff9f2b3fffeffceffbfb696ffb8ae91fffeffcefff4edc0ff7b7757ffb8ae91fffcf1c1fffeffceffbfb696ffbfb696fffafccaff00aaa1ff00aba1ff00aba0ff00b4acff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff9ccad7ff9bd3e7ff9bd3e7ffa6d6e7ff00b7b2ff00b2aaff00b3abff00b9b3ff00b4acff00b2aaff00b2aaff00b3abffe6ecc5ffc8ca9bffc8ca9bffe9e9b4fff9f2b3ffe4dd9cfffcf5acfffff7aefffff7aefffff9aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff7aefffff6acfffbf4c7ffe6ddb4ffe6ddb4ffe6ecc5fffcf1c1ffd9d0aafffeffceffe6ddb4fffbf4c7ffe6ddb4ffe9e9b4ffe9e9b4ff00b1aaff00b3abff00b2aaff00bbb4ff9ccad7ff9bd3e7ff9bd3e7ffa6d6e7ff22b4abff00b0aaff00b0aaff00b5afff00afa8ff00aca3ff00aca3ff00b0aaff00aaa3ff00aba2ff00b3abff58c5a6ffc4deb1fffef8affffefcb4fffef5acfffff7acfffefdb1fffff8aefffff8aefffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff7acfffff7a9fff2bb9bffeeb192ffe0b297ff22b4abff00b4a6ff00b0a4ff00b2aaff23aba3ff00b4a6ff00b2abff22b4abff00aaa3ff00ada6ff00aca3ff00b4acff00afa8ff00b0aaff00b0aaff00b7b2ff00ada5ff00aa9eff00aaa0ff00b2a8ff00aba2ff00a7a1ff00b0a6ff00c3aaff80d7adffabe3a9ffedf2adfffffaabfffff9aefffff8aefffff7aefffff7aefffff8aefffefdb1fffdffb9fffdffb5fffefdb1fffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff9aefff8f0a8ffffac7efffbb38fff00aba2ff00a9a0ff00aaa1ff00b3abff00aaa2ff00aba1ff00aaa0ff00b3abff00aaa1ff00aca0ff00aba1ff00b4acff00aaa2ff00aba0ff00aa9eff00b4acff00ada5ff00aaa0ff00aaa0ff00b2abff40bfaeffabe3a9ffedf2adfffff9aefffefcaefffefcaefffff9aefffff7aefffff7aefffff7aefffff7aefffffab0fffffab0ffddd99affaca776ff696649ffa4a071fffdffb9fffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6acfffefcaefffce1a2fff7b591ff00aba2ff00aba1ff00aba1ff00b4acff00aba2ff00aca0ff00aba1ff00b3aaff00aba2ff00aca0ff00aba1ff00b4acff00aaa1ff00ada3ff00aba0ff00b7afff00b4acff00b3abff00b3abff00b7afffedf2adfffef8affffef8affffef7aefffff7acfffff7aefffff7aefffff7aefffff7aefffff7aefffefdb1ffe4dd9cff4d4c36ff2b2b1eff181712ff14130fff2b2b1effece4a1fffeffb3fffff7aefffff7aefffff7aefffff8affffeffb3fffdffb9fffdffb9fffdffb5fffdffb9fffdffb5fffefdb1fffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff9aefffce1a2ff00b0aaff00b3abff00b3abff00bbb4ff00b1aaff00b3abff00b3abff00bbb4ff00b1aaff00b3abff00b3abff00bbb4ff00b1aaff00b3abff00b3abff00beb7ff00afa8ff00aca3ff00aca3ff00aea9ffcce3b0fffff7a9fffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffffab0fff7f8b0ff4d4c36ff161510ff242419ff242419ff161510ff7b7757fffdffb9fffff8aefffff7aefffeffb3fffdffb5ffe4dd9cffaca776ff8a8560ff7b7757ff8a8560ffb4af7bffe4dd9cfffdffb5fffefdb1fffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffffab0ff72c5adff00aba2ff00aca3ff00b2abff00ada4ff00aca3ff00aca3ff00b4acff00accbff00aed3ff00aed3ff00b5d4ff00aaa3ff00ada6ff00aba2ff00bab2ff00ada5ff00aaa0ff00aba1ff00b2abff72c5adfffef5acfffef6acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb5ffcac48aff1e1d15ff242419ff242419ff212017ff212017ffd0ca8dfffdffb5fffdffb5ffddd99aff696649ff29291cff181712ff161510ff181712ff161510ff181712ff2b2b1eff726e51ffddd99afffdffb5fffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff8aeffedf2adff00bda5ff00a7a1ff00b3abff00aba2ff00aca0ff00aba0ff00b4acff00abd8ff00afe9ff00ade7ff00b5e7ff00aaa1ff00aca0ff00aba0ff00b8afff00ada5ff00aaa0ff00aba1ff00b2abff00afc5ffece4a1fffff6acfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8affffeffb3ff696649ff181712ff242419ff25241aff181712ff5c593ffffdffb9ffddd99aff313022ff14130fff212017ff242419ff212017ff212017ff242419ff242419ff212017ff161510ff29291cffa4a071fffdffb5fffff9aefffff6adfffff6adfffff6adfffff6adfffef6acfffefcaeffe9e9b4ff00b2a2ff00b2aaff00aba2ff00aca0ff00aba0ff00b3aaff00abd8ff00ade7ff00ade7ff00b5e7ff00aaa1ff00aca0ff00aba0ff00b7afff00b3abff00b3abff00b3abff00b8aeff00b5d8ffb6d6adfffff7acfffff6adfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb5ffd4cc8dff201f17ff212017ff242419ff242419ff1b1b13ffb4af7bff696649ff181712ff242419ff181712ff1e1d15ff2b2b1eff2b2b1eff1b1b13ff1b1b13ff242419ff242419ff1f1e16ff161510ff8a8560fffdffb5fffff8aefffff6adfffff6adfffff6adfffff6adfffef6adfffefcaeffabe3a9ff00b7aeff00b1aaff00b2aaff00b2aaff00bbb4ff00b5d8ff00b5e7ff00b5e7ff00bce5ff00b1aaff00b4acff00b3abff00beb7ff00afa8ff00aca3ff00aca3ff00b1aaff00aca2ff74c19bfffdf2a9fffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8affffdffb5ff726e51ff181712ff242419ff242419ff212017ff313022ff2b2b1eff212017ff1e1d15ff696649ffc4c187ffe4dd9cffddd99affb4af7bff4d4c36ff181712ff242419ff242419ff212017ff161510ff999468fffdffb9fffff6adfffff6adfffff6adfffff6adfffff6adfffef6adfffff9aeffc4deb1ff87bdc8ff89c5d5ff89c5d5ff92c7d7ff00ada4ff00ada6ff00ada6ff00b4acff00aaa3ff00aca3ff00aca3ff00bab2ff00ada5ff00aaa0ff00aba1ff00b2a8ff00aba2ff00b19fffece4a1fffff6acfffff7aefffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffeffb3ffddd696ff25241aff212017ff242419ff242419ff212017ff212017ff1b1b13ff8a8560fffdffb9fffdffb9fffeffb3fffeffb3fffdffb9fff7f8b0ff696649ff181712ff242419ff242419ff201f17ff1e1d15ffc4c187fffdffb5fffff6adfffff6adfffff6adfffef6adfffef6adfffff7acfffff7a9ffb8d9caff8ccfe6ff8ccfe6ff97d1e4ff00aba2ff00aba1ff00aba0ff00b4acff00aaa2ff00ada3ff00aba0ff00b8afff00ada5ff00aba1ff00ada3ff00b2a8ff00ada7ff00aaa0ffa5c894fffef5acfffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffdffb9ff7b7757ff161510ff242419ff242419ff242419ff212017ff313022ffece4a1fffeffb3fffff7aefffff7aefffff7aefffff7aefffeffb3fffefcb4ff5c593fff181712ff242419ff242419ff1b1b13ff42412efff8f0a8fffffab0fffff6adfffff7aefffefdb1fffdffb5fffeffb3fffff8aefffff7a9ff9ed3e2ff8ccfe6ff97d1e4ff00aba2ff00aba1ff00aba1ff00b4acff00aaa2ff00ada3ff00aca0ff00b8afff00b4acff00b3abff00b5adff00b9b3ff00b4acff00b3abff4eba9cfff8f0a8fffef5acfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffeffb3ffe4dd9cff2b2b1eff212017ff242419ff242419ff201f17ff383626fff3eba3fffefdb1fffff7aefffff7aefffff7aefffff7aefffff7aefffeffb3ffece4a1ff313022ff201f17ff242419ff242419ff161510ff9f9a6cfffdffb9fffff7aefffeffb3ffd6ce90ff9f9a6cffbdb882fffff7aefffefcaeffedf2adff9ed3e2ff97d1e4ff00b2abff00b3abff00b3abff00bbb4ff00b7aeff00b5adff00b3abff00beb7ffea3337ffec0000ffec0000fff50f1aff3ca39eff00ada7ff00aca2ffd6d294fffff7acfffef6acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb9ff83815bff161510ff242419ff242419ff242419ff1e1d15ffcac48afffdffb5fffff7aefffff7aefffff7aefffff7aefffff7aefffef7aefffdffb9ff999468ff181712ff242419ff242419ff181712ff4d4c36fffcf5acfffeffb3ff938f64ff42412eff83815bff5c593fff615d48fff3eba3fffefcaeffcce3b0ff00b5afff00aaa3ff00aca3ff00ada6ff00ada4ffea3337ffec0000ffec0000ffea3337fff70000ffff0000ffff0000ffff0000ff009c96ff00ada3ff00a9a3ff74c19bfffdf2a9fffff6acfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffeffb3ffece4a1ff313022ff201f17ff242419ff242419ff181712ff696649fffdffb9fffff8affffff7aefffff7aefffff7aefffff7aefffff7aefffeffb3ffe4dd9cff2b2b1eff212017ff242419ff212017ff212017ffd6ce90fffeffb3ff383626ffb4af7bfffdffb9fffdffb9ff5c593fff83815bfffdffb5fffff7a9ffa1ddb1ff00a6a1ff00aca0ff00ada3ff00b1a8fff90000ffff0000ffff0000ffff0000fff70000ffff0000ffff0000ffff0000ff009c96ff00ada3ff00aba1ff00b19fffe4dd9cfffff7aefffff6adfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb9ff938f64ff161510ff242419ff242419ff242419ff212017ffcac48afffdffb9fffff7aefffff7aefffff7aefffff7aefffff7aefffffab0fffdf4abff42412eff1e1d15ff242419ff242419ff181712ffb4af7bfffdffb9ff7b7757ff938f64fffdffb5fffdffb9ff7b7757ff696649fffdffb5fffef5acfffffaabff58c5a6ff00a9a3ff00ada3ff00ada7fff90000ffff0000ffff0000ffff0000ffea3337ffff0000ffff0000ffff0000ff31aca5ff00b4acff00b4acff00b7afffc8ca9bfffff7a9fffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffefdb1fff3eba3ff383626ff1f1e16ff242419ff242419ff1b1b13ff42412effece4a1fffdffb9fffff7aefffff7aefffff7aefffff7aefffeffb3fff3eba3ff313022ff201f17ff242419ff242419ff161510ffaca776fffdffb9fff8f0a8fff3eba3fffeffb3ffe4dd9cff313022ffcac48afffeffb3fffff8aefffff9aeffedf2adff00c2a9ff00b2aaff00bab4fff50f1affff0000ffff0000ffff000fff23aba3ff00a59cff00a59cff00aaa3ff00aca7ff00aba2ff00aca3ff00b0aaffa2bfacfff3eba3fffff7aefffff7aefffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb9ff9f9a6cff161510ff242419ff242419ff25241aff1b1b13ff42412effd6d294fffdffb9fffdffb9fffdffb5fffdffb9fffeffb3ff7b7757ff1b1b13ff242419ff242419ff242419ff181712ffbdb882fffdffb5fffff8affffff9aefffeffb3ff696649ff726e51fffdffb9fffdffb5ffece4a1ffece4a1fffff8aeffedf2adff00b4a6ff00aca2ff00aaa3ff00a59cff00a59cff00b2aaff00aea9ff00ada3ff00ada3ff00b2abff00ada6ff00aaa0ff00aba1ff00b2abff87bdc8ffddd99afffdf4abfffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffefdb1fff8f0a8ff42412eff1b1b13ff242419ff242419ff25241aff1b1b13ff29291cff7b7757ffbdb882ffc4c187ffa4a071ff4d4c36ff1e1d15ff25241aff242419ff242419ff1b1b13ff383626fff3eba3fffffab0fffef6adfffff9aefff8f0a8ff383626ffd6ce90ffe4dd9cff7b7757ff313022ff999468fffeffb3fffff7acffabe3a9ff00b4acff00aaa6ff00ada3ff00ada3ff00b8afff00ada5ff00aaa0ff00aba1ff00b2aaff00ada6ff00aaa0ff00aca0ff00b0a6ff7fc4d7ffb4ccb9fff8f0a8fffff6acfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb9ffa4a071ff181712ff242419ff242419ff242419ff242419ff212017ff181712ff1b1b13ff1e1d15ff181712ff1b1b13ff242419ff242419ff242419ff1e1d15ff161510ffaca776fffdffb5fffff6adfffef6adfffff7aefffefdb1ff5c593fff42412eff383626ff696649ffd0ca8dfffcf5acfffef5acfffdf2a9fffff7a9ffa1ddb1ff00a6a1ff00ada3ff00aba0ff00b8afff00b3abff00b3abff00b3abff00b9b3ff00b4acff00b3abff00b4acff00b8aeff92c7d7ffa7cfc6ffe4dd9cfffff7acfffef6adfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffffab0fffbf5aeff42412eff1e1d15ff242419ff242419ff242419ff242419ff25241aff181712ff1e1d15ff242419ff242419ff212017ff1e1d15ff14130fff2b2b1effa4a071fffdffb5fffff7aefffff6adfffef6adfffef6acfffeffb3ffc4c187ff83815bffe4dd9cfffdffb5fffefdb1fffdf4abfffdf2a9fffef6adfffefdb1fff9f2b3ff00b0aaff00b4acff00b3abff00beb7ff00afa8ff00aba2ff00aba2ff00b0a4ff00afc5ff00aed6ff00aed6ff00b5d8ff00aca7ff00aca3ffa5c894fffdf4abfffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb9ffb4af7bff181712ff242419ff242419ff242419ff201f17ff42412eff8a8560ff42412eff242419ff1f1e16ff27251bff42412eff8a8560ffe4dd9cfffdffb5fffff7aefffff6adfffef6adfffef6adfffef5acfffef5acfffffab0fffdffb5fffffab0fffdf4abfffdf4abfffef7aefffefdb1fffefcaefff3eba3ff62c6c4ff00a7a5ff00aca3ff00aca3ff00b5afff00ada5ff00aaa0ff00aba1ff00b2a8ff00aed3ff00ade7ff00ade7ff00b5e7ff00ada7ff00a9a3ff02b69efffce1a2fffff7acfffff6adfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffffab0fffffab0ff4d4c36ff1b1b13ff242419ff242419ff242419ff181712ffb4af7bfff7f8b0ffd6d294ffcac48affddd696fffdf4abfffdffb9fffefdb1fffff6adfffff6adfffff6adfffef6adfffef6adfffef5acfffef5acfffef5acfffdf4abfffdf4abfffef7aefffefdb1fffef8affff3eba3ffeed78fff40bfaeff00b5e7ff00aaa2ff00aca0ff00aba0ff00b8afff00ada5ff00aaa0ff00aba0ff00b2a8ff00aed3ff00ade7ff00ade7ff00b5e7ff00ada6ff00aca0ff00aca0ffbbcc9bfffff7acfffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffdffb9ffbdb882ff1b1b13ff212017ff181712ff1b1b13ff42412effaca776fffdffb5fffeffb3fffdffb5fffefdb1fffff8affffff6adfffff6adfffff6adfffff6adfffff6adfffef6adfffef6acfffef5acfffdf4abfffef5acfffff8affffefdb1fffef6adffece4a1ffddd696ffdfcc8cff72c5adff00ade7ff00b5e7ff00aaa1ff00aca0ff00aba0ff00b8afff00b3abff00b3aaff00b3aaff00b9b3ff00b5d4ff00b7e4ff00b5e7ff00bce5ff00b5afff00b4acff00b4acff74c19bfffdf2a9fffef5acfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff9aefffeffb3ff5c593fff1b1b13ff696649ffbdb882fffbf5aefffdffb5fffff7aefffff7aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffef6adfffef5acfffef5acfffff9aefffffab0fffcf5acffece4a1ffd6d294ffd4cc8dffdfcc8cffbbcc9bff00b7e4ff00b7e4ff00bce5ff00b2abff00b4acff00b3aaff00beb7ff00afa8ff00aba2ff00aba2ff00b1aaff00aca7ff00aca3ff00aca3ff00b1aaff00aca7ff00aba2ff00aba2ff00ada4ffddd99afffff8aefffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffefcb4ffddd99affd6ce90fffdffb5fffdffb5fffffab0fffff7aefffff7aefffff7aefffff7aefffff6adfffff6adfffff6adfffff6adfffff6adfffff6adfffef5acfffef6adfffff9aefffffab0fff8f0a8ffece4a1ffd6ce90ffd4cc8dffdfcc8cffd0ca8dffa5c894ff00aaa3ff00ada7ff00aca3ff00b2abff00aaa3ff00aca3ff00aca3ff00b5afff00ada5ff00aaa0ff00aba1ff00b2a8ff00ada6ff00aaa0ff00aba0ff00b2aaff00ada6ff00aba0ff00aca0ff00b3acffbbcc9bfffdf2a9fffff6acfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffeffb3fffeffb3fffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff6adfffff6adfffff7aefffff6acfffef5acfffef6adfffffab0fffff9aefff8f0a8ffe4dd9cffd6ce90ffd4cc8dffdfcc8cffd4cc8dff74c19bff00b0a4ff00b5adff00aaa2ff00aca0ff00aba0ff00b4acff00aaa2ff00ada3ff00aba0ff00b8afff00ada5ff00aaa0ff00aba0ff00b2a8ff00ada6ff00aaa0ff00aba1ff00b2aaff00ada6ff00aba0ff00aaa0ff00b2abff4eba9cffece4a1fffff8aefffef6adfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffff6adfffef5acfffef5acfffef6adfffffab0fffff8affff3eba3ffddd99affd6ce90ffd0ca8dffdfcc8cffc2ca8fff8ac497ff00b0a4ff00aba1ff00aba0ff00b3aaff00aaa1ff00aca0ff00aba1ff00b4acff00aaa2ff00aca0ff00aba0ff00b8afff00b5afff00b3aaff00b3aaff00b9b3ff00b5afff00b3aaff00b3aaff00b9b3ff00b5afff00b3aaff00b3aaff00b9b3ff00b2aaffbbcc9bfffff7a9fffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffff7aefffef6acfffef5acfffef6adfffff9aefffef6adfff3eba3ffddd696ffd4cc8dffd4cc8dffdfcc8cffd6ce90ff98c7a7ff00b4a6ff00b9b3ff00b1aaff00b3aaff00b3aaff00bab4ff00b2abff00b3aaff00b3aaff00bab4ff00b2abff00b3aaff00b3aaff00beb7ff93c1ccff89c5d5ff89c5d5ff9ccad7ff00b2aaff00aba2ff00aca3ff00b1aaff00aca7ff00aba2ff00aba2ff00b0aaffcbad93ffddba87fff3eba3fffff7aefffff6adfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffff7aefffef6acfffef5acfffef6adfffff8affffef5acffece4a1ffddd696ffd4cc8dffd4cc8dffdfcc8cffc2ca8fff74c19bffd1a989ffd5ad8fffe9ac8bffe0b297ff00aaa3ff00aca3ff00aba2ff00b2abff00aaa3ff00aca3ff00aba2ff00b2abff93c1ccff92c7d7ff89c5d5ff9ccad7ff9ccad7ff8ccfe6ff8ccfe6ff9bd3e7ff00b1aaff00aaa0ff00aba1ff00b2aaff00ada6ff00aba0ff00aba1ff00b2abffd5ad8fffffad80ffddd99afffff8aefffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffff7aefffef5acfffdf4abfffef6adfffff8aefffdf2a9ffece4a1ffddd696ffd0ca8dffd4cc8dffdfcc8cffc2ca8fff4eba9cff00b2a2ff00b5adffe9ac8bffffac7effffac7efff7b591ff00aca3ff00ada3ff00aba1ff00b4acff00aaa1ff00aca0ff00aba0ff00b4acff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff00b1aaff00aaa0ff00aba1ff00b2aaff00ada7ff00aba0ff00aba1ff00b3acffd5ad8fffffac7effe6c08dfff8f0a8fffef6adfffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffff7aefffef5acfffdf4abfffef6acfffff7aefff8f0a8ffece4a1ffd6d294ffd4cc8dffd4cc8dffdfcc8cffa5c894ff58c5a6ff00aca3ff00aaa1ff00aaa1ff00b3abffe9ac8bffffac7effffac7efffbb38fff00aba2ff00ada3ff00aba1ff00b4acff00aaa1ff00aca0ff00aba1ff00b4acff92c7d7ff8ccfe6ff8ccfe6ff9bd3e7ff9ccad7ff94d0e2ff97d1e4ffa6d6e7ff00b7b2ff00b4acff00b3aaff00b9b3ff00b5afff00b4acff00b4acff00b9b3ffd1b49cfffbb38fffe6c08dffece4a1fffef7aefffef5acfffff8aefffff7aefffff7aefffff7aefffff7aefffff7aefffff8aefffff7aefffef5acfffdf4abfffef5acfffff6acfff8f0a8ffe4dd9cffd6ce90ffd4cc8dffd4cc8dffd4cc8dffc8ca9bff74c19bff00b8aeff00b9b3ff00b2abff00b4acff00b3aaff00bab4ffe0b297fffbb38ffffbb38ffff2bb9bff00b4acff00b4acff00b4acff00bab4ff00b2abff00b4acff00b3aaff00bab4ff9ccad7ff97d1e4ff94d0e2ffa6d6e7ff00afa8ff00aba2ff00aca3ff00b1aaff00aca7ff00aca3ff00aca3ff00b0aaffcbad93ffecaa88ffe9ac8bffeeb192ff23aba3ff00aba2ff00aca2ffbbcc9bfffff6acfffef5acfffff7aefffff7aefffff7aefffff8aefffff8aefffff7aefffef5acfffdf4abfffef5acfffff6acfff3eba3ffe4dd9cffd6ce90ffd0ca8dffd4cc8dffd4cc8dffc8ca9bffb4ccb9ff00aaa3ff00aaa6ff00aba2ff00b2abff00aaa3ff00aca3ff00aca3ff00b2abff00aaa3ff00aca3ff00aca3ff00b2abffd5ad8fffe9ac8bffe9ac8bffe0b297ff00aaa3ff00aca3ff00aca3ff00b2abff00aca2ff00ada7ff00aca3ff00b5afff00ada5ff00aaa0ff00aba1ff00b2a8ff00ada6ff00aaa0ff00aca0ff00b3acffd5ad8fffffac7effffad80ffffb38aff00aca2ff00ada3ff00aba1ff4eba9cfff3eba3fffff7aefffef6adfffff9aefffff8affffff7aefffef5acfffdf2a9fffef5acfffdf4abfff3eba3ffddd99affd6ce90ffd4cc8dffdfcc8cffdfcc8cffc8ca9bffa7cfc6ff8ccfe6ff9bd3e7ff00ada7ff00aca0ff00aca0ff00b3abff00aba2ff00aca0ff00aca0ff00b3abff00aaa1ff00aba1ff00aba1ff00b4acffe9ac8bffffac7effffac7efff7b591ff00aba2ff00ada3ff00aca0ff00b4acff00aaa2ff00ada3ff00aba0ff00b8afff00ada5ff00aaa0ff00aba1ff00b2a8ff00ada7ff00aaa0ff00aba1ff00b3acffd5ad8fffffac7effffad80ffffb38aff00aca2ff00aba1ff00aba1ff00b2a2ffddd696fffff8aefffef5acfffff7aefffef5acfffdf2a9fffef5acfffdf2a9fff3eba3ffddd99affd4cc8dffd4cc8dffd4cc8dffdfcc8cff8ac497ff22b4abff84c4d3ff8ccfe6ff8ccfe6ff97d1e4ff00ada7ff00aba0ff00aba0ff00b3abff00aba2ff00aba1ff00aba1ff00b3abff00aba2ff00aba1ff00aba1ff00b3aaffe9ac8bffffac7effffac7efff7b591ff00aaa1ff00ada3ff00aba1ff00b3abff00aaa2ff00ada3ff00aba0ff00b8afff00b5afff00b4acff00b4acff00b9b3ff00b5afff00b4adff00b4adff00b9b3ffd1b49cfffbb38ffff7b591fff2bb9bff22b4abff00b4acff00b4acff00b9b3ffbbcc9bfff8f0a8fffff7acfffdf4abfffdf4abfffdf2a9ffece4a1ffddd696ffd4cc8dffd4cc8dffdfcc8cffdfcc8cffbbcc9bff40bfaeff00b1a8ff00b9b3ff92c7d7ff9bd3e7ff97d1e4ff9ed3e2ff00b5afff00b4acff00b4acff00bab4ff00b4acff00b4acff00b4acff00bab4ff00b4acff00b4acff00b4acff00bab4ffe0b297fff7b591fff7b591fff2bb9bff00b4acff00b4adff00b4adff00bab4ff00b2abff00b4acff00b4acff00beb7ff00aca7ff00aba2ff00aba2ff00aea9ffcbad93ffecaa88ffe9ac8bffeeb192ff23aba3ff00aba2ff00aba2ff00b1aaff00ada4ff00aca3ff00aba2ff00aea9ff4eba9cffddd696fff8f0a8fffdf2a9ffece4a1ffddd696ffd4cc8dffd4cc8dffdfcc8cffd6ce90ff8ac497ff02b69eff00a7a5ff00aaa6ff00aba2ff00b1aaff00aaa3ff00aca3ff00aba2ff00b1aaff00accbff00aed6ff00abd8ff00b5d8ff00aaa3ff00aba2ff00aca3ff00b1aaff00aaa3ff00aba2ff00aba2ff00b2abff00aaa3ff00aca3ff00aba2ff00b2abffd5ad8fffecaa88ffecaa88ffe0b297ff00aca2ff00aba2ff00aba2ff00b5afff00aea6ff00aba0ff00aca0ff00b3acffd5ad8fffffac7effffad80ffffb38aff00ada4ff00aba1ff00ada3ff00b2aaff00ada7ff00aca0ff00aca0ff00b2a8ff00ada5ffa5c894ffdfcc8cffd6ce90ffd4cc8dffd4cc8dffdfcc8cffdfcc8cff8ac497ff00b0a4ff00ada3ff00b2aaff00aca3ff00aca0ff00aca0ff00b3abff00aba2ff00aba1ff00aba1ff00b3abff00aed6ff00afe9ff00ade7ff00b5e7ff00ada5ff00aca0ff00aca0ff00b3abff00aba2ff00aca0ff00aca0ff00b4acff00aba2ff00ada3ff00ada3ff00b4acffecaa88ffffac7effffac7efff7b591ff00aaa1ff00ada3ff00aca0ff00b8afff00aea9ff00ada3ff00ada3ff00b2abffd5ad8fffffac7effffad80ffffb38aff00ada4ff00aaa1ff00aba1ff00b2aaff00aca3ff00aba0ff00aba0ff00b2a8ff00aaa6ff4eba9cffdfcc8cffd4cc8dffdfcc8cffc8ca9bff72c5adff00b5d4ff00aaa6ff00aaa0ff00aba1ff00b3abff00ada5ff00ada3ff00ada3ff00b5adff00aca3ff00aba1ff00aba1ff00b3abff00aed6ff00ade7ff00ade7ff00b5e7ff00aba2ff00aba0ff00aba1ff00b3abff00aaa1ff00aba0ff00aba0ff00b3abff00aba2ff00aca0ff00aba1ff00b3aaffecaa88ffffac7effffac7efff7b591ff00aaa2ff00ada3ff00ada3ff00b8afff00b2aaff00b1a8ff00b1a8ff00b7aeffd1b49cfff7b591fff7b591fff2bb9bff22b4abff00b4acff00b4acff00bbb4ff00b5afff00b4adff00b4adff00bbb4ff00b4acff00b7aeffbbcc9bffd4cc8dff98c7a7ff00b5d4ff00b5e7ff00bce5ff00b5afff00b4acff00b4acff00bbb4ff00b3abff00b1a8ff00b1a8ff00bab4ff00b4acff00b4acff00b4acff00bbb4ff00b5d4ff00b7e4ff00b7e4ff00bce5ff00b4acff00b4acff00b4acff00bab4ff00b4acff00b4adff00b4adff00bab4ff00b4acff00b4acff00b4acff00bab4ffe0b297fff7b591fff7b591fff2bb9bff00b2abff00b1a8ff00b1a8ff00bab2ffea3337fff90000fff90000fff70000ff2ba19cff00ada5ff00aba2ff00b0a4ff00aaa3ff00aba2ff00aba2ff00aea6ff87bdc8ff92c7d7ff92c7d7ff9ccad7ff00aca7ff00aaa1ff00aaa2ff00b0a4ff00a7a5ff00aaa2ff00aba2ff00b0aaff00aaa3ff00aba2ff00aba2ff00b0aaffea3337fff90000fff90000fff70000ff00aaa3ff00ada5ff00aaa1ff00b1aaff00aaa3ff00aba2ff00aba2ff00b1aaff00aca2ff00aba2ff00aba2ff00b1aaff93c1ccff92c7d7ff92c7d7ff9ccad7ff00aca2ff00aba2ff00aba2ff00b1aaff00aca2ff00aba2ff00aba2ff00b0a4fff50f1afff90000fff90000fff50f1afff70000ffff0000ffff0000ffff0000ff009c96ff00ada3ff00ada3ff00b2a8ff00ada6ff00aca0ff00ada3ff00b2a8ff84c4d3ff8ccfe6ff8ccfe6ff9bd3e7ff00b0aaff00aba0ff00ada3ff00b5adff00aca3ff00ada3ff00aca0ff00b3abff00ada7ff00ada3ff00ada3ff00b5adffec0000ffff0000ffff0000ffff0000ff00a59cff00ada3ff00ada3ff00b3abff00aba2ff00aca0ff00aca0ff00b3abff00ada5ff00ada3ff00aca0ff00b4acff89c5d5ff8ccfe6ff8ccfe6ff9bd3e7ff00ada5ff00ada3ff00ada3ff00b4acff00aaa1ff00ada3ff00ada3ff00b3aafff90000ffff0000ffff0000ffff0000fff70000ffff0000ffff0000ffff0000ff009c96ff00ada3ff00aba0ff00b2aaff00aca3ff00aba0ff00aba0ff00b0a6ff84c4d3ff8ccfe6ff8ccfe6ff9bd3e7ff00b0aaff00aa9eff00aba0ff00b2aaff00aca3ff00aba0ff00aba0ff00b3abff00aca3ff00aba0ff00aca0ff00b5adffec0000ffff0000ffff0000ffff0000ff00a59cff00ada3ff00aba0ff00b3abff00aba2ff00aba0ff00aba0ff00b3abff00aba2ff00aba0ff00aba0ff00b3abff89c5d5ff8ccfe6ff8ccfe6ff94d0e2ff00aba2ff00aba0ff00aba0ff00b3aaff00aaa1ff00aca0ff00ada3ff00b1a8fff90000ffff0000ffff0000ffff0000ffea3337ffff0000ffff0000ffff000fff3ca39eff00b9b2ff00b7afff00bbb4ff00bab2ff00b7afff00b7afff00bbb4ff9ccad7ff9bd3e7ff9bd3e7ffa6d6e7ff00b7b2ff00b7afff00b7afff00beb7ff00b5afff00b7afff00b7afff00beb7ff00bab2ff00b7afff00b7afff00beb7ffea3337ffff0000ffff0000ffff000fff00b2aaff00b9b2ff00b7afff00beb7ff00b5afff00b7afff00b7afff00beb7ff00b5afff00b7afff00b7afff00beb7ff9ccad7ffa6d6e7ff9bd3e7ffa6d6e7ff00b5afff00b7afff00b7afff00beb7ff00b4acff00b9b2ff00b9b2ff00bab2fff50f1affff0000ffff0000ffff000f";nbChamps=this.numFields;for(var leChamp="- Liste des champs -",listeChamps='var listeChamps = {"'+leChamp+'": '+(nbChamps+1)+",",i=0;i<nbChamps;i++){var nomChamp=this.getNthFieldName(i);if("object"!=typeof this.getField(nomChamp).page)listeChamps+='"'+nomChamp+'": '+(-1*(i+1)).toString()+",";else for(var j=0;j<this.getField(nomChamp).page.length;j++)listeChamps+='"'+nomChamp+"."+j+'": '+(-1*(i+1)).toString()+","}var listeChamps=listeChamps.substring(0,listeChamps.length-1);eval(listeChamps+="}"),resScript="",resAction="",resQuand="";var bDialogue={initialize:function(f){var a={logo:{width:60,height:60,offset:0,read:function(f){return b2.slice(this.offset,this.offset+=f)}}};f.load(a),f.enable({Docu:!1,Acti:!1,Cham:!1}),this.loadDefaults(f)},loadDefaults:function(f){f.load({LCha:listeChamps})},quelScript:function(f){for(var a=0;a<=2;a++)if(f["Rd0"+a])switch(a){case 0:resScript="Document";break;case 1:resScript="Action";break;case 2:resScript="Champ"}return resScript},quelleAction:function(f){for(var a=0;a<=4;a++)if(f["Rd1"+a])switch(a){case 0:resAction="WillClose";break;case 1:resAction="WillSave";break;case 2:resAction="DidSave";break;case 3:resAction="WillPrint";break;case 4:resAction="DidPrint"}return resAction},quand:function(f){for(var a=0;a<=9;a++)if(f["Rd2"+a])switch(a){case 0:resQuand="MouseUp";break;case 1:resQuand="MouseDown";break;case 2:resQuand="MouseEnter";break;case 3:resQuand="MouseExit";break;case 4:resQuand="OnFocus";break;case 5:resQuand="OnBlur";break;case 6:resQuand="Format";break;case 7:resQuand="Keystroke";break;case 8:resQuand="Validate";break;case 9:resQuand="Calculate"}return resQuand},Rd00:function(f){f.enable({Docu:!0,Acti:!1,Cham:!1})},Rd01:function(f){f.enable({Docu:!1,Acti:!0,Cham:!1})},Rd02:function(f){f.enable({Docu:!1,Acti:!1,Cham:!0})},validate:app.trustedFunction(function(bDialogue){app.beginPriv();for(var alerte,oRslt=bDialogue.store(),elements=bDialogue.store().LCha,NoTestMaxi=9,i=0;i<=NoTestMaxi;i++)eval("var testOK"+i+"=true");if(this.quelScript(oRslt)){if("Document"==this.quelScript(oRslt)&&(""==oRslt.name||/^\s+|\s+$/gm.test(oRslt.name)))var testOK1=!1;else if("Action"!=this.quelScript(oRslt)||this.quelleAction(oRslt)){if("Champ"==this.quelScript(oRslt)){if(this.quand(oRslt)){for(var i in elements)elements>0&&(valeurListe=listeChamps,nomListe=i);if(valeurListe>0&&(""==oRslt.nmCh||/^\s+|\s+$/gm.test(oRslt.nmCh)))var testOK4=!1;else{nmChamp=valeurListe>0?oRslt.nmCh:nomListe;try{var leType=getField(nmChamp).type;switch(leType){case"text":var typeBouton="Champ de texte";break;case"checkbox":var typeBouton="Case \xe0 cocher";break;case"radiobutton":var typeBouton="Bouton radio";break;case"listbox":var typeBouton="Zone de liste";break;case"combobox":var typeBouton="Menu d\xe9roulant";break;case"button":var typeBouton="Bouton";break;case"signature":var typeBouton="Signature num\xe9rique"}switch(this.quand(oRslt)){case"Format":var typeScript="Script de format personnalis\xe9";break;case"Keystroke":var typeScript="Script de touches personnalis\xe9";break;case"Validate":var typeScript="Script de validation";break;case"Calculate":var typeScript="Script de calcul"}if(("Calculate"==this.quand(oRslt)||"Validate"==this.quand(oRslt)||"Keystroke"==this.quand(oRslt)||"Format"==this.quand(oRslt))&&"text"!=leType&&"combobox"!=leType)var testOK6=!1;else if(("Calculate"==this.quand(oRslt)||"Validate"==this.quand(oRslt)||"Format"==this.quand(oRslt))&&"listbox"!=leType)var testOK7=!1}catch(e){testOK5=!1}}}else var testOK3=!1}}else var testOK2=!1}else var testOK0=!1;if(""==oRslt.scri)var testOK8=!1;else if(!/\b^[\s\S]*\b(var[ ]+.+[ ]*=)|(event\.(?:change|name|shift|rc|source|changeEx|richChange|target|commitKey|richChangeEx|targetName|fieldFull|richValue|type|keyDown|selEnd|value|modifier|selStart|willCommit))|(this\.getField[(]["']?.+["']?[)])[\s\S]*$/.test(oRslt.scri)||!/[=]/.test(oRslt.scri))var testOK9=!1;for(var txtRetour="var retourAlerte=(",i=0;i<=NoTestMaxi;i++)txtRetour+="testOK"+i,i<NoTestMaxi&&(txtRetour+=" && ");if(eval(txtRetour+=")"),testOK0){if(testOK1){if(testOK2){if(testOK3){if(testOK4){if(testOK5){if(testOK6&&testOK7){if(testOK8){if(!testOK9&&4==app.alert({cMsg:"Le texte entr\xe9 semble ne pas correspondre \xe0 un script JavaScript pour Acrobat.\rVoulez-vous ajouter ce script ?",cTitle:"ATTENTION",nType:2,nIcon:2}))var retourAlerte=!0}else app.alert("Veuillez \xe9crire ou coller un script dans la fen\xeatre ci-contre.",3)}else app.alert('Le champ "'+nmChamp+'" est de type "'+typeBouton+'" et ne peut donc pas ex\xe9cuter un '+typeScript+".",3)}else app.alert('Le champ "'+nmChamp+"\" n'existe pas.",3)}else app.alert("Veuillez s\xe9lectionner ou indiquer un nom de champ.",3)}else app.alert("Veuillez s\xe9lectionner un type de script de champ.",3)}else app.alert("Veuillez s\xe9lectionner un script d'action de document.",3)}else app.alert("Veuillez indiquer un nom de script correct.",3)}else app.alert("Veuillez s\xe9lectionner un type de script.",3);return retourAlerte}),commit:function(f){var a=f.store(),$=f.store().LCha;for(var b in leScript=a.scri,nomScript=a.name,$)$>0&&(valeurListe=listeChamps,nomListe=b);nmChamp=valeurListe>0?a.nmCh:nomListe},description:{name:"b2Tools - Ajouter un Script",elements:[{type:"view",elements:[{type:"view",align_children:"align_top",elements:[{type:"view",elements:[{type:"static_text",name:"\xc9crivez ou collez un script dans la fen\xeatre ci-dessous.",alignment:"align_left",font:"dialog"},{type:"edit_text",item_id:"scri",width:400,height:485,multiline:!0,alignment:"align_fill"},]},]},]},{type:"view",elements:[{type:"view",align_children:"align_top",elements:[{type:"view",elements:[{type:"image",item_id:"logo",width:64,height:64},]},{type:"view",char_width:40,elements:[{type:"static_text",name:"AJOUTER UN SCRIPT",char_width:25,alignment:"align_center",font:"dialog",bold:!0},{type:"static_text",item_id:"stat",name:"bebarth (04/24)",alignment:"align_center",font:"palette",bold:!0,char_width:10,height:20},{type:"view",alignment:"align_center",align_children:"align_row",elements:[{type:"static_text",name:"Scripts : ",font:"dialog",bold:!0},{type:"radio",group_id:"GRP0",item_id:"Rd00",name:" du document"},{type:"radio",group_id:"GRP0",item_id:"Rd01",name:" Actions du document"},{type:"radio",group_id:"GRP0",item_id:"Rd02",name:" de champ"},]},]},]},{type:"gap",height:3},{type:"view",group_id:"Docu",alignment:"align_fill",elements:[{type:"static_text",name:"Scripts JavaScript du document",font:"dialog",bold:!0},{type:"cluster",item_id:"Docu",elements:[{type:"static_text",name:"Nom du script :"},{type:"edit_text",item_id:"name",height:20,alignment:"align_fill"},]},]},{type:"view",alignment:"align_fill",elements:[{type:"static_text",name:"Actions du document",font:"dialog",bold:!0},{type:"cluster",item_id:"Acti",align_children:"align_top",elements:[{type:"view",elements:[{type:"radio",group_id:"GRP1",item_id:"Rd10",name:" Le document sera ferm\xe9"},{type:"radio",group_id:"GRP1",item_id:"Rd11",name:" Le document sera enregistr\xe9"},{type:"radio",group_id:"GRP1",item_id:"Rd12",name:" Le document a \xe9t\xe9 enregistr\xe9"},]},{type:"static_text",name:" "},{type:"view",elements:[{type:"radio",group_id:"GRP1",item_id:"Rd13",name:" Le document sera imprim\xe9"},{type:"radio",group_id:"GRP1",item_id:"Rd14",name:" Le document a \xe9t\xe9 imprim\xe9"},]},]},]},{type:"view",alignment:"align_fill",elements:[{type:"static_text",name:"Scripts de champ",font:"dialog",bold:!0},{type:"cluster",item_id:"Cham",align_children:"align_top",elements:[{type:"view",elements:[{type:"static_text",name:"Nom du champ",font:"dialog",bold:!0},{type:"static_text",name:"S\xe9lectionnez..."},{type:"popup",item_id:"LCha",width:100,alignment:"align_fill"},{type:"static_text",name:"ou indiquez son nom :"},{type:"edit_text",item_id:"nmCh",height:20,alignment:"align_fill"},]},{type:"static_text",name:" "},{type:"view",elements:[{type:"static_text",name:"Action",font:"dialog",bold:!0},{type:"radio",group_id:"GRP2",item_id:"Rd20",name:" Souris rel\xe2ch\xe9e"},{type:"radio",group_id:"GRP2",item_id:"Rd21",name:" Souris enfonc\xe9e"},{type:"radio",group_id:"GRP2",item_id:"Rd22",name:" Souris entr\xe9e"},{type:"radio",group_id:"GRP2",item_id:"Rd23",name:" Souris sortie"},{type:"radio",group_id:"GRP2",item_id:"Rd24",name:" Champ activ\xe9"},{type:"radio",group_id:"GRP2",item_id:"Rd25",name:" Champ d\xe9sactiv\xe9"},]},{type:"static_text",name:" "},{type:"view",elements:[{type:"static_text",name:"Format",font:"dialog",bold:!0},{type:"radio",group_id:"GRP2",item_id:"Rd26",name:" Script de format"},{type:"radio",group_id:"GRP2",item_id:"Rd27",name:" Script de touches"},{type:"static_text",name:"Validation",font:"dialog",bold:!0},{type:"radio",group_id:"GRP2",item_id:"Rd28",name:" Script de validation"},{type:"static_text",name:"Calcul",font:"dialog",bold:!0},{type:"radio",group_id:"GRP2",item_id:"Rd29",name:" Script de calcul"},]},]},]},{type:"gap",height:5},{type:"ok_cancel"},]},]}};"ok"==app.execDialog(bDialogue)&&("Document"==resScript?this.addScript(nomScript,leScript):"Action"==resScript?this.setAction(resAction,leScript):this.getField(nmChamp).setAction(resQuand,leScript));

    Sur demande, je peux vous donner la version originale de ce script ou de celui qui fonctionne en script d’application.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74524
    bebarth
    Maître des clés

    bonjour,
    Dans les boucles de vérifications, i est le premier indice et j le second. Donc si il y a des seconds indices qui commencent à 0, il faut écrire : “for (var j=0; j<lesSeries[1].length; j++)…”

    S’il n’y a aucun message à afficher : ne pas afficher la console

    ...
    if (txt) {
    console.clear();
    console.show();
    console.println(txt);
    }

    Pour info, var reponse=reponse.replace(/[,]{2,}/g,",").replace(/^,/,"").replace(/,$/,""); supprime les éventuelles virgules en début et fin de chaine, et remplace les virgules multiples par une simple. J’avais rajouté cette ligne au cas ou il y avait une erreur de frappe dans la boite de dialogue, mais cette ligne n’est pas nécessaire si on écrit la chaine dans la ligne de code. Je suppose que celui qui lancera le script fera attention à ce qu’il écrit !

    @+
    😎

    en réponse à : Multiliste déroulante #74514
    bebarth
    Maître des clés

    Du coup j’ai remis l’ancien script d’affichage de la page 2 et j’ai rajouter un script de calcul pour les menus déroulants :

    // Script Affichage Page 2
    var modeles=this.templates;
    for (i=0; i<modeles.length; i++) {
    if (modeles.name=="page2") {
    modeles.hidden=(event.target.value=="Off");
    break;
    }
    }
    this.pageNum=0;

    // Script de calcul des menus déroulants
    if (this.getField("Canal").value && this.getField("Départ.0").value && this.getField("Arrivée.0").value!="- Sélectionnez -") {
    this.getField("Check Box1").display=display.noPrint;
    } else {
    this.getField("Check Box1").display=display.hidden;
    this.getField("Check Box1").value="Off";
    var modeles=this.templates;
    for (i=0; i<modeles.length; i++) {
    if (modeles.name=="page2") {
    modeles.hidden=true;
    break;
    }
    }
    this.pageNum=0;
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Multiliste déroulante #74510
    bebarth
    Maître des clés

    bonjour,
    Voici un nouveau fichier. Ici, la case à cocher ne s’imprimera pas et la page 2 sera affichée uniquement si les 3 menus déroulants sont renseignés lorsque cette case est cochée.

    // Script Affichage Page 2
    if (this.getField(“Canal”).value && this.getField(“Départ.0”).value && this.getField(“Arrivée.0”).value) {
    var modeles=this.templates;
    for (i=0; i<modeles.length; i++) {
    if (modeles.name==”page2″) {
    modeles.hidden=(event.target.value==”Off”);
    break;
    }
    }
    this.pageNum=0;
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74505
    bebarth
    Maître des clés

    bonjour,
    Voici donc un script pour vérifier les indices de tes champs :
    var reponse="";
    while (!/^(\w+,*)+$/.test(reponse)) {
    var reponse=app.response({
    cQuestion: "Indiquez les différents noms de champs en les séparant par une virgule. Exemple :",
    cTitle: "Vérification des indices de champs",
    cDefault: "Verifier,Recommencer,Titre,Question,Q,R,Aide,cAc",
    cLabel: "Champ(s) :"
    });
    }
    if (reponse!=null) {
    var reponse=reponse.replace(/[,]{2,}/g,",").replace(/^,/,"").replace(/,$/,"");
    var aVerifier=reponse.split(",");
    var lesSeries=[];
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    for (var j=0; j<aVerifier.length; j++) {
    var RegExTest=new RegExp("^"+aVerifier[j]+"\\.(\\d+)\\.(\\d+)$");
    var OK=nomChamp.match(RegExTest);
    if (OK) {
    var ind1=OK[1];
    var ind2=OK[2];
    if (lesSeries[j]==undefined) lesSeries[j]=[aVerifier[j],[]];
    if (lesSeries[j][1][ind1]==undefined) lesSeries[j][1][ind1]=[ind1,[]];
    if (lesSeries[j][1][ind1][1][ind2]==undefined) lesSeries[j][1][ind1][1][ind2]=[ind2];
    break;
    }
    }
    }
    var txt=""
    for (var ind=0; ind<lesSeries.length; ind++) {
    if (lesSeries[ind]==undefined) txt+="Il n'y a pas de champ \""+aVerifier[ind]+"\" avec indices.\r";
    else {
    for (var j=1; j<lesSeries[ind][1].length; j++) {
    if (lesSeries[ind][1][j]==undefined) txt+="Il n'y a pas d'indice de premier niveau \""+aVerifier[ind]+"."+[j]+"\".\r";
    else {
    for (var k=1; k<lesSeries[ind][1][j][1].length; k++) {
    if (lesSeries[ind][1][j][1][k]==undefined) txt+="Il n'y a pas d'indice de second niveau \""+aVerifier[ind]+"."+[j]+"."+k+"\".\r";
    }
    }
    }
    }
    }
    if (!txt) txt="Tout est OK !!!";
    console.clear();
    console.show();
    console.println(txt);
    }

    Ce script tient compte qu’il n’y a apparemment pas d’indices 0 pour tes champs. Je joint un fichier où le script regarde si il y a des indices 0.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74493
    bebarth
    Maître des clés

    …dans le principe c’est à peu près ça, et je voyais ça pas si compliqué, mais je crois que je me suis lancé dans une usine à gaz ! Je reprendrai à zéro ce weekend et à tête reposée…

    @+
    😎

    en réponse à : Vérification #74483
    bebarth
    Maître des clés

    Toujours le souci d’affichage sur le forum lorsqu’un “i” est entre crochets “[]” !
    J’ai changé le “i” en “k” dans le script précédent, ça devrait marcher beaucoup mieux maintenant !

    @+
    😎

    en réponse à : Vérification #74479
    bebarth
    Maître des clés

    Ça marche chez moi… et avec ton dernier fichier !
    Je regarde plus tard.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Couleur des champs et impression #74472
    bebarth
    Maître des clés

    bonjour,
    Il faut ajouter 2 scripts d'”Actions du document”, mais cela dépend de si tous les champs ont ou pas la même couleur de fond.

    Admettons qu’il sont tous en “Light Gray”.
    Script “Le document sera imprimé” :
    for (var i=0; i<this.numFields; i++) this.getField(this.getNthFieldName(i)).fillColor=color.transparent;
    Script “Le document a été imprimé” :
    for (var i=0; i<this.numFields; i++) this.getField(this.getNthFieldName(i)).fillColor=color.ltGray;

    Si tous les champs ont une couleur différente (ou presque…).
    Script “Le document sera imprimé” :
    lesCouleurs=[];
    for (var i=0; i<this.numFields; i++) {
    lesCouleurs.push(this.getField(this.getNthFieldName(i)).fillColor);
    this.getField(this.getNthFieldName(i)).fillColor=color.transparent;
    }
    Script “Le document a été imprimé” :
    for (var i=0; i<this.numFields; i++) this.getField(this.getNthFieldName(i)).fillColor=lesCouleurs;

    @+
    😎

    en réponse à : Vérification #74469
    bebarth
    Maître des clés

    bonjour,

    Sinon ta proposition précédente me va très bien.

    Très bien ! Mais perso il fallait que je trouve.
    Voici donc un script qui fonctionne avec ton fichier :

    var lesChamps=[];
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (typeof this.getField(nomChamp).page=="object") {
    lesChamps.push([nomChamp,this.getField(nomChamp).page])
    }
    }
    if (lesChamps.length) {
    var leTexte="";
    for (var k=0; k<lesChamps.length; k++) {
    var nom=lesChamps[k][0];
    var lesPages=lesChamps[k][1];
    for (var j=0; j<lesPages.length; j++) lesPages[j]=lesPages[j]+1;
    var frequences={};
    for (var j=0; j<lesPages.length; j++) {
    var nb=lesPages[j];
    if (frequences[nb]===undefined) frequences[nb]=1;
    else frequences[nb]++;
    }
    var parPage=[];
    var txt="• \""+nom+"\" - ";
    for (var nb in frequences) parPage.push(frequences[nb]+" fois en page "+nb);
    var parPage=parPage.toString();
    var n=parPage.lastIndexOf(",");
    if (n>-1) var parPage=(parPage.substring(0,n)+" et "+parPage.substring(n+1)).replace(/,/g,", ");
    if (!leTexte) leTexte+="Champs dupliqués :";
    leTexte+="\r"+txt+parPage+".";

    }
    console.clear();
    console.show();
    console.println(leTexte);
    app.alert(leTexte,3);
    } else app.alert("Tout est OK !!!",3);

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74437
    bebarth
    Maître des clés

    Je pense que c’est une erreur de script.

    Ce champ est le dernier et si on le supprime, ça fait la même chose avec le nouveau dernier champ.

    De ce que j’ai pu constater, ça ne fait ça que si il n’y a pas de champs multiples.

    Je ne peux pas regarder aujourd’hui…

    @+
    😎

    en réponse à : Vérification #74435
    bebarth
    Maître des clés

    bonjour,
    Etrange, effectivement ! Juste ce champ… Je regarde dès que je peux.

    @+
    😎

    en réponse à : Vérification #74432
    bebarth
    Maître des clés

    L’idéal serait encore de ne pas citer x fois la page lorsque le champ se trouve plusieurs fois sur cette page…

    Ça me trottait dans la tête :
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (typeof this.getField(nomChamp).page=="object") {
    var lesPages=this.getField(nomChamp).page;
    }
    }
    for (var j=0; j<lesPages.length; j++) lesPages[j]=lesPages[j]+1;
    var frequences={};
    for (var i=0; i<lesPages.length; i++) {
    var nb=lesPages;
    if (frequences[nb]===undefined) frequences[nb]=1;
    else frequences[nb]++;
    }
    var parPage=[];
    var txt="Le champ \""+nomChamp+"\" n'est pas unique; il se trouve "
    for (var nb in frequences) parPage.push(frequences[nb]+" fois en page "+nb);
    if (parPage.length>1) txt+=": ";
    var parPage=parPage.toString();
    var n=parPage.lastIndexOf(",");
    if (n>-1) var parPage=(parPage.substring(0,n)+" et "+parPage.substring(n+1)).replace(/,/g,", ");
    app.alert(txt+=parPage+".",3);

    @+
    😎

    en réponse à : Vérification #74428
    bebarth
    Maître des clés

    Maintenant je vais essayer de transformer la valeur this.getField(nomChamp).page pour que la numérotation commence à 1 et non pas à 0. Je pensais qu’il fallait convertir cette chaine en nombre avant de lui ajouter 1 mais je crois que ce n’est pas si simple.

    Tu peux écrire :
    function doublons() {
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (typeof this.getField(nomChamp).page=="object") {
    var lesPages=this.getField(nomChamp).page;
    for (var j=0; j<lesPages.length; j++) lesPages[j]=lesPages[j]+1;
    var lesPages=lesPages.toString();
    var n=lesPages.lastIndexOf(",");
    var lesPages=(lesPages.substring(0,n)+" et "+lesPages.substring(n+1)).replace(/,/g,", ");
    app.alert("Le champ \""+nomChamp+"\" n'est pas unique; il se trouve sur la(les) page(s) : "+lesPages,3);
    }
    }
    }

    L’idéal serait encore de ne pas citer x fois la page lorsque le champ se trouve plusieurs fois sur cette page…

    @+
    😎

    en réponse à : Vérification #74423
    bebarth
    Maître des clés

    bonjour,
    Si tu listes juste les noms des champs, tu ne trouveras pas de doublons !
    Pour cela, il faut vérifier le paramètre “page” de chaque champ : si c’est un nombre le champ n’existe qu’une fois et si c’est une table, elle indique ou sont ces champs.

    Voici un script simple pour vérifier :
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (typeof this.getField(nomChamp).page=="object") app.alert("Le champ \""+nomChamp+"\" est présent sur en page(s) : "+this.getField(nomChamp).page,3);
    }
    Ici la table des pages est listée, donc les numéros sont basés sur 0 et peuvent être identiques…

    @+
    😎

    en réponse à : Vérification #74417
    bebarth
    Maître des clés

    bonjour,
    Voici quelques lignes que j’avais écrites il y a un certain temps et que j’utilise pour gérer les doublons d’une table.

    // Suppression des doublons
    var laTable=["pomme","banane","orange","pomme","banane","pomme"];
    console.println("laTable : "+laTable);
    function sansDoublons(uneTable) {
    return uneTable.filter((valeur,indice)=>uneTable.indexOf(valeur)===indice);
    }
    console.println("laTable sans doublons mais non triée : "+sansDoublons(laTable));
    // Retour : laTable sans doublons mais non triée : pomme,banane,orange

    // Suppression des doublons
    var laTable=["pomme","banane","orange","pomme","banane","pomme"];
    console.println("laTable : "+laTable);
    function sansDoublons(uneTable){
    var newArr=[];
    for (var i=0; i<uneTable.length; i++) {
    if (newArr.indexOf(uneTable)===-1) newArr.push(uneTable);
    }
    return newArr;
    }
    console.println("laTable sans doublons mais non triée : "+sansDoublons(laTable));
    // Retour : laTable sans doublons mais non triée : pomme,banane,orange

    // Tous les doublons
    var laTable=["pomme","banane","orange","pomme","banane","pomme"];
    console.println("laTable : "+laTable);
    function lesDoublons(uneTable) {
    return uneTable.filter((valeur,indice)=>uneTable.indexOf(valeur)!==indice);
    }
    console.println("Tous les doublons : "+lesDoublons(laTable));
    // Retour : Tous les doublons : pomme,banane,pomme

    // Tous les doublons uniques
    var laTable=["pomme","banane","orange","pomme","banane","pomme"];
    console.println("laTable : "+laTable);
    function lesDoublonsUniques(uneTable){
    var newArr=[];
    for (var i=0; i<uneTable.length; i++) {
    if (newArr.indexOf(uneTable)===-1 && uneTable.indexOf(uneTable)!==i) newArr.push(uneTable);
    }
    return newArr;
    }
    console.println("Tous les doublons : "+lesDoublonsUniques(laTable));
    // Retour : Tous les doublons : pomme,banane

    // Suppression des doublons et tri
    var laTable=["pomme","banane","orange","pomme","banane","pomme"];
    console.println("laTable : "+laTable);
    function triSansDoublons(uneTable) {
    return uneTable.sort().filter(function(valeur,indice,cetteTable) {
    return !indice || valeur!=cetteTable[indice-1];
    });
    }
    console.println("laTable sans doublons mais triée : "+triSansDoublons(laTable));
    // Retour : laTable sans doublons mais triée : banane,orange,pomme

    @+
    😎

    en réponse à : Multiliste déroulante #74415
    bebarth
    Maître des clés

    bonjour,
    Voici ce que j’ai fait aujourd’hui. J’espère que cela te convient. Pour cacher les fichiers attaché on pourrait faire une tempo toutes les secondes par exemple, mais ça veut dire que le fichier est perpétuellement en calcul !

    Voici tous les scripts que j’ai utilisé. Si tu es débutant ça va peut-être un peu compliqué pour toi à comprendre : Il y a des scripts de document, des fonctions, une page modèle…

    // Script de document
    //
    var nbDepart=0;
    for (var i=0; i<this.numFields; i++) {
    if (/^Départ\.\d+/.test(this.getNthFieldName(i))) nbDepart++;
    }
    var fichier=this.getDataObjectContents("Départ.csv");
    var donnees=util.stringFromStream(fichier);
    var lignes=donnees.split("\r\n");
    var colonnes=new Array();
    for (var i=0 ; i<lignes.length ; i++) colonnes=lignes.split(";");
    var colonne0=[];
    for (var j=0 ; j<colonnes.length ; j++) {
    if (colonnes[j][0]) colonne0.push([colonnes[j][0]]);
    }
    for (var i=1; i<=colonne0.length; i++) {
    eval("var colonne"+(i+1)+"=[];");
    for (var j=0 ; j<colonnes.length ; j++) {
    if (colonnes[j]) eval("colonne"+(i+1)).push(colonnes[j]);
    }
    }
    colonne0[0].push(0);
    for (var i=1; i<colonne0.length; i++) {
    colonne0.push(eval("colonne"+(i+1)))
    }
    // Fichier "Départ Arrivée.csv"
    var fichierDA=this.getDataObjectContents("Départ Arrivée.csv");
    var donneesDA=util.stringFromStream(fichierDA);
    var lignesDA=donneesDA.split("\r\n");
    var colonnesDA=new Array();
    for (var i=0 ; i<lignesDA.length ; i++) colonnesDA=lignesDA.split(";");
    for (var i=1; i<=colonnesDA[0].length; i++) {
    eval("var colonne"+(i+1)+"DA=[\"- Sélectionnez -\"];");
    for (var j=1 ; j<colonnesDA.length ; j++) {
    if (colonnesDA[j]) eval("colonne"+(i+1)+"DA").push(colonnesDA[j]);
    }
    }
    //
    var leCanal=this.getField("Canal").value;
    this.getField("Canal").clearItems();
    this.getField("Canal").setItems(colonne0);
    this.getField("Canal").value=leCanal;
    //
    function menuCanal(laValeur) {
    try {
    for (var i=0; i<nbDepart; i++) {
    this.getField("Départ."+i).clearItems();
    this.getField("Arrivée."+i).clearItems();
    }
    if (laValeur!=0) {
    var leMenu=laValeur.split(",");
    var ind=leMenu[0].substr("Canal ".length);
    leMenu[0]=["- Sélectionnez -",0];
    for (var i=1; i<leMenu.length; i++) {
    leMenu=[leMenu,eval("colonne"+(i+1)+"DA")];
    }
    for (var i=0; i<nbDepart; i++) {
    this.getField("Départ."+i).clearItems();
    this.getField("Départ."+i).setItems(leMenu);
    }
    }
    } catch(e) {}
    }
    //
    function menuDepart(ind,laValeur) {
    this.getField("Arrivée."+ind).clearItems();
    this.getField("Arrivée."+ind).setItems(laValeur.split(","));
    }
    function menuArrivee(leChamp) {
    try {
    var ind=leChamp.name.substring(leChamp.name.indexOf(".")+1);
    var laTable=this.getField("Départ."+ind).value.split(",");
    for (var i=0; i<nbDepart; i++) {
    if (i==ind) continue;
    for (j=0; j<leChamp.numItems; j++) {
    if (this.getField("Départ."+i).getItemAt(this.getField("Départ."+i).currentValueIndices,false)==this.getField("Départ."+ind).getItemAt(this.getField("Départ."+ind).currentValueIndices,false) && this.getField("Arrivée."+i).value==laTable[j]) laTable.splice(j,1);
    }
    }
    var lArrivee=leChamp.value;
    leChamp.clearItems();
    leChamp.setItems(laTable);
    leChamp.value=lArrivee;
    } catch(e) {}
    }

    // Script de touches personnalisé Menu "Canal"
    if (!event.willCommit) menuCanal(event.changeEx);

    // Script de touches personnalisé Menu "Départ"
    if (!event.willCommit) menuDepart(event.target.name.substring(event.target.name.indexOf(".")+1),event.changeEx);

    // Ajout Script de touches personnalisé de tous les Menus "Départ"
    for (var i=0; i<30; i++) {
    this.getField("Départ."+i).setAction("Keystroke","if (!event.willCommit) menuDepart(event.target.name.substring(event.target.name.indexOf(\".\")+1),event.changeEx);");
    }

    // Souris entrée de tous les Menus "Arrivée"
    menuArrivee(event.target);

    // Ajout Script Souris entrée de tous les Menus "Arrivée"
    for (var i=0; i<30; i++) {
    this.getField("Arrivée."+i).setAction("MouseEnter","menuArrivee(event.target);");
    }

    // Script d'ouverture de page
    if (app.viewerType!="Exchange-Pro") this.viewState={overViewMode:2};
    this.viewState={overViewMode:5}

    // Script Affichage Page 2
    var modeles=this.templates;
    for (i=0; i<modeles.length; i++) {
    if (modeles.name=="page2") {
    modeles.hidden=(event.target.value=="Off");
    break;
    }
    }
    this.pageNum=0;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Multiliste déroulante #74404
    bebarth
    Maître des clés

    On peut pas dupliquer le même choix de la liste déroulante (Départ) ou bien (Arrivée) de la page 1 sur les autre listes déroulante de la page 2. C’est-à-dire, si on sélectionne un choix (Départ et Arrivée) sur la page 1 pdf , les autres listes déroulantes de page 2 sera vide, afin qu’on aura la possibilité de sélectionner un autre choix diffèrent sur chaque liste déroulante (Départ et Arrivée) page2.

    Ça demande réflexion… une chose est sûre c’est que ce n’est pas simple et que les différents noms de champs ne peuvent pas être identiques à ceux de la page 1.  Je regarderai ça jeudi.

    (page 2 c’est une page supplémentaire, c’est pour cela que je voudrais que cette page soit masquer et elle sera afficher si besoin via case à cocher non imprimable).

    Pages 2 et 3 donc ! Ça ne devrait pas être compliqué, dès que le problème précédent sera résolu.

    D’autre question s’ils vous plait, serait-il possible masquer les pièces jointes (excel.csv) pour que les autres utilisateurs de ce fichier pdf ne pourront pas accéder au pièces jointes, et ils n’auront donc pas la possibilité de les modifier?

    Ça c’est une bonne question dont je n’ai pas encore la réponse. On pourra peut-être caché ce panneau pour les utilisateurs de Reader, par exemple… Faut essayer.

    @Merlin
    : Tu as une idée ???

    @+
    😎

    en réponse à : Multiliste déroulante #74398
    bebarth
    Maître des clés

    bonjour,
    Voici déjà un fichier pour la première partie. Les données doivent être en pièces jointes du fichier .pdf au format .csv. Il n’est donc pas possible d’avoir des onglets et il faut donc joindre 2 fichiers séparés.
    Et les scripts utilisés dans ce fichier :
    // Script de document
    //
    var fichier=this.getDataObjectContents("Départ.csv");
    var donnees=util.stringFromStream(fichier);
    var lignes=donnees.split("\r\n");
    var colonnes=new Array();
    for (var i=0 ; i<lignes.length ; i++) colonnes=lignes.split(";");
    var colonne0=[];
    for (var j=0 ; j<colonnes.length ; j++) {
    if (colonnes[j][0]) colonne0.push([colonnes[j][0]]);
    }
    for (var i=1; i<=colonne0.length; i++) {
    eval("var colonne"+(i+1)+"=[];");
    for (var j=0 ; j<colonnes.length ; j++) {
    if (colonnes[j]) eval("colonne"+(i+1)).push(colonnes[j]);
    }
    }
    colonne0[0].push(0);
    for (var i=1; i<colonne0.length; i++) {
    colonne0.push(eval("colonne"+(i+1)))
    }
    //
    var fichier1=this.getDataObjectContents("Départ Arrivée.csv");
    var donnees1=util.stringFromStream(fichier1);
    var lignes1=donnees1.split("\r\n");
    var colonnes1=new Array();
    for (var i=0 ; i<lignes1.length ; i++) colonnes1=lignes1.split(";");
    for (var i=1; i<=colonnes1[0].length; i++) {
    eval("var colonne"+(i+1)+"1=[\"- Sélectionnez -\"];");
    for (var j=1 ; j<colonnes1.length ; j++) {
    if (colonnes1[j]) eval("colonne"+(i+1)+"1").push(colonnes1[j]);
    }
    }
    //
    var leCanal=this.getField("Canal").value;
    this.getField("Canal").clearItems();
    this.getField("Canal").setItems(colonne0);
    this.getField("Canal").value=leCanal;

    // Script de touches personnalisé Menu "Canal"
    if (!event.willCommit) {
    this.getField("Départ").clearItems();
    this.getField("Arrivée").clearItems();
    if (event.changeEx!=0) {
    var leMenu=event.changeEx.split(",");
    var ind=leMenu[0].substr("Canal ".length);
    leMenu[0]=["- Sélectionnez -",0];
    for (var i=1; i<leMenu.length; i++) {
    leMenu=[leMenu,eval("colonne"+(i+1)+"1")];
    }
    this.getField("Départ").clearItems();
    this.getField("Départ").setItems(leMenu);
    }
    }

    // Script de touches personnalisé Menu "Départ"
    if (!event.willCommit) {
    this.getField("Arrivée").clearItems();
    if (event.changeEx!=0) {
    this.getField("Arrivée").clearItems();
    this.getField("Arrivée").setItems(event.changeEx.split(","));
    }
    }

    Le reste des listes déroulantes de la page 2 du PDF seront alimentées séparément quand on sélectionnera un choix, et non pas toutes à la fois avec le même choix. Et serait-il possible que la deuxième page PDF soit masquée au besoin via une case à cocher non imprimable ?

    Pour ça il me faudra quelques explications car je n’ai pas compris…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Multiliste déroulante #74397
    bebarth
    Maître des clés

    Je regarde ça dès que possible.

    @+
    😎

    en réponse à : Multiliste déroulante #74393
    bebarth
    Maître des clés

    bonjour,
    Moi je veux bien aider, mais il faudrait m’expliquer car je n’ai rien compris à ce que tu voulais faire…

    @+
    😎

    en réponse à : Position des champs #74391
    bebarth
    Maître des clés

    bonjour,
    Comme indiqué précédemment, il faut utiliser “valueAsString” pour ces 2 fonctions :
    function CorrQuest(ind) {
    var q=this.getField("Q."+ind);
    var r=this.getField("R."+ind);
    if (event.target.value!="Off") {
    var f=this.addField("tempo."+ind, r.type, q.page, q.rect);
    for (var j in f) {
    try {
    if (typeof f[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=r[j];
    } catch(e) {}
    }
    f.value=r.valueAsString.split("|")[0];
    f.textSize=q.textSize;
    q.display=display.hidden;
    } else {
    this.removeField("tempo."+ind);
    q.display=display.visible;
    q.readonly=false;
    }
    }
    et
    function corriger(ind) {
    var a = this.getField("cAc."+ind+"."+0).value;
    console.println("indice : " +ind);
    var nCompt = 0;
    for (var i = 0 ; i < this.numFields ; i++) {
    var oChamp = this.getField(this.getNthFieldName(i));
    if ((oChamp.type == "checkbox") && (/cAc./.test(oChamp.name))) {nCompt = nCompt + 1;}
    }
    var nbChamps=0;
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("R."+ind+".")==0) nbChamps++;
    }
    for (b=1 ; b<=nbChamps ; b++) {
    var q=this.getField("Q."+ind+"."+b);
    var r=this.getField("R."+ind+"."+b);
    if (a!="Off") {
    var f=this.addField("tempo."+ind+"."+b, r.type, q.page, q.rect);
    for (var j in f) {
    try {
    if (typeof f[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=r[j];
    } catch(e) {}
    }
    f.value=r.valueAsString.split("|")[0];
    f.textSize=q.textSize;
    q.display=display.hidden;
    this.getField("cAc."+ind+"."+b).value = 1;
    } else {
    this.removeField("tempo."+ind);
    q.display=display.visible;
    q.readonly=false;
    this.getField("cAc."+ind+"."+b).value = "Off";
    }
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74371
    bebarth
    Maître des clés

    bonjour,

    Par contre si je sélectionne les 3 premières cases par exemple (cAc.3.1 à c.A.c.3.3), là tout va bien mais quand je décoche l’une de ces cases (par exemple c.A.c.3.2), alors les 2 champs Q.3.1 et Q.3.3 restent masqués alors que je voudrais qu’ils redeviennent visibles.

    Lorsque tu supprimes le champ, il faut ajouter l’indice au nom du champ : this.removeField("tempo."+ind);

    L’autre truc que je n’arrive pas à faire, c’est la mise en place de la case : “Case.3” permettant de cocher ou décocher d’un seul coup toutes les cases c.A.c…..

    Les “+” sont mal placés. Il faut écrire : ...this.getField("cAc."+ind+"."+b).value = "Off";... et ...this.getField("cAc."+ind+"."+b).value =1;... Par contre cela coche ou décoche juste les cases mais n’affiche ou ne cache pas les réponses comme lorsque l’on coche les cases individuellement. pour cela il faudrait mettre cela en fonction puis faire une boucle pour rappeler ces fonctions.

    Je regarderai lundi si tu n’y arrives pas !

    @+
    😎

    en réponse à : Position des champs #74366
    bebarth
    Maître des clés

    bonjour,

    dans le cas ou plusieurs réponses sont acceptées (dans le champ R.a.b avec le séparateur | entre chaque réponse acceptable), j’aimerais que dans ce cas précis, seule la chaine de caractère se trouvant avant le 1er séparateur s’affiche.

    Il faut rajouter cette ligne : f.value=r.value.split("|")[0];

    J’aimerais également que la taille de la police du champ R.a.b soit remplacée par celle du champ Q.a.b lorsque la case est cochée.

    Et celle-ci : f.textSize=q.textSize;

    Ci-joint un nouveau fichier.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74359
    bebarth
    Maître des clés

    Je me suis posé la question à savoir s’il n’y avait qu’une seule ou plusieurs cases à cocher.

    En fait, cela dépend de ce que tu veux faire exactement. Si il y a une case par question, il faut rajouter l’indice au nom du champ « tempo » créé (ex. : tempo.2.16 pour mon fichier).

    @+
    😎

    en réponse à : Position des champs #74355
    bebarth
    Maître des clés

    bonjour,
    Pour ma proposition je crée un champ temporaire identique au champ réponse à la position du champ question que je supprime lorsque la case est décochée. Le script de cet exemple pour la question/réponse 2.16 est :
    var ind=event.target.name.substring(event.target.name.indexOf(".")+1);
    var q=this.getField("Q."+ind);
    var r=this.getField("R."+ind);
    if (event.target.value!="Off") {
    var f=this.addField("tempo", r.type, q.page, q.rect);
    for (var j in f) {
    try {
    if (typeof f[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=r[j];
    } catch(e) {}
    }
    q.display=display.hidden;
    r.display=display.hidden;
    } else {
    this.removeField("tempo");
    q.display=display.visible;
    r.display=display.visible;
    }

    Juste une remarque au sujet du cartouche représenté : ne manque-t-il pas le symbole de disposition des vues (représenté par un cône et sa vue de gauche – à droite pour l’ISO) ? Indispensable pour la lecture des plans mécaniques…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74344
    bebarth
    Maître des clés

    Il faut utiliser « valueAsString » au lieu de « value ». « replace » fonctionne avec une chaîne de caractères mais pas avec un nombre.

    123 est un nombre alors que 123|124 est une chaîne de caractères. « valueAsString » transforme le nombre en chaîne de caractères !

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 mois et 1 semaine par bebarth.
    • Cette réponse a été modifiée le il y a 3 mois et 1 semaine par bebarth.
    en réponse à : Centrage automatique d’un champ #74340
    bebarth
    Maître des clés

    J’ai fait ça de tête pour l’explication de la déclaration des variables… C’est même un peu plus complexe mais il faudrait que je reprenne mes notes pour expliquer plus en détail ! Par contre je ne sais pas si ce qu’est valable pour Acrobat l’est également pour ton logiciel. J’espère que oui !

    @+
    😎

    en réponse à : Centrage automatique d’un champ #74335
    bebarth
    Maître des clés

    C’est étrange !!!
    En fait, la façon de déclarer les variables définie le “niveau de portée” des variables.

    • Une variable déclarée par “var” (var x=”toto”) à une portée limitée à l’environnement ou est déclarée cette variable : une fenêtre de document, une boite de dialogue,…
    • Si il n’y a rien pour la déclarer (x=”toto”), sa portée est limitée à toutes les fenêtres ou boites de dialogue utilisées lors de l’exécution du script.
    • Si elle est déclarée de façon globale (global.x=”toto”), sa portée est l’environnement total d’Acrobat. On peut fermer un fichier et en ouvrir un autre, la variable n’est pas perdue tant qu’on ne quitte pas Acrobat.

    C’est pour cela que dans cet exemple, les variables qui seront utilisées lorsque la boite de dialogue est fermée doivent être déclarée sans “var”. D’où “le champ “undefined” n’existe pas”.

    Dans le script que j’ai écris, je ne pensais pas l’utiliser depuis un bouton. Je l’ai testé directement depuis la console et il fonctionne bien. Par contre, depuis un bouton il faut retirer les privilèges et trustedFunction qui ne fonctionnent pas à ce niveau.
    J’ai également modifié légèrement les lignes pour le repositionnement du champ qui ne fonctionnait pas bien avec ton document (pourquoi ???).

    Ci-joint un nouveau fichier qui fonctionne chez moi. Dis-moi si c’est OK pour toi.

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 mois et 2 semaines par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Centrage automatique d’un champ #74329
    bebarth
    Maître des clés

    bonjour,
    Voici le script pour centrer un champ horizontalement en milieu de page.

    nbChamps=this.numFields;
    if (nbChamps) {
    var leChamp="- Liste des champs -";
    var listeChamps="var listeChamps \= \{\""+leChamp+"\": "+(nbChamps+1)+",";
    for (var i=0; i < nbChamps; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (typeof this.getField(nomChamp).page!="object") {
    listeChamps+="\""+nomChamp+"\": "+(-1*(i+1)).toString()+",";
    } else {
    for (var j=0; j<this.getField(nomChamp).page.length; j++) listeChamps+="\""+nomChamp+"."+j+"\": "+(-1*(i+1)).toString()+",";
    }
    }
    var listeChamps=listeChamps.substring(0, listeChamps.length-1);
    listeChamps+="\}";
    eval(listeChamps);
    var bDialogue={
    initialize: function(bDialogue) {
    this.loadDefaults(bDialogue);
    },
    loadDefaults: function(bDialogue) {
    bDialogue.load({
    LCha: listeChamps,
    })
    },
    validate: app.trustedFunction(function(bDialogue) {
    app.beginPriv();
    var oRslt=bDialogue.store();
    var elements=bDialogue.store()["LCha"];
    var testOK=true;
    for (var i in elements) {
    if (elements>0) {
    valeurListe=listeChamps;
    nomListe=i;
    }
    }
    if (valeurListe>0 && (oRslt["nmCh"]=="" || (/^\s+|\s+$/gm).test(oRslt["nmCh"]))) {
    var txt="Veuillez sélectionner ou indiquer un nom de champ.";
    var testOK=false;
    } else {
    if (valeurListe>0) nmChamp=oRslt["nmCh"];
    else nmChamp=nomListe;
    try {
    laPage=getField(nmChamp).page;
    } catch(e) {
    var txt="Le champ \""+nmChamp+"\" n'existe pas.";
    var testOK=false;
    }
    }
    if (!testOK) app.alert(txt,3);
    return testOK;
    app.endPriv();
    }),
    description: {
    name: "Centrer un champ",
    elements: [
    {
    type: "view",
    elements: [
    {
    type: "view",
    alignment: "align_fill",
    elements: [
    {
    type: "static_text",
    name: "Nom du champ",
    font: "dialog",
    bold: true,
    },
    {
    type: "static_text",
    name: "Sélectionnez...",
    },
    {
    type: "popup",
    item_id: "LCha",
    width: 150,
    alignment: "align_fill",
    },
    {
    type: "static_text",
    name: "ou indiquez son nom :",
    },
    {
    type: "edit_text",
    item_id: "nmCh",
    height: 20,
    alignment: "align_fill",
    },
    ]
    },
    {
    type: "gap",
    height: 5
    },
    {
    type: "ok_cancel",
    },
    ]
    },
    ]
    }
    };
    if("ok"==app.execDialog(bDialogue)){
    var aRect=this.getField(nmChamp).rect;
    aRect[0]=(this.getPageBox()[2]/2)-(aRect[2]/2);
    aRect[2]=(this.getPageBox()[2]/2)+(aRect[2]/2);
    this.getField(nmChamp).rect=aRect;
    }
    } else app.alert("Il n'y a pas de champ dans ce document.",3);

    @+
    😎

    en réponse à : Centrage automatique d’un champ #74327
    bebarth
    Maître des clés

    bonjour,
    C’est possible, mais pour ma part la réponse sera lundi…
    On pourra même faire un menu déroulant avec la liste de tous les champs !

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74308
    bebarth
    Maître des clés

    C’est étrange car le caractère | (ou) est utilisé dans les expressions régulières, et ça fonctionne chez moi…

    Remarque, si tu es certain de ne pas utiliser ce caractère dans tes réponses il ne sera pas nécessaire !

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74304
    bebarth
    Maître des clés

    bonjour,
    Après avoir jeté un coup d’œil sur le script, je ne trouvais pas !!!
    Puis, je me suis aperçu que si on mettait des valeurs simples dans les champs ça fonctionnait et que tous les champs qui ne fonctionnaient pas contenaient des parenthèses… Eurêka !!!

    Lorsqu’on crée l’expression régulière, il faut échapper certains caractères pour qu’ils soient interprétés correctement, donc :
    var RegExTest=new RegExp("^"+this.getField("R."+n+"."+a).value.replace(/[.*+?^${}()|/\[\]\\]/g,"\\$&")+"$");

    @+
    😎

    PS : Le fichier ne passe pas, je te laisse donc faire la modification…

    • Cette réponse a été modifiée le il y a 3 mois et 3 semaines par bebarth.
    en réponse à : Exécution de fonction par bouton #74295
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire une expression régulière :
    var lesMots=this.getField("R."+n+"."+a).value.replace(/###/g,"|");
    var RegExTest=new RegExp("^"+lesMots+"$");
    if (RegExTest.test(this.getField("Q."+n+"."+a).value))...

    Et si tu sépares tes mots par une barre verticale “|” (clé|clef) tu peux directement écrire :
    var RegExTest=new RegExp("^"+this.getField("R."+n+"."+a).value+"$");
    if (RegExTest.test(this.getField("Q."+n+"."+a).value))...

    @+
    😎

    en réponse à : Liste déroulante influence la suite du document #74292
    bebarth
    Maître des clés

    bonjour,
    Le fichier que j’ai partagé n’est qu’un exemple à partir de ton fichier pour montrer qu’on peut insérer des pages n’importe où dans le document et non uniquement au début ou à la fin.
    Pour que l’on puisse afficher/supprimer des pages avec Reader, ces pages doivent être des pages modèle. Il faut donc indiquer les pages que tu veux cacher comme “Page Modèle” et modifier le script de sorte qu’elles soient cachées après sélection des menu déroulants !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74282
    bebarth
    Maître des clés

    OTAN pour moi, je viens de vérifier et j’ai barré ce qui ne fonctionne pas ci-dessus. D’où l’intérêt de toujours vérifier avant de poster

    …et de vérifier correctement !!! La dernière fois avec l’exemple en GREP, j’avais bien testé avec un point, mais comme un point signifie n’importe quel caractère ça fonctionnait forcément !

    @+
    😎

    en réponse à : Joindre le PDF à un email #74281
    bebarth
    Maître des clés

    Malgré tout je me force à m’en servir afin de mieux pouvoir la dompter le jour ou elle sera imposée par Adobe. (à regret)

    C’est ce que je me suis dit un moment, puis je suis repassé à l’ancienne interface…

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74270
    bebarth
    Maître des clés

    bonjour,
    Effectivement si tu veux traiter tous les champs il n’y a pas besoin de mettre de condition sur la recherche du nom de champ !

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74259
    bebarth
    Maître des clés

    J’ai lu en diagonale vite fait les scripts, et il y a quelque chose qui m’interpelle et que je ne comprends d’ailleurs pas pourquoi il n’y a pas d’erreur retournée.
    Lorsque tu écris :
    ...
    if (nomChamp.indexOf("Q.")==0) {
    this.getField("Q.").readonly=false;
    ...
    La première ligne signifie “si le nom du champ commence par Q.” (Q suivi d’un point quel que soit un indice à la suite). Si on avait voulu uniquement “Q.” on aurait écrit if (nomChamp=="Q.") et on n’aurait pas eu besoin de mettre cette ligne dans une boucle.

    La deuxième ligne devrait être this.getField(nomChamp).readonly=false; car il n’y a pas de champ qui se nomme uniquement “Q.” !
    Ça peut également fonctionner avec this.getField("Q").readonly=false; (sans le point) pour exécuter le script sur l’ensemble des champs “Q” avec un indice.

    Et ce, plusieurs fois dans tous les scripts, et idem pour les champs qui commencent par “R.”

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74258
    bebarth
    Maître des clés

    En GREP le point tout seul signifie “n’importe quel caractère”, il faut donc l’échapper avec un antislash si on veut détecter le point.

    Oups !!! J’ai modifié le post.

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74247
    bebarth
    Maître des clés

    J’avais compris qu’il fallait trouver l’indice n maxi qui n’est pas forcément le nombre d’indices… ni 1 le numéro mini d’ailleurs !

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74230
    bebarth
    Maître des clés

    Bonjour,
    Je dirais même plus …/Verifier\./.test(oChamp.name)… avec le point (échappé à l’aide d’une barre oblique inversée ou backslash) pour être certain que le nom n’est que “Verifier” !

    Lorsqu’on veut vérifier les indices et que l’on compte le nombre de champs il faut être certain qu’ils sont tous consécutif.
    Je dis ça car je me suis déjà fait avoir plusieurs fois pensant qu’ils l’étaient et qu’au final ils ne l’étaient pas.
    Dans ce cas il faut mettre tous les indices dans une table puis les trier car ils ne sont pas forcément ajoutés dans la table dans le bon ordre…

    @+
    😎

    • Cette réponse a été modifiée le il y a 4 mois par bebarth.
    en réponse à : Exécution de fonction par bouton #74220
    bebarth
    Maître des clés

    bonjour,
    “color” est un objet, donc il faut écrire :
    ...
    this.getField("Q."+n+"."+a).fillColor=eval("color."+colorErr);
    ...

    pour que la valeur d’exportation du menu déroulant associée à “color” soit interprétée correctement.

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74215
    bebarth
    Maître des clés

    Pour récupérer a & b tu fais comme précédemment !
    var nomChamp="Question.12.25";
    var n1=nomChamp.indexOf(".");
    var n2=nomChamp.lastIndexOf(".");
    var a=Number(nomChamp.substring(n1+1,n2));
    var b=Number(nomChamp.substring(n2+1));
    console.println("a : "+a);
    console.println("b : "+b);

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74211
    bebarth
    Maître des clés

    Meni.5 est une case à cocher, if faut donc la mettre = “Off” et non =0.
    … et ça fonctionne avec PDF XChange editor !

    Tu peux sortir l’initialisation des champs “Erreurs” et “Menu.5” de la boucle. Ça ne sert pas à grand chose que ces champs soient initialisés X fois…

    @+
    😎

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74210
    bebarth
    Maître des clés

    Peut-être une commande JavaScript qui ne fonctionne pas avec PDF XChange editor !
    Il faut les tester une à une…

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74204
    bebarth
    Maître des clés

    bonjour,
    J’ai peut-être pas bien compris, mais ça a l’air de fonctionner…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exécution de fonction par bouton #74200
    bebarth
    Maître des clés

    que tous les champs “R.” soient cachés

    if (nomChamp.indexOf("R.")==0) {this.getField(nomChamp).display=display.hidden;}

    que la couleur de fond de tous les champs “Q.” soit transparent

    if (nomChamp.indexOf("Q.")==0) {this.getField(nomChamp).fillColor=color.transparent;}

    que tous les autres champs et boutons dont le 1er indice est supérieur à 1 soient cachés aussi

    Il faut capturer le nombre entre le premier et deuxième point avec indexOf et si c’est un chiffre ou nombre supérieur à 1,

    var n1=nomChamp.indexOf(".");
    var n2=nomChamp.lastIndexOf(".");
    if (Number(nomChamp.substring(n1+1,n2))>1) {this.getField(nomChamp).display=display.hidden;}

    Essaye ça et tu mes dis !

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74195
    bebarth
    Maître des clés

    bonjour,
    Pour vérifier qu’une chaine de caractères commence par une autre chaine de caractères, personnellement j’utilise indexOf==0 :
    if (nomChamp.indexOf("Menu")==0)...
    Avant j’utilisais startsWith() mais il me semble me rappeler avoir eu des soucis (existe aussi avec endsWith()) :
    if (nomChamp.startsWith("Menu")...
    https://www.w3schools.com/jsref/jsref_startswith.asp

    Si tu souhaites supprimer tous les commentaires, ce n’est pas la peine de vérifier tous les types.
    Tu peux simplement écrire :
    var annots=this.getAnnots();
    if (annots) for (var j=0; j<annots.length; j++) annots[j].destroy();

    @+
    😎

    en réponse à : Exécution de fonction par bouton #74183
    bebarth
    Maître des clés

    bonjour,
    Pour “default”, essaye ça :
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (nomChamp.indexOf("Q.")==0) {
    if (this.getField(nomChamp).type=="text") this.getField(nomChamp).defaultValue="";
    else this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);
    }
    }
    et pour “EditReps” :
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (this.getField("Menu.5").value!="Off") {
    if (nomChamp.indexOf("Q.")!=0) this.getField(nomChamp).readonly=false;
    } else {
    this.getField(nomChamp).readonly=true;
    }
    }

    Mais là, même ton bouton sera en lecture seule !!! Il faudra l’exclure si tu ne veux pas.
    Tu me dis…

    @+
    😎

    en réponse à : Liste déroulante influence la suite du document #74154
    bebarth
    Maître des clés

    bonjour,

    Comment pourrais-je faire pour supprimer les pages process B, C et D si l’utilisateur sélectionne process A. Ou supprimer les pages Process A, C et D s’il sélectionne le process B? Par supprimer je veux dire qu’il n’aura pas la visibilité sur ces pages car ça ne le concerne pas.

    C’est bien se qui se passe dans le document que j’ai partagé, non !

    Comment faire apparaître des pages formulaires à la sélection du process et non des pages avec seulement un titre. Par exemple, pourrais-je ajouter au document toutes les pages formulaires liées à tous les process (document global). Depuis la sélection du process, le document filtre et n’affiche que les pages en lien avec la sélection initiale.

    Moi je dirai de la même façon que les autres pages, avec des pages modèles… mais je ne suis pas certain d’avoir bien compris !

    @+
    😎

    en réponse à : Fonction TVA multiple #74094
    bebarth
    Maître des clés

    bonjour,
    Il y a un exemple ici :

    Enregistrer sous… avec concaténation de champs

    @+
    😎

    en réponse à : Liste déroulante influence la suite du document #74091
    bebarth
    Maître des clés

    bonjour,
    Ci-joint le fichier qui devrait répondre à ton attente, et ci-dessous les scripts utilisés :

    // Script de document
    var listesFilles= {
    "Product 1": [["- Please Choose -",0],"Process A1", "Process B1", "Process C1", "Process D1"],
    "Product 2": [["- Please Choose -",0],"Process A2", "Process B2", "Process C2", "Process D2"],
    "Product 3": [["- Please Choose -",0],"Process A3", "Process B3", "Process C3", "Process D3"],
    "Product 4": [["- Please Choose -",0],"Process A4", "Process B4", "Process C4", "Process D4"],
    };
    var nbPages=4; // Nombre de pages sans les modèles
    var apresPage=2; // No de page après laquelle insérer les modèles
    function suppression() {
    if (this.numPages>nbPages) {
    this.deletePages({
    nStart: apresPage,
    nEnd: this.numPages-apresPage-1
    });
    }
    }

    // Script de touches personnalisé Product Type
    if (!event.willCommit) {
    suppression();
    if (event.changeEx!=0) this.getField("ProcessType").setItems(listesFilles[event.changeEx]);
    else this.getField("ProcessType").clearItems();
    }

    // Script de touches personnalisé Process Type
    if (!event.willCommit) {
    suppression();
    if (event.changeEx!=0) {
    var pagesModeles=this.templates;
    for (var j=pagesModeles.length-1; j>=0; j--) {
    if (pagesModeles[j].name.indexOf(event.changeEx)==0) pagesModeles[j].spawn(apresPage, true, false);
    }
    }
    }

    Est-ce que cela te convient ? N’hésite pas à demander pour des explications.

    @+
    😎

    PS : Changement de variable de i en j car il y a un problème d’affichage lorsque le i est entre crochets…

    • Cette réponse a été modifiée le il y a 4 mois et 3 semaines par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante influence la suite du document #74085
    bebarth
    Maître des clés

    bonsoir,

    c’est faisable et la complexité dépend des connaissances en JavaScript!

    Je regarde demain.

    bonne soirée.

    @+
    😎

    en réponse à : Liste déroulante influence la suite du document #74080
    bebarth
    Maître des clés

    bonjour,
    Je viens de commencer à regarder ton fichier.
    Est-ce bien des liste mère/filles ? Est-ce que tous les éléments du menu “Process Type” diffèrent en fonction de chaque élément du menu “Product Type” ? Par exemple, pour “Product 1” on va avoir un menu “Process Type” avec les éléments “Process A1”, “Process B1″,”Process C1”, etc. et pour “Product 2” on va avoir un menu “Process Type” avec les éléments “Process A2”, “Process B2″,”Process C2”, etc. et ainsi de suite ?
    Pour chaque sélection, ajoute-t-on une seule ou plusieurs pages ? En fin de document ou dans le milieu ?

    @+
    😎

    en réponse à : Fonction TVA multiple #74070
    bebarth
    Maître des clés

    bonjour,
    Ce serait possible de créer un script, mais manuellement se sera plus rapide.
    Il existe une fonction Acrobat pour créer plusieurs copies. Comme tu en as besoin de 72 sur 3 pages, il faut d’abord les mettre tous sur une seule, puis les répartir.

    Plus de détails ce soir si tu n’y es pas arrivé…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante influence la suite du document #74061
    bebarth
    Maître des clés

    bonjour,
    De ce que je comprend, il faut combiner une liste mère-fille avec des pages modèles qui ne seront affichées qu’en fonction du choix.
    Je ne sais pas si je pourrai regarder ton fichier cette semaine… mais je fais ça au plus vite ! Désolé si c’est urgent.

    @+
    😎

Affichage de 99 réponses de 1 à 99 (sur un total de 3,195)