Donnez vie à vos documents numériques !
 

bebarth

Toutes mes réponses sur les forums

Affichage de 99 réponses de 397 à 495 (sur un total de 3,382)
  • Auteur
    Réponses
  • en réponse à : Checkboxes cachées si pas cochées #73410
    bebarth
    Maître des clés

    bonjour,
    En script de calcul du champ Val1 tu écris :
    for (var i=1; i<=6; i++) {
    this.getField("c"+i).display=display.visible;
    if (event.value<3000 && this.getField("c"+i).value=="Off") this.getField("c"+i).display=display.hidden;
    }

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : INIT CHECKBOX en javascript #73406
    bebarth
    Maître des clés

    bonjour,
    Voici un script :
    for (var i=1; i<=27; i++) this.getField("M"+i).value="Off";

    @+

    en réponse à : Nombre aléatoire sous condition #73398
    bebarth
    Maître des clés

    bonjour,
    Il faudrait peut-être déclarer et initialiser les variables avant la boucle while !

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Nombre aléatoire sous condition #73395
    bebarth
    Maître des clés

    bonjour,
    Personnellement je placerais tes lignes dans une boucle while :
    while (Nb1*Nb6 == Nb3*Nb4) {
    var Nb1=Math.round(Math.random()*7)+2;
    var Nb2=Math.round(Math.random()*9)+1;
    var Nb3=Math.round(Math.random()*9)+1;
    var Nb4=Math.round(Math.random()*8)+1;
    var Nb5=Math.round(Math.random()*8)+1;
    var Nb6=Math.round(Math.random()*9)+1;
    }

    @+

    en réponse à : Piece jointe et icône #73385
    bebarth
    Maître des clés

    bonjour,
    Tu pourrais combiner les 2 scripts en ajoutant une alerte entre !
    Du coup, vu que le dernier fichier sélectionné avec l’interface le reste (du moins sur Mac), l’utilisateur n’a pas à re-naviguer pour le trouver…
    Dans l’exemple, j’ai mis le bouton « PJ » invisible car on a besoin de sa position dans le script.

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Piece jointe et icône #73382
    bebarth
    Maître des clés

    bonjour,
    Non, ce n’est pas possible pour des raisons de sécurité. Avec les pièces jointes on ne peut manipuler via JavaSript que celles importées manuellement. Celles importées par script sont invisibles.

    @+

    en réponse à : Effacer les commentaires #73381
    bebarth
    Maître des clés

    …et ici, à la place de « if (annots != null… » on peut même juste écrire « if (annots… ».
    Donc :
    ...
    if (annots  && annots[j].type == "FreeText") {annots[j].destroy();}

    @+

    en réponse à : Effacer les commentaires #73379
    bebarth
    Maître des clés

    bonjour,
    Tu as l’api reference en ligne où tu pourras trouver tous les types d’annotations :
    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#annotation-types
    Mais je pense que lorsqu’on programme régulièrement c’est pas mal de télécharger une version pdf.

    @+

    en réponse à : Effacer les commentaires #73362
    bebarth
    Maître des clés

    Bonjour,

    tu peux utiliser l’exemple de l’api référence :

    var annots = this.getAnnots({ nPage:0 }); for (var j = 0; j < annots.length; j++) if (annots[j].type == "FreeText") annots[j].destroy();

    À la place de « FreeText » tu indiques le type d’annotation que tu veux supprimer.

    @+

    Attention : J’ai changé la variable i en j à cause du problème d’affichage lorsque i est entre crochets.

    Pour exécuter le script sur tout le document il faut écrire : var annots = this.getAnnots();

    • Cette réponse a été modifiée le il y a 2 années et 6 mois par bebarth.
    • Cette réponse a été modifiée le il y a 2 années et 6 mois par bebarth.
    en réponse à : Effacer les commentaires #73359
    bebarth
    Maître des clés

    bonsoir,

    Ça se fait avec la méthode « destroy » des annotations.

    @+

    en réponse à : Action automatisée pour ajouter une page à une autre #73353
    bebarth
    Maître des clés

    bonjour,
    C’est un copier/coller du script dans cette fenêtre.

    @+

    en réponse à : Action automatisée pour ajouter une page à une autre #73344
    bebarth
    Maître des clés

    bonjour,
    Voici maintenant le lien d’une vidéo pour créer une action puis l’exécuter sur plusieurs fichiers.
    https://we.tl/t-YdvFt48Twx

    • Cette réponse a été modifiée le il y a 2 années et 6 mois par bebarth.
    en réponse à : Action automatisée pour ajouter une page à une autre #73339
    bebarth
    Maître des clés

    À ce moment là il faut créer une action.

    Je te fait une vidéo demain !

    @+
    😎

    en réponse à : Action automatisée pour ajouter une page à une autre #73336
    bebarth
    Maître des clés

    bonjour,
    Voici une petite vidéo pour la façon d’exécuter le script à partir de la console.
    https://we.tl/t-47Z3Y2wHXP

    @+
    😎

    en réponse à : Empecher une date antérieure à la date du Jour #73335
    bebarth
    Maître des clés

    bonjour,
    Essaye ce script en validation du champ « DATE DE SIGNATURE_1 » :
    f=this.getField("DATE_DU_JOUR");
    g=this.getField("DATE DE SIGNATURE_1");
    if (g.value!="") {
    var dateDuJour=util.scand("dd/mm/yyyy", f.value).getTime();
    var dateSignature=util.scand("dd/mm/yyyy", g.value).getTime();
    if (dateSignature<dateDuJour) {
    app.alert("Merci de ne pas antidater ce document",3);
    event.rc=false;
    }
    }

    @+
    😎

    en réponse à : Action automatisée pour ajouter une page à une autre #73330
    bebarth
    Maître des clés

    Le fichier verso fermé, tu ouvres une fiche pui la console que tu vides et tu colles le script, puis tout sélectionner et Enter du clavier numérique.
    Les 2 fichiers doivent être dans le même répertoire.

    @+

    😎

    • Cette réponse a été modifiée le il y a 2 années et 6 mois par bebarth.
    en réponse à : Action automatisée pour ajouter une page à une autre #73326
    bebarth
    Maître des clés

    J’ai retiré le lien de ton précédent message mais je n’ai pas pu retiré les fichiers !


    @Merlin
    : Il faut une autorisation spéciale que je n’ai pas ?

    @+
    😎

    en réponse à : Action automatisée pour ajouter une page à une autre #73322
    bebarth
    Maître des clés

    Pour faire simple, tu n’ouvres pas le fichier VersoPage.pdf mais uniquement l’autre.
    Si tu veux ajouter les 2 pages il faut modifier un peu le script et indiquer nEnd au lieu de nStart pour insertPage que ce soit avec la console ou avec une action :
    var Chemin=this.path;
    var nomDocument=this.documentFileName;
    var repertoire=Chemin.substring(0,Chemin.length-nomDocument.length);
    this.insertPages ({
    nPage: this.numPages-1,
    cPath: repertoire+"VersoPage.pdf",
    nEnd: 1
    });
    this.saveAs({
    cPath: Chemin,
    bPromptToOverwrite: false,
    });

    Attention au droit à l’image refusé ! Il vaudrait mieux retirer le fichier.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action automatisée pour ajouter une page à une autre #73317
    bebarth
    Maître des clés

    bonjour,
    Tu utilises le script avec le fichier VersoPage.pdf qui est le fichier dont tu ajoutes la page…
    Es-tu certain que ça ne fonctionne pas, car ce fichier à maintenant 4 pages au lieu d’une initialement !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action automatisée pour ajouter une page à une autre #73312
    bebarth
    Maître des clés

    Il faut activer la console JavaScript, puis ctrl J pour l’afficher.
    Dans la console vide tu colles le script, puis sélectionne tout (ctrl A) et ENTER du clavier numérique (et pas la touche Return).
    Le script s’exécute…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action automatisée pour ajouter une page à une autre #73309
    bebarth
    Maître des clés

    bonjour,
    On peut lancer le script soit par une action ou directement depuis la console.

    @+
    😎

    en réponse à : Pourcentage > Demande simple #73304
    bebarth
    Maître des clés

    Il suffit de modifier cette ligne :
    ...
    this.getField("Mht02").value=event.value*0.1;
    ...

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 années et 6 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Pourcentage > Demande simple #73300
    bebarth
    Maître des clés

    bonjour,
    En script de calcul du champ Mht01 :
    this.getField("Mht02").value="";
    if (this.getField("QLigne01").value!=0) {
    event.value=this.getField("QLigne01").value*950;
    if (this.getField("CC.0").value!="Off") this.getField("Mht02").value=event.value*1.1;
    }
    else event.value="";

    J’ai modifié les formats des 2 champs pour qu’ils soient identiques.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Case à cocher > Limiter le nombre #73296
    bebarth
    Maître des clés

    bonjour,
    Tu crée une fonction « verif() » en script de document :
    function verif() {
    var nbCases=0;
    for (var i=0; i<21; i++) {
    if (this.getField("CC1."+i).value!="Off") nbCases++;
    if (nbCases>3) {
    this.getField("CC1."+i).value="Off";
    app.alert("Vous ne pouvez pas cocher plus de 3 cases.",3);
    break;
    }
    }
    }
    Et pour chaque case à cocher une action qui  appelle cette fonction en souris relâchée :
    verif();
    Pour écrire ce script pour toutes les cases à cocher, tu lances celui-ci à partir de la console :
    for (var i=0; i<21; i++) {
    this.getField("CC1."+i).setAction("MouseUp", "verif();");
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action automatisée pour ajouter une page à une autre #73295
    bebarth
    Maître des clés

    bonjour,
    Pour ajouter la page du fichier « VersoPage.pdf » après la dernière page, il faut écrire :
    var Chemin=this.path;
    var nomDocument=this.documentFileName;
    var repertoire=Chemin.substring(0,Chemin.length-nomDocument.length);
    this.insertPages ({
    nPage: this.numPages-1,
    cPath: repertoire+"VersoPage.pdf",
    nStart: 0
    });
    this.saveAs({
    cPath: Chemin,
    bPromptToOverwrite: false,
    });

    @+
    😎

    en réponse à : Tampons – Texte retour « Undefined » #73280
    bebarth
    Maître des clés

    …et si tu as besoin pour vérifier que les champs nécessaires sont bien remplis dans la boite de dialogue, n’hésite pas !

    @+
    😎

    en réponse à : Tampons – Texte retour « Undefined » #73277
    bebarth
    Maître des clés

    bonjour,
    J’ai passé pas mal de temps à étudier les tampons et boites de dialogue, donc si je peux me permettre, voici un script un peu « simplifié ».
    S’il n’y a rien à initialiser ou rien à vérifier, pas besoin des fonctions « initialize » et « validate » dans le script.
    Par contre, si on veut qu’il y ait au moins une case cochée et tous les champs textes remplis, ce serait peut-être bon de les vérifier…
    Et si on met les valeurs de la boite de dialogue en variables, autant s’en servir lorsqu’on les rappelle pour remplir les champs !

    ///////////////////////////////////
    // Acrobat JavaScript Dialog
    //////////////////////////////////
    var oJSDlg={
    DoDialog: function(){return app.execDialog(this);},
    commit: function (oJSDlg) {
    var oRslt=oJSDlg.store();
    // Lorsqu'on a plusieurs lignes semblables on peut simplifier
    for (var i=1; i<=4; i++) eval("bChk"+i+"=oRslt[\"Chk"+i+"\"];");
    for (var i=1; i<=3; i++) eval("text"+i+"=oRslt[\"Txt"+i+"\"];");
    },
    description: {
    name: "Conformité",
    elements: [{
    type: "view",
    width: 362,
    height: 200,
    elements: [
    {
    type: "check_box",
    item_id: "Chk1",
    name: "Vu",
    },
    {
    type: "check_box",
    item_id: "Chk2",
    name: "Vu avec annotation(s)",
    },
    {
    type: "check_box",
    item_id: "Chk3",
    name: "Corriger tel qu’annoté",
    },
    {
    type: "check_box",
    item_id: "Chk4",
    name: "Refusé",
    },
    {
    type: "edit_text",
    item_id: "Txt1",
    width: 300,
    height: 20,
    name: "Text Field 1",
    },
    {
    type: "static_text",
    name: "Description for Text Field 1",
    },
    {
    type: "edit_text",
    item_id: "Txt2",
    width: 300,
    height: 20,
    name: "Text Field 2",
    },
    {
    type: "static_text",
    name: "Description for Text Field 2",
    },
    {
    type: "edit_text",
    item_id: "Txt3",
    width: 300,
    height: 20,
    name: "Text Field 3",
    },
    {
    type: "static_text",
    name: "Description for Text Field 3",
    },
    {
    type: "ok",
    },
    ],
    }],
    },
    };
    if (event.source.forReal && event.source.stampName=="#VBC") {
    if ("ok"==oJSDlg.DoDialog()) {
    // On pourrait également simplifier
    this.getField("Chk1").checkThisBox(0,bChk1);
    this.getField("Chk2").checkThisBox(0,bChk2);
    this.getField("Chk3").checkThisBox(0,bChk3);
    this.getField("Chk4").checkThisBox(0,bChk4);
    this.getField("Text1").value=text1;
    this.getField("Text2").value=text1;
    this.getField("Text3").value=text1;
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Tampons – Texte retour « Undefined » #73274
    bebarth
    Maître des clés

    Oups, je n’avais pas la réponse Thom Parker lorsque j’ai répondu. Désolé !

    @+
    😎

    en réponse à : Tampons – Texte retour « Undefined » #73273
    bebarth
    Maître des clés

    bonjour,

    je n’ai que mon téléphone avec moi et je ne peux donc pas essayer, mais les noms des « ID » ne doivent contenir que 4 caractères !

    A essayer donc…

    @+
    😎

    en réponse à : Ajouter numérotation après un ajout de page modèle #73240
    bebarth
    Maître des clés

    bonjour,
    Tu peux stocker des variables dans des champs invisibles que tu mets en page 1 ou les enregistrer en script de document.

    @+
    😎

    en réponse à : Calque OCG afficher-masquer #73238
    bebarth
    Maître des clés

    bonjour,
    Sauf erreur, ça fonctionne dans ce fichier joint !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Calque OCG afficher-masquer #73229
    bebarth
    Maître des clés

    Avant de rendre un calque visible, ils faut les rendre tous non visibles, sinon si on choisi un calque sur un plan avant ça fonctionne mais si il est sur un plan arrière ça ne fonctionne pas.
    Il faudrait donc écrire pour rester dans son style :
    if(event.willCommit) {
    this.getOCGs().some(function(a){return a.state = false};);
    this.getOCGs().some(function(a){return a.state = (a.name==event.value);});
    }

    @+
    😎

    en réponse à : Calque OCG afficher-masquer #73225
    bebarth
    Maître des clés

    bonjour,
    Voici mon script à moi ! 😉
    if (!event.willCommit) {
    var lesCalques=this.getOCGs();
    for (var ii=0; ii<lesCalques.length; ii++) lesCalques[ii].state=false;
    for (var ii=0; ii<lesCalques.length; ii++) {
    if (lesCalques[ii].name==event.changeEx) {
    lesCalques[ii].state=true;
    break;
    }
    }
    }

    @+
    😎

    PS : Indice ii au lieu de i à cause d’un problème d’affichage losque i est entre crochets…

    • Cette réponse a été modifiée le il y a 2 années et 7 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajouter numérotation après un ajout de page modèle #73224
    bebarth
    Maître des clés

    bonjour,
    Tu peux utiliser l’indice du préfixe de la page dupliquée !

    @+
    😎

    en réponse à : Ouvrir une page web de type data #73210
    bebarth
    Maître des clés

    Il suffit d’une petite modification pour l’affichage du nom dans le popup:
    var aParams=[];
    for (var d=0; d<this.dataObjects.length; d++) aParams.push({cName: this.dataObjects[d].name.substr(0,this.dataObjects[d].name.lastIndexOf(".")), cReturn: d.toString()});
    var cChoice=app.popUpMenuEx.apply(app, aParams);
    if (cChoice!=null) this.exportDataObject({cName: this.dataObjects[cChoice].name, nLaunch:2});

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ouvrir une page web de type data #73198
    bebarth
    Maître des clés

    bonjour,
    En script d’action souris entrée :
    var aParams=[];
    for (var d=0; d<this.dataObjects.length; d++) aParams.push({cName: this.dataObjects[d].name, cReturn: d.toString()});
    var cChoice=app.popUpMenuEx.apply(app, aParams);
    if (cChoice!=null) this.exportDataObject({cName: this.dataObjects[cChoice].name, nLaunch:2});

    @
    😎

    • Cette réponse a été modifiée le il y a 2 années et 7 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ouvrir une page web de type data #73197
    bebarth
    Maître des clés

    Oups ! Je n’avais pas vu le dernier post… Je regarde demain !

    @+
    😎

    en réponse à : Ouvrir une page web de type data #73195
    bebarth
    Maître des clés

    bonjour,
    En script d’action souris entrée :
    var aParams=[
    {cName: "OUVRE PDF2", cReturn: "1"},
    {cName: "OUVRE html2", cReturn: "2"},
    ];
    var cChoice=app.popUpMenuEx.apply(app, aParams);
    if (cChoice!=null) {
    switch (cChoice) {
    case "1":
    this.exportDataObject({cName: "PDF2.pdf", nLaunch:2});
    break;
    case "2":
    this.exportDataObject({cName: "html2.html", nLaunch:2});
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action automatisée pour ajouter une page à une autre #73194
    bebarth
    Maître des clés

    bonjour,
    Avec ton script :
    ...
    this.insertPages ({
    nPage: 0,
    cPath: repertoire+"Verso.pdf",
    nStart: 0
    });
    ...

    Tu insères la première page du fichier « Verso.pdf » après la première page de ton fichier.
    Ça n’a de sens que si ton fichier n’est pas le fichier « Verso.pdf » !

    @+
    😎

    en réponse à : Afficher le résultat d’un calcul s’il est >0 #73139
    bebarth
    Maître des clés

    bonjour,
    En script de format personnalisé :
    if (event.value<=0) event.value="";

    Pas besoin d’écrire this.event car event ne s’applique qu’au document en cours !

    @+
    😎

    en réponse à : Mettre un deuxième script #73127
    bebarth
    Maître des clés

    bonsoir,
    Ne serait-ce point la même demande que ce post :

    Code pour calculer heures, minutes, secondes

    @+
    😎

    en réponse à : Transfert de valeur #73122
    bebarth
    Maître des clés

    bonjour,
    Voici un script de calcul pour le champ « Text5 » :
    if (this.getField("Dropdown1").value!=0) event.value=this.getField("Text"+this.getField("Dropdown1").value).valueAsString;
    else event.value="";
    …et le fichier qui va avec !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Code pour calculer heures, minutes, secondes #73119
    bebarth
    Maître des clés

    Heureusement qu’il IA encore nous !

    @+
    😎

    en réponse à : Code pour calculer heures, minutes, secondes #73116
    bebarth
    Maître des clés

    bonjour,
    Voici un exemple avec un champ pour indiquer la vitesse, et le script :
    var leTemps=this.getField("ResultatKM").value/this.getField("vitesse").value;
    var lesHeures=Math.floor(leTemps);
    var resteHeures=leTemps-lesHeures;
    var lesMinutes=Math.floor(resteHeures*60);
    var lesSecondes=(resteHeures*3600-lesMinutes*60).toFixed(1);
    //
    if (lesHeures<10) var lesHeures="0"+lesHeures;
    if (lesMinutes<10) var lesMinutes="0"+lesMinutes;
    if (lesSecondes<10) var lesSecondes="0"+lesSecondes;
    //
    event.value=lesHeures+":"+lesMinutes+":"+lesSecondes;

    Ce script est un peu développé pour une meilleure compréhension.

    @+
    😎

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

    bonjour,
    Il faudrait écrire :
    if (event.value!="") event.value=event.value+" %";

    @+
    😎

    en réponse à : Code pour calculer heures, minutes, secondes #73087
    bebarth
    Maître des clés

    bonjour,
    Je t’ai fait un exemple vite fait car après je pars en vacances…
    Script de calcul lorsqu’il n’y a pas beaucoup de champs (cf. premier exemple) :
    if (this.getField("distance").value && this.getField("temps").value && this.getField("allureAux").value) {
    var Temps=this.getField("temps").value.split(":");
    var enSecondes=Number(Temps[0])*3600+Number(Temps[1])*60+Number(Temps[2]);
    var regleDe3=enSecondes*this.getField("allureAux").value/this.getField("distance").value;
    var lesMinutes=Math.floor(regleDe3/60);
    var enSecondes=(regleDe3-lesMinutes*60).toFixed(2).toString().split(".");
    var lesSecondes=enSecondes[0];
    var lesCentiemes=enSecondes[1];
    event.value=lesMinutes+"\'"+util.printf("%,302.0f", lesSecondes)+"\"";
    if (lesCentiemes!="00") event.value+=lesCentiemes;
    } else event.value="";

    Vu que tu as souvent beaucoup de champs, il est préférable de mettre une fonction en script de document et de l’appeler uniquement lorsqu’un champ modifié est désactivé, ce qui évite de lancer le calcul pour tous les champs après chaque évènement (cf. second exemple).
    La fonction :
    function allure(laDistance,leTemps,lAllureAux) {
    if (laDistance && leTemps && lAllureAux) {
    var Temps=leTemps.split(":");
    var enSecondes=Number(Temps[0])*3600+Number(Temps[1])*60+Number(Temps[2]);
    var regleDe3=enSecondes*lAllureAux/laDistance;
    var lesMinutes=Math.floor(regleDe3/60);
    var enSecondes=(regleDe3-lesMinutes*60).toFixed(2).toString().split(".");
    var lesSecondes=enSecondes[0];
    var lesCentiemes=enSecondes[1];
    this.getField("allure."+ind).value=lesMinutes+"\'"+util.printf("%,302.0f", lesSecondes)+"\"";
    if (lesCentiemes!="00") this.getField("allure."+ind).value+=lesCentiemes;
    } else this.getField("allure."+ind).value="";

    }
    <code>et tu l'appelles avec :</code>
    var indice=event.target.name.split(".");

    ind=indice[1];
    allure(this.getField("distance."+ind).value,this.getField("temps."+ind).value,this.getField("allureAux."+ind).value);

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 années et 9 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Code pour calculer heures, minutes, secondes #73085
    bebarth
    Maître des clés

    bonjour,
    Si tu regardes le format de ton champ end.0, tu verras que ce n’est pas un nombre mais une valeur au format H:MM:ss (personnalisé).
    Tu ne peux donc pas l’utiliser telle quelle dans ta boucle.

    @+
    😎

    en réponse à : Code pour calculer heures, minutes, secondes #73070
    bebarth
    Maître des clés

    Je n’ai pas étudié le fichier complètement pour savoir à quoi correspondent les différents champs, mais dans ton script :
    for (var a=0 ; a<14 ; a++){
    var d = this.getField("dist."+a).value;
    var b = 500/d;
    }
    event.value= "";
    var somme=Time2Num("mm:ss", this.getField("end.0").value)/b;
    HM_Format()
    La boucle ne sert à rien vu qu’il n’y a pas d’opération, et ton b sera donc toujours celui de l’indice 13…
    Je pense que ce n’est pas ce que u souhaites !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Code pour calculer heures, minutes, secondes #73063
    bebarth
    Maître des clés

    Il n’y a toujours pas de champs « t. »…
    Et pour la boucle de la première ligne, a<=13 (et non a<17).

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Code pour calculer heures, minutes, secondes #73058
    bebarth
    Maître des clés

    bonjour,
    Moi je n’ai pas d’erreur mais la première chose que je vois c’est qu’il n’y a pas de champs « t. » (t minuscule).

    @+
    😎

    en réponse à : Il y a-t-il une façon de faire un calcul plus court que ça? #73046
    bebarth
    Maître des clés

    Essaye comme ça :

    var laSomme=0;
    for (var i=1; i<=8; i++) laSomme+=Number(this.getField("TOTAL"+i).value);
    if (laSomme==0) event.value="";
    else event.value=laSomme;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Il y a-t-il une façon de faire un calcul plus court que ça? #73044
    bebarth
    Maître des clés

    event.value=0;
    for (var i=1; i<=8; i++) event.value+=this.getField("TOTAL"+i).value;
    if (event.value==0) event.value="";

    @+
    😎

    en réponse à : Il y a-t-il une façon de faire un calcul plus court que ça? #73042
    bebarth
    Maître des clés

    bonjour,
    Quelle est la question ?

    @+
    😎

    en réponse à : Changer le libellé d’un bouton en cliquant dessus #73039
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire :
    if (event.target.buttonGetCaption()=="SUC") event.target.buttonSetCaption("ECH");
    else if (event.target.buttonGetCaption()=="ECH") event.target.buttonSetCaption("ABD");
    else if (event.target.buttonGetCaption()=="ABD") event.target.buttonSetCaption("");
    else event.target.buttonSetCaption("SUC");

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Javascript PDF archivable #73016
    bebarth
    Maître des clés
    bonjour,

    Un tel script peut aussi être exécuté par une Action (Assistant Action).

    Exact ! Ou même depuis la console…
    Et pour ces deux façons on n’a pas besoin d’étendre les privilèges.

    @+
    😎

    en réponse à : Javascript PDF archivable #73009
    bebarth
    Maître des clés

    bonjour,
    Il n’est pas possible d’enregistrer avec un script directement à partir d’un bouton.
    Pour cela, il faut un script de d’application (un fichier .js que l’on place dans le répertoire JavaScript d’Acrobat).
    Le script est du genre :
    if (app.formsVersion>=8) {
    Save_PDFA=app.trustedFunction(function(cheminFichier) {
    app.beginPriv();
    this.flattenPages();
    this.saveAs({
    cPath: cheminFichier,
    cConvID: "com.callas.preflight.pdfa"
    });
    app.endPriv();
    })
    console.println("Le plugin d\'enregistrement \"Save_PDFA\" est actif.");
    }

    Et tu appelles le script via ton bouton avec :
    event.target.display=display.hidden;
    Save_PDFA("myDoc.pdf");

    Ici la première ligne cache le bouton avant d’aplatir les champs (on ne peut pas supprimer le champ qui lance l’action).

    Ci-joint les fichiers.

    @+
    😎

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

    …deux petites mofifications :
    for (var laLigne=1; laLigne<=34; laLigne++) {
    var lesValeurs=[];
    for (var i=1; i<=10; i++) {
    if (this.getField("a."+laLigne+"."+i).value!=="") lesValeurs.push();
    this.getField("a."+laLigne+"."+i).fillColor=["T"];
    }
    try {
    lesValeurs.sort(function(a,b){return a[1]-b[1]});
    for (var i=0; i<=10; i++) {
    if (lesValeurs[1]==lesValeurs[0][1]) {
    if (this.getField("a."+laLigne+"."+lesValeurs[0]).value!=="") this.getField("a."+laLigne+"."+lesValeurs[0]).fillColor=this.getField("A."+laLigne).value=="+"?color.green:color.red;
    } else break;
    }
    for (var i=lesValeurs.length-1; i>=0; i--) {
    if (lesValeurs[1]==lesValeurs[lesValeurs.length-1][1]) {
    if (this.getField("a."+laLigne+"."+lesValeurs[0]).value!=="") this.getField("a."+laLigne+"."+lesValeurs[0]).fillColor=this.getField("A."+laLigne).value=="-"?color.green:color.red;
    }
    }
    } catch(e) {}
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Valeur maximale #72986
    bebarth
    Maître des clés
    bonjour,

    J’ai testé le fichier joint, ça ne fonctionnait pas.

    Tu as certainement testé le script de mon fichier avec ton fichier, car le miens fonctionne très bien… un peu long en script de calcul comme je l’ai expliqué précédemment. Si les valeurs sont entrées manuellement il vaut mieux utiliser un script de champ désactivé qui ne fera le calcul que sur la ligne.
    Pour fonctionner correctement il faut supprimer tous tes autres scripts relatifs à ce calcul. Les menus déroulants doivent également afficher + ou – et ne doivent donc pas être vides.

    Je ne vois pas ou se trouvent les différences pour les valeurs des listes déroulantes (+ et -).

    Il faut regarder les 2 lignes de ce type :
    this.getField("a."+laLigne+"."+lesValeurs[0][0]).fillColor=this.getField("A."+laLigne).value=="+"?color.green:color.red;

    @+
    😎

    en réponse à : Valeur maximale #72980
    bebarth
    Maître des clés

    Du coup, le script d’un seul champ (ici ) doit être :
    for (var laLigne=1; laLigne<=34; laLigne++) {
    var lesValeurs=[];
    for (var i=1; i<=10; i++) {
    if (this.getField("a."+laLigne+"."+i).value!=="") lesValeurs.push([i,this.getField("a."+laLigne+"."+i).value]);
    this.getField("a."+laLigne+"."+i).fillColor=["T"];
    }
    try {
    lesValeurs.sort(function(a,b){return a[1]-b[1]});
    if (this.getField("a."+laLigne+"."+lesValeurs[0][0]).value!=="") this.getField("a."+laLigne+"."+lesValeurs[0][0]).fillColor=this.getField("A."+laLigne).value=="+"?color.green:color.red;
    if (this.getField("a."+laLigne+"."+lesValeurs[lesValeurs.length-1][0]).value!=="") this.getField("a."+laLigne+"."+lesValeurs[lesValeurs.length-1][0]).fillColor=this.getField("A."+laLigne).value=="-"?color.green:color.red;
    } catch(e) {}
    }
    A noter que j’ai ajouté l’inégalité absolu « !== » pour renir compte des éventuels 0.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Valeur maximale #72977
    bebarth
    Maître des clés
    bonjour,

    Cela fonctionne sauf pour la selection du + ou – dans la liste déroulante, cela ne change rien, c’est toujours la valeur mini qui apparait en vert.

    Les menus déroulants + ou – sont sensés faire quoi ?

    @+
    😎

    en réponse à : Valeur maximale #72973
    bebarth
    Maître des clés

    bonjour,
    Sur le même principe, on écrit :
    for (var laLigne=1; laLigne<=34; laLigne++) {
    var lesValeurs=[];
    for (var i=1; i<=10; i++) {
    if (this.getField("a."+laLigne+"."+i).value!="") lesValeurs.push([i,this.getField("a."+laLigne+"."+i).value]);
    this.getField("a."+laLigne+"."+i).fillColor=["T"];
    }
    try {
    lesValeurs.sort(function(a,b){return a[1]-b[1]});
    if (this.getField("a."+laLigne+"."+lesValeurs[0][0]).value!="") this.getField("a."+laLigne+"."+lesValeurs[0][0]).fillColor=color.green;
    if (this.getField("a."+laLigne+"."+lesValeurs[lesValeurs.length-1][0]).value!="") this.getField("a."+laLigne+"."+lesValeurs[lesValeurs.length-1][0]).fillColor=color.red;
    } catch(e) {}
    }

    @+
    😎

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

    bonsoir,
    Dans le principe, voici un script que l’on peut placer en script de calcul d’un seul champ :
    for (var laLigne=1; laLigne<=15; laLigne++) {
    var lesValeurs=[];
    for (var i=1; i<=10; i++) {
    lesValeurs.push([i,this.getField("a."+laLigne+"."+i).value]);
    this.getField("a."+laLigne+"."+i).fillColor=["T"];
    }
    lesValeurs.sort(function(a,b){return a[1]-b[1]});
    if (this.getField("a."+laLigne+"."+lesValeurs[0][0]).value!="") this.getField("a."+laLigne+"."+lesValeurs[0][0]).fillColor=color.green;
    if (this.getField("a."+laLigne+"."+lesValeurs[9][0]).value!="") this.getField("a."+laLigne+"."+lesValeurs[9][0]).fillColor=color.red;
    }

    Ce script est exécuté après chaque évènement, ce qui risque de ralentir si il y a beaucoup d’autres calcul.

    Si les valeur sont entrées manuellement pour chaque champ, il vaut mieux mettre une fonction en script de document :
    function couleur() {
    var ligne=event.target.name.split(".");
    var laLigne=ligne[1];
    var lesValeurs=[];
    for (var i=1; i<=10; i++) {
    lesValeurs.push([i,this.getField("a."+laLigne+"."+i).value]);
    this.getField("a."+laLigne+"."+i).fillColor=["T"];
    }
    lesValeurs.sort(function(a,b){return a[1]-b[1]});
    if (this.getField("a."+laLigne+"."+lesValeurs[0][0]).value!="") this.getField("a."+laLigne+"."+lesValeurs[0][0]).fillColor=color.green;
    if (this.getField("a."+laLigne+"."+lesValeurs[9][0]).value!="") this.getField("a."+laLigne+"."+lesValeurs[9][0]).fillColor=color.red;
    }

    …et de l’appeler avec un script de champ désactivé :
    couleur();

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante et remplissage de champ correspondant #72951
    bebarth
    Maître des clés

    bonjour,
    En script de validation du menu déroulant tu écris :
    var items=[];
    for (var i=0; i<event.target.numItems; i++) items.push([event.target.getItemAt(i,false),event.target.getItemAt(i,true)]);
    for (var i=0; i<items.length; i++) {
    if (items[0]==event.value) {
    this.getField("Text1").value=items[1];
    break;
    }
    }
    Et bien sûr tu supprimes le script de calcul du champ texte…

    @+
    😎

    P.S. : En script de validation d’un menu déroulant, event.value retourne le nom de l’élément et non la valeur d’exportation.

    • Cette réponse a été modifiée le il y a 2 années et 11 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante et remplissage de champ correspondant #72949
    bebarth
    Maître des clés

    bonjour,
    Je ne suis pas certain de bien comprendre !
    Lorsque l’utilisateur indique un élément, tu souhaites l’ajouter à ta liste sans pour cela modifier le contenu du champ texte.
    C’est ça ???

    @+
    😎

    en réponse à : Script textbox vers une autre textbox #72946
    bebarth
    Maître des clés
    bonjour,
    Je ne comprends pas ceci :

    … si observation rempli copié a l’identique ce qui est marqué dans la textbox …

    @+
    😎

    en réponse à : Horloge dans un dossier pdf #72936
    bebarth
    Maître des clés

    bonjour,

    C’est également possible en dessinant les aiguilles en SVG, mais alors là bon courage.

    Ça me « trottait » dans la tête depuis que j’ai répondu, je me suis donc replongé sur le sujet et voici une horloge analogique !
    Le design n’est peut-être pas très moderne, je verrai si je trouve « 5 minutes ». 😂

    @+
    😎

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

    bonjour,
    Si tu utilises mon script pour tous les champs « Total » il faut également supprimer tous les anciens scripts des champs « Heures supplémentaires ».
    Il faut également revoir l’ordre de calcul des champs, et enfin placer ce script pour le champ « Total HS » :
    var total=0;
    for (var i=1; i<=5; i++) total+=Time2Num("hh:mm",this.getField("Champ texte5."+i).value);
    event.value=calculHeures(total);

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Calcul d’après une case à cocher #72924
    bebarth
    Maître des clés

    bonjour,
    En script de calcul pour le champ « cartebl » :
    if (event.value!="Off") this.getField("cartejeune").value="Off";
    et pour le champ « cartejeune » :
    if (event.value!="Off") this.getField("cartebl").value="Off";

    @+
    😎

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

    bonjour,
    Voici les scripts à placer en script de document et script de calcul des champs « Total »  :

    // Fonctions en scripts de document
    function Time2Num(sFormat,sTime) {
    if(sTime=="") return "";
    var oTime=util.scand("mm/dd/yyyy "+sFormat,"01/01/1970 "+sTime);
    var fTZOffset=oTime.getTimezoneOffset()*1000*60;
    var fTime=oTime.valueOf()-fTZOffset;
    return Math.round(fTime/1000);
    }
    function calculHeures(nbHeures) {
    //if (nbHeures<0) nbHeures=(24*3600)+(fin-debut);
    nbHeures=Math.round(nbHeures/60);
    heures=Math.floor(nbHeures/60);
    lesMinutes=((nbHeures/60)-heures)*60;
    minutes=util.printf("%,302.0f",lesMinutes);
    return heures+":"+minutes;
    }
    function affichage(ind) {
    var debutJournee=this.getField("Champ texte1."+ind).value;
    var pauseJournee=this.getField("Champ texte2."+ind).value;
    var finJournee=this.getField("Champ texte3."+ind).value;
    var heuresTheoriques=this.getField("Champ texte4."+ind).value;
    if(debutJournee!="" && finJournee!="") {
    var debut=Time2Num("hh:mm",debutJournee);
    var pause=Time2Num("hh:mm",pauseJournee);
    var fin=Time2Num("hh:mm",finJournee);
    var theoriques=Time2Num("hh:mm",heuresTheoriques);
    event.value=calculHeures(fin-debut-pause);
    this.getField("Champ texte5."+ind).value=calculHeures(fin-debut-pause-theoriques);
    } else {
    event.value="";
    this.getField("Champ texte5."+ind).value="";
    }
    }

     

    // Script de calcul des champs "Total"
    var indice=event.target.name.substr(event.target.name.indexOf(".")+1);
    affichage(indice);

    Dans le fichier joint, seule la première ligne est calculée avec ce script.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante et changement d’image #72909
    bebarth
    Maître des clés

    👍

    Juste pour info, voici comment j’aurais écrit le script :

    // Fonction en script de document
    function light(nSuffix) {
    switch (event.changeEx) {
    case "Oui":
    var couleur=["RGB",0,1,0];
    break;
    case "Partiellement":
    var couleur=["RGB",1,1,0];
    break;
    case "Non":
    var couleur=["RGB",1,0,0];
    break;
    default:
    var couleur=["T"];
    }
    this.getField("gommette."+nSuffix).fillColor=couleur;
    }

    // Script de touches personnalisé
    if (!event.willCommit) light(event.target.name.substr(event.target.name.indexOf(".")+1));

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste déroulante et changement d’image #72903
    bebarth
    Maître des clés

    Peux-tu partager un fichier ?

    @+
    😎

    en réponse à : Liste déroulante et changement d’image #72900
    bebarth
    Maître des clés

    bonjour,
    Si j’ai bien compris, tu dois appeler la fonction avec :
    light(event.target.name); N’importe quoi !!! ça va changer la couleur du menu déroulant…

    Comme le dit Merlin, si tu as plusieur menus déroulants et plusieurs gommettes avec le même indice, lu appelles  la fonction avec :
    light(event.target.name.substr(event.target.name.indexOf(".")+1));

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 années et 11 mois par bebarth.
    en réponse à : Liste déroulante et changement d’image #72886
    bebarth
    Maître des clés

    bonjour,
    Dans ce cas on peut simplifier un peu le script :
    if (!event.willCommit) {
    this.getField("gommette").fillColor=["RGB",1,1,1];
    this.getField("ijaune").display=display.hidden;
    this.getField("irouge").display=display.hidden;
    this.getField("iverte").display=display.hidden;
    this.getField("ibleu").display=display.hidden;
    switch (event.changeEx) {
    case "Bleu":
    this.getField("gommette").fillColor=["RGB",0,0,1];
    this.getField("ibleu").display=display.visible;
    break;
    case "Jaune":
    this.getField("gommette").fillColor=["CMYK",0,0,1,0];
    this.getField("ijaune").display=display.visible;
    break;
    case "Vert":
    this.getField("gommette").fillColor=["RGB",0,1,0];
    this.getField("iverte").display=display.visible;
    break;
    case "Rouge":
    this.getField("gommette").fillColor=["RGB",1,0,0];
    this.getField("irouge").display=display.visible;
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Project Terminé Facture #72881
    bebarth
    Maître des clés

    …oui, mais si on écrit 35132023 cela affiche 35/13/2023 ce qui n’est pas une date !

    @+
    😎

    en réponse à : Liste déroulante et changement d’image #72879
    bebarth
    Maître des clés

    bonjour,
    Voici un script de touches personnalisé pour le menu déroulant :
    if (!event.willCommit) {
    switch (event.changeEx) {
    case "Bleu":
    var couleur=["RGB",0,0,1];
    break;
    case "Jaune":
    var couleur=["CMYK",0,0,1,0];
    break;
    case "Vert":
    var couleur=["RGB",0,1,0];
    break;
    default:
    var couleur=["RGB",1,0,0];
    }
    this.getField("gommette").fillColor=couleur;
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Project Terminé Facture #72875
    bebarth
    Maître des clés

    bonjour,
    Je n’ai pas trouvé où se trouve ce code, mais il sert à indiquer le formatage d’un champ où chaque 9 représente un chiffre de 0 à 9.
    Vu que c’est un champ où il faut indiquer une date, il faudrait mieux utiliser AFDate_FormatEx(dd/mm/yyyy) qui ne permet d’indiquer qu’une date valide.

    @+
    😎

    en réponse à : Horloge dans un dossier pdf #72871
    bebarth
    Maître des clés
    bonjour,

    Bonjour à tous, je suis nouveau et je découvre le langage JavaScript, j’aimerais intégrer une horloge analogique…

    Je pense que tu ne commences pas par le plus facile !

    Est-il techniquement possible d’avoir une horloge analogique en javascript?? Si oui avez vous un exemple? Merci

    Ce sera donc possible si tu utilises les outils  commentaires, mais il faudra revoir le script du fichier que Merlin à partagé car il ne fonctionne pas très bien, et après avoir regardé vite-fait je ne vois pas pourquoi ! A-t-il déjà fonctionné correctement avec des version précédentes ?

    C’est également possible en dessinant les aiguilles en SVG, mais alors là bon courage.
    Il n’y a aucune documentation disponible pour Acrobat et le peu de personnes qui savent utiliser cette méthode ne sont pas disposées à partager leurs connaissances. Il faut dire que c’est assez compliqué… J’ai personnellement mis des mois à comprendre un peu comment ça fonctionne et vu que je n’ai pas pratiqué également depuis d’autres mois il faudrait que je me replonge dedans car biens sur toutes les commandes disponibles (en HTML par exemple) ne le sont pas avec Acrobat.
    https://www.w3schools.com/graphics/svg_intro.asp

    Si je peux te donner un conseil, utilise une horloge numérique !!!!

    @+
    😎

    • Cette réponse a été modifiée le il y a 2 années et 12 mois par bebarth.
    en réponse à : Liste déroulante et remplissage de champ correspondant #72862
    bebarth
    Maître des clés

    bonjour,

    en script de calcul du champ tu écris :

    event.value=this.getField(«nonChamp»).value;

    Avec des guillemets à l’anglaise…

    @+
    😎

    en réponse à : Project Terminé Facture #72853
    bebarth
    Maître des clés

    👍

    je regarderai la semaine prochaine car je n’ai qu’un téléphone cette semaine…

    @+
    😎

    en réponse à : Incrémental #72844
    bebarth
    Maître des clés

    bonjour,
    Ça fonctionne si le numéro est attribué à partir un seul fichier initial, mais si on veut établir une facture à partir de documents « fichier client » déjà existants il faudra utiliser un fichier « compteur ».

    @+
    😎

    en réponse à : Horloge dans un dossier pdf #72842
    bebarth
    Maître des clés

    bonjour,
    En même temps, le script d’une horloge n’est pas très compliqué !
    function affichage() {
    var lesHeures=new Date().getHours();
    if (lesHeures<10) var lesHeures="0"+lesHeures;
    var lesMinutes=new Date().getMinutes();
    if (lesMinutes<10) var lesMinutes="0"+lesMinutes;
    var lesSecondes=new Date().getSeconds();
    if (lesSecondes<10) var lesSecondes="0"+lesSecondes;
    this.getField("horloge").value=lesHeures+":"+lesMinutes+":"+lesSecondes;
    }
    run=app.setInterval("affichage()",1000);

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Horloge dans un dossier pdf #72822
    bebarth
    Maître des clés

    bonjour,
    Difficile de retrouver ce fichier sans savoir d’où il vient ! Merlin à peut-être une idée, 2004 c’était le début du forum et moi je n’y connaissais rien…
    Par contre, voici un fichier de Thom Parker où tu trouveras une horloge intégrée.

    @+
    😎

    PS : Voici le lien car le fichier est trop gros pour être placé sur le forum :
    https://www.pdfscripting.com/public/FreeStuff/PDFSamples/JavaScriptClock.pdf

    Ci-joint également un fichier que j’ai fait avec un chronomètre si ça peut t’aider…

    • Cette réponse a été modifiée le il y a 3 années par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Case visible en lecture seule #72821
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire :
    this.getField("text1").readonly=true;

    @+
    😎

    en réponse à : Calcul d’après une case à cocher #72814
    bebarth
    Maître des clés

    bonjour,
    …avec un petit script :
    if (this.getField("coche1").value=="Off") var c1=0;
    else var c1=this.getField("coche1").value;
    if (this.getField("coche2").value=="Off") var c2=0;
    else var c2=this.getField("coche2").value;
    if (c1+c2==0) event.value="";
    else event.value=(c1+c2)+" €";

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplir les champs de texte seulement #72784
    bebarth
    Maître des clés

    bonjour,
    La difficulté est qu’il n’y a pas de message d’erreur retourné, juste une alerte qui indique que le format n’est pas conforme !
    Je doute sur la possibilité d’effectuer ceci via JavaScript…

    @+
    😎

    en réponse à : Valeur numérique 2 décimales #72777
    bebarth
    Maître des clés

    bonjour,
    En script de format personnalisé :
    event.value=event.target.value.toFixed(2)+" m"

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste des éléments dans la console #72774
    bebarth
    Maître des clés

    …comme ça !

    console.clear();
    console.show();
    var lesElements=[]
    for (var i=0; i<this.numFields; i++) {
    if (this.getField(this.getNthFieldName(i)).type=="combobox" || this.getField(this.getNthFieldName(i)).type=="listbox") lesElements.push(this.getNthFieldName(i));
    }
    if (!lesElements.length) app.alert("Il n'y a ni menu d\u00E9roulant ni zone de liste dans ce document.",3);
    else {
    lesElements.unshift("- S\u00E9lectionnez -");
    var listeElements="var laListe \= \{";
    for (var j=0; j<lesElements.length; j++) listeElements+="\""+lesElements[j]+"\": "+(-1*(j+1)).toString()+",";
    var listeElements=listeElements.substring(0, listeElements.length-1);
    listeElements+="\}";
    eval(listeElements);
    var bDialog={
    DoDialog: function(){return app.execDialog(this);},
    initialize: function(bDialog) {this.loadDefaults(bDialog)},
    validate: function(bDialog) {
    results=bDialog.store();
    oRslt=bDialog.store();
    var listeElements=bDialog.store()["LIST"];
    testOK=1;
    for (var j in listeElements) {
    if (listeElements[j]>0) {
    valItem=listeElements[j];
    if (valItem==1) testOK=0;
    }
    }
    var alertReturn=(testOK);
    if(!alertReturn) app.alert("\nVeuillez s\u00E9lectionner un menu d\u00E9roulant.");
    return alertReturn;
    },
    loadDefaults: function (bDialog) {
    bDialog.load({LIST: laListe,});
    },
    description: {
    name: "Dialog",
    align_children: "align_top",
    elements: [
    {
    type: "view",
    align_children: "align_fill",
    elements: [
    {
    type: "popup",
    item_id: "LIST",
    width: 120,
    },
    {
    alignment: "align_right",
    type: "ok_cancel",
    },
    ]
    },
    ]
    }
    };
    if("ok"==bDialog.DoDialog()) {
    var nomChamp=lesElements[valItem-1];
    var f=this.getField(nomChamp);
    var numItems=f.numItems;
    if (f.type=="combobox") var leType="Menu d\u00E9roulant";
    else var leType="Zone de liste";
    console.println("***** "+leType+" \""+nomChamp+"\" *****\r\u00C9l\u00E9ment -> Valeur d'exportation");
    for (var i=0; i<f.numItems; i++) {
    console.println("– "+f.getItemAt(i,false)+" -> "+f.getItemAt(i,true));
    }
    console.println("**********************************\r");
    }
    }

    @+
    😎

    en réponse à : Remplacer valeur numérique en lettres #72771
    bebarth
    Maître des clés

    En script de format personnalisé :
    if (event.value!="") {
    var somme=event.value.split(",");
    if (somme.length==1) event.value=somme[0]+",00 €";
    else event.value=somme[0]+","+(somme[1]+"00").substr(0,2)+" €";
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste des éléments dans la console #72768
    bebarth
    Maître des clés

    …et si on veut être perfectionniste il faut modifier l’alerte et le message affiché dans la console !!!

    @+
    😎

    en réponse à : Liste des éléments dans la console #72767
    bebarth
    Maître des clés

    il suffit d’écrire :

    if (this.getField(this.getNthFieldName(i)).type== »combobox » || this.getField(this.getNthFieldName(i)).type== »listbox ») lesElements.push(this.getNthFieldName(i));

    @+
    😎

    en réponse à : Remplacer valeur numérique en lettres #72765
    bebarth
    Maître des clés

    bonjour,
    En script de format personnalisé :
    if (event.value!="") event.value+=" €";
    ou :
    if (event.value!="") event.value="€ "+event.value;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Liste des éléments dans la console #72763
    bebarth
    Maître des clés

    bonjour,
    Je suis un peu à la bourre sur ce post, mais voici un script que j’avais écrit il y a quelques temps sur le même sujet.
    Le script retourne une boite de dialogue avec le nom de tous les menus déroulants (ça évite d’entrer un nom incorrect) puis liste tous les éléments et leur valeur d’exportation.
    console.clear();
    console.show();
    var lesElements=[]
    for (var i=0; i<this.numFields; i++) {
    if (this.getField(this.getNthFieldName(i)).type=="combobox") lesElements.push(this.getNthFieldName(i));
    }
    if (!lesElements.length) app.alert("Il n'y a pas de menu d\u00E9roulant dans ce document.",3);
    else {
    lesElements.unshift("- S\u00E9lectionnez -");
    var listeElements="var laListe \= \{";
    for (var j=0; j<lesElements.length; j++) listeElements+="\""+lesElements[j]+"\": "+(-1*(j+1)).toString()+",";
    var listeElements=listeElements.substring(0, listeElements.length-1);
    listeElements+="\}";
    eval(listeElements);
    var bDialog={
    DoDialog: function(){return app.execDialog(this);},
    initialize: function(bDialog) {this.loadDefaults(bDialog)},
    validate: function(bDialog) {
    results=bDialog.store();
    oRslt=bDialog.store();
    var listeElements=bDialog.store()["LIST"];
    testOK=1;
    for (var j in listeElements) {
    if (listeElements[j]>0) {
    valItem=listeElements[j];
    if (valItem==1) testOK=0;
    }
    }
    var alertReturn=(testOK);
    if(!alertReturn) app.alert("\nVeuillez s\u00E9lectionner un menu d\u00E9roulant.");
    return alertReturn;
    },
    loadDefaults: function (bDialog) {
    bDialog.load({LIST: laListe,});
    },
    description: {
    name: "Dialog",
    align_children: "align_top",
    elements: [
    {
    type: "view",
    align_children: "align_fill",
    elements: [
    {
    type: "popup",
    item_id: "LIST",
    width: 120,
    },
    {
    alignment: "align_right",
    type: "ok_cancel",
    },
    ]
    },
    ]
    }
    };
    if("ok"==bDialog.DoDialog()) {
    var nomChamp=lesElements[valItem-1];
    var f=this.getField(nomChamp);
    var numItems=f.numItems;
    console.println("***** Menu d\u00E9roulant \""+nomChamp+"\" *****\r\u00C9l\u00E9ment -> Valeur d'exportation");
    for (var i=0; i<f.numItems; i++) {
    console.println("– "+f.getItemAt(i,false)+" -> "+f.getItemAt(i,true));
    }
    console.println("**********************************\r");
    }
    }

    @+
    😎

    en réponse à : Lecture PDF impossible #72749
    bebarth
    Maître des clés

    bonjour,
    Adobe Reader demande une connexion  ?
    Quel OS ? Il existe d’autres lecteurs gratuits.

    @+
    😎

    en réponse à : Remplacer valeur numérique en lettres #72740
    bebarth
    Maître des clés

    bonjour,
    Une petite amélioration du script pour ne pas pouvoir taper une série de zéro en début de frappe !
    Voici l’expression régulière :
    /^(([0]|([1-9]\d{0,11}))(\,\d{0,2})?)?$/
    …et ajout automatique d’une virgule après un chiffre qui commence par zéro.

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 1 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplacer valeur numérique en lettres #72737
    bebarth
    Maître des clés

    Quand j’ai quelque chose dans la tête, je ne l’ai pas au… tre part !
    Voici donc un fichier avec le script mis en fonction.

    Script de touches personnalisé :
    if (!event.willCommit) {
    if (event.value.length==0 && event.change==",") event.change="0,";
    var aTester=event.value.split("");
    aTester.splice(event.selStart,event.selEnd-event.selStart,event.change);
    var testeChaine=aTester.join("");
    RegExAmount=/^(\d{0,12}(\,\d{0,2})?)$/;
    if (RegExAmount.test(testeChaine)) {
    ecriture(testeChaine);
    } else event.rc=false;
    } else {
    RegExAmount=/^(\d{1,12}(\,\d{0,2})?)$/;
    if (event.value=="" || RegExAmount.test(event.value)) {
    ecriture(event.value);
    } else event.rc=false;
    }

    Le reste est en script de document.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplacer valeur numérique en lettres #72724
    bebarth
    Maître des clés

    bonjour,
    Voici un fichier avec script de touches personnalisé qui permet de répondre aux 2 demandes.
    L’écriture en lettres se fait au fur et à mesure de la frappe des chiffres.
    J’ai recopié 2 fois le script d’origine pour raison de temps mais cela nécessiterait d’écrire une fonction en script de document !
    Si j’avais à réécrire ce script aujourd’hui il serait un peu différent mais vu qu’il fonctionne…

    var etoiles="**********";
    if (!event.willCommit) {
    var aTester=event.value.split("");
    aTester.splice(event.selStart,event.selEnd-event.selStart,event.change);
    var testeChaine=aTester.join("");
    RegExAmount=/^(\d{0,12}(\,\d{0,2})?)$/;
    ...
    }
    } else event.rc=false;
    }

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 1 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Remplacer valeur numérique en lettres #72715
    bebarth
    Maître des clés

    bonjour,
    As-tu réussi ?

    @+
    😎

    en réponse à : Extraction automatique 1ère page pdf par lot #72714
    bebarth
    Maître des clés

    👍

    @+
    😎

    en réponse à : Extraction automatique 1ère page pdf par lot #72711
    bebarth
    Maître des clés

    bonjour,

    Dans mon idée « this » représente le document qui vient d’être enregistré, qui est actif et donc au premier-plan à l’instant T.

    Ce n’est effectivement pas bien clair, mais pour moi « this » représente « l’objet » d’où est lancé la partie du script. Si c’est un document, « this » est ce document, si c’est d’une boite de dialogue, « this » est cette boite de dialogue.

    Bonjour, le script a fonctionné

    Combien de fichiers as-tu traité et en combien de temps ?

    @+
    😎

Affichage de 99 réponses de 397 à 495 (sur un total de 3,382)