Donnez vie à vos documents numériques !
 

bebarth

Toutes mes réponses sur les forums

Affichage de 99 réponses de 199 à 297 (sur un total de 3,104)
  • Auteur
    Réponses
  • 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 1 année 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 1 année 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 1 année 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 ?

    @+
    😎

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

    Je suppose que c’est automatique, mais si ce n’est pas le cas il faudra ajouter (après l’étape Enregistrement) une nouvelle étape « Exécuter un JavaScript » en utilisant ce script : this.closeDoc(true);

    “this” représente le fichier dont on veut extraire la première page donc this.closeDoc(true); ne fermera pas le fichier temporaire.

    Pour ma part voici le script à utiliser :
    var newDoc=app.newDoc();
    newDoc.insertPages ({
    nPage: 0,
    cPath: this.path,
    nStart: 0
    });
    newDoc.deletePages(0);
    newDoc.saveAs({
    cPath: this.path.replace(/.pdf$/i,"_extrait.jpg"),
    cConvID: "com.adobe.acrobat.jpeg",
    bCopy: true,
    bPromptToOverwrite: true
    });
    newDoc.closeDoc(true);

    Il vaut effectivement traiter les 5000 fichiers par lots, sinon il faudrait écrire un autre script pour savoir où on en est dans le traitement…

    @+
    😎

    en réponse à : Lancer l’impression page après page #72689
    bebarth
    Maître des clés

    …pas besoin d’indiquer nEnd si on n’imprime qu’une seule page.

    @+

    😎

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

    bonjour,

    pour moi il faudra attendre la semaine prochaine car je suis sans ordinateur…

    j’espère que ton stage est un peu plus long

    @+
    😎

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

    bonjour,

    regarde les actions Acrobat :

    https://helpx.adobe.com/fr/acrobat/using/applying-actions-scripts-pdfs.html
    tu devrais y arriver, sinon il faudra attendre la semaine prochaine…

    @+
    😎

    en réponse à : Lancer l’impression page après page #72675
    bebarth
    Maître des clés

    bonjour,

    avec Acrobat Pro ou Reader ?

    je n’ai pas d’ordinateur avec moi cette semaine mais regarde la méthode « print » de l’api référence…

    @+
    😎

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

    bonjour,

    Il faudrait écrire un script de touches personnalisé comme celui que j’ai fait pour ce post :

    https://community.adobe.com/t5/acrobat-sdk-discussions/repeated-characters-at-end-of-textbox/m-p/13638180#M91214

    je serai de retour la semaine prochaine.

    @+
    😎

    en réponse à : Quand champ date invisible script ne marche pas. #72669
    bebarth
    Maître des clés
    en réponse à : Quand champ date invisible script ne marche pas. #72666
    bebarth
    Maître des clés

    bonjour,
    Il y avait effectivement une erreur dans le script !
    Mieux, on met le script au niveau du document :
    if (this.getField("validite").value=="") this.getField("validite").value=util.printd("dd/mm/yyyy", new Date(new Date().getTime()+(365*24*3600*1000)));

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Quand champ date invisible script ne marche pas. #72657
    bebarth
    Maître des clés

    bonjour,
    Si tu caches le champ de la date du jour cela signifie que tu n’en a pas besoin !
    Tu peux donc réduire ton script à :
    Oups! Script modifié…
    if (event.value=="") event.value=util.printd("dd/mm/yyyy", new Date(new Date().getTime()+(365*24*3600*1000)));

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 1 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Atteindre un champ dans un formulaire #72656
    bebarth
    Maître des clés

    bonjour,
    En script de document tu écris :
    this.getField("nomDuChamp").setFocus();

    @+
    😎

    en réponse à : Supprimer une annotation spécifique #72641
    bebarth
    Maître des clés

    👍

    en réponse à : Supprimer une annotation spécifique #72636
    bebarth
    Maître des clés

    bonjour,
    En fait il faut utiliser le code indiqué dans le fichier joint, car avec celui de cette page certains “crochets” ne s’affichent pas !


    @Merlin
    : une idée du pourquoi ?

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Supprimer une annotation spécifique #72625
    bebarth
    Maître des clés

    bonjour,
    Le plus simple est de donner un nom à l’annotation lors de sa création puis supprimer celle qui porte ce nom !

    if (event.target.buttonGetCaption()=="AJOUTER") {
    var coordonnees=event.target.rect;
    var annotation=this.addAnnot({
    page: 0,
    type: "Text",
    point: [coordonnees[2]+20,coordonnees[1]+20],
    name: "annotationNo1",
    });
    event.target.buttonSetCaption("SUPPRIMER");
    event.target.fillColor=color.red;
    event.target.textColor=color.white;
    } else {
    var lesAnnotations=this.getAnnots({nPage:0});
    for (var i=0; i<lesAnnotations.length; i++)
    if (lesAnnotations.name=="annotationNo1") lesAnnotations.destroy();
    event.target.buttonSetCaption("AJOUTER");
    event.target.fillColor=color.green;
    event.target.textColor=color.black;
    }

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par Merlin. Raison: Ce script n'est pas complet, voir ci-dessous
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Usage de la console #72612
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire le script comme ceci :
    for (var i=0; i<this.numFields; i++) {
    var oFld=this.getField(this.getNthFieldName(i));
    if (oFld.type == "text" && (/^Question\.\d+\.\d+/.test(oFld.name) || /^R\.\d+\.\d+/.test(oFld.name) || /^Q\.\d+\.\d+/.test(oFld.name))) {
    oFld.setAction("Calculate", "EditReps();");
    oFld.setAction("Keystroke", "Default();");
    }
    }

    @+
    😎

    en réponse à : Formulaire PDF #72605
    bebarth
    Maître des clés

    Il faut mettre les champs en lecture seule uniquement si ils ont été remplis !
    var lesChamps=["champs1","champs2","champs3","etc."];
    for (var i=0; i<lesChamps.length; i++) {
    if (this.getField(lesChamps).value!=this.getField(lesChamps).defaultValue) this.getField(lesChamps).readonly=true;
    }

    @+
    😎

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

    bonjour,
    Le plus simple est de mettre le noms des champs dans une table et de placer ce script au même endroit que le précédent : “Lorsque le document sera enregistré” :
    var lesChamps=["champs1","champs2","champs3","etc."];
    for (var i=0; i<lesChamps.length; i++) this.getField(lesChamps).readonly=true;

    @+
    😎

    PS : Voir la copie d’écran car les crochets n’apparaissent pas dans la ligne de code !

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formulaire récalcitrant ! #72599
    bebarth
    Maître des clés

    Voici une petite modification de ton formulaire sur le champ Email ou j’ai rajouté un script pour demander une adresse valide

    L’expression régulière que tu utilises vérifies vraiment que le minimum… On peut par exemple utiliser des caractères accentués alors qu’ils ne sont pas autorisés.
    Si tu cherches sur internet tu trouveras des dizaines d’expressions régulières pour cette vérification et toutes différentes !
    Moi j’utilise celle-ci…
    /^[a-zA-Z0-9.!#$%&'*+/=?^_{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/`

    @+
    😎

    en réponse à : Formulaire récalcitrant ! #72598
    bebarth
    Maître des clés
    bonjour,

    TOUT fonctionne correctement comme je le souhaitais

    Une petite précision : lorsqu’on utilise “event” dans un script, ce n’est pas la peine de le faire précéder par “this”.
    “event” ne s’utilise que dans le document actif et “this” indique que c’est pour le document actif ! C’est donc redondant…

    @+
    😎

    en réponse à : Formulaire PDF #72585
    bebarth
    Maître des clés

    bonjour,
    Oui, en script d’action lorsque le document sera enregistré on peut passer ces champs en lecture seule !

    @+
    😎

    en réponse à : Formulaire récalcitrant ! #72583
    bebarth
    Maître des clés

    bonjour,
    Il faut modifier l’ordre de calcul des champs.
    Voici un des scripts :
    if (this.getField("CARTE").value=="") var total=this.getField("1JS").value*this.getField("PU1JSE").value;
    else var total=this.getField("1JS").value*this.getField("PU1JS").value;
    if (this.getField("SUPPL").value=="") event.value=total;
    else event.value=total*0.3;
    Ici on peut indiquer n’importe quoi en numéro de carte et pour la réduction supplémentaire !
    On pourrait peut-être ajouter une expression régulière afin de vérifier si c’est bien un numéro de carte correct…

    Désolé pour ne pas t’avoir répondu directement sur ta boite mail, j’ai encore été très occupé ces derniers jours.

    @+
    😎

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

    … de rien !
    Voici le lien pour le sujet original :

    Conversion nombre en lettres

    @+
    😎

    en réponse à : Formulaire PDF #72550
    bebarth
    Maître des clés

    Voici un exemple de ce qui pourrait se faire !

    @+
    😎

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

    « Et donc dans mes rêves les plus fous, le pop-up n’apparait plus une fois qu’on a ‘enregistré-sous’. » On devrait peut être pouvoir bidouiller quelque chose… Je vais réfléchir.

    En script d’actions du document “Le document sera enregistré” on peut supprimer l’alerte avec “this.removeScript”.

    … et utiliser “try… catch” pour éviter de futur erreurs lors des prochains enregistrements !

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 2 mois par bebarth.
    en réponse à : Mélanger des lettres #72539
    bebarth
    Maître des clés

    bonjour,
    J’arrive un peu après la bataille, mais pour inverser 2 variables a et b on peur utiliser :
    b=[a, a=b][0];
    D’où ma version (en français) :
    var leMot=this.getField("MelangeLettre").value;
    this.getField("MelangeLettre").value=melangerMot(leMot);
    function melangerMot(leMot) {
    var tableMot=leMot.split("");
    var tableMelangee=melangerTable(tableMot);
    return tableMelangee.join("");
    }
    function melangerTable(table) {
    for (var i=table.length-1; i>0; i--) {
    var j=Math.floor(Math.random()*(i + 1));
    table[j]=[table,table=table[j]][0];
    }
    return table;
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Case texte grisée grâce à liste déroulante #72529
    bebarth
    Maître des clés

    bonjour,
    Pour programmer ton formulaire plus facilement, il va falloir au préalable revoir les noms des champs et les valeurs d’exportations des menus déroulants. Tu imagines bien que si dans les formules on a uniquement des valeurs du type ” Absence de RDV préalable – 2 appels infructueux, demande de RDV “, le script va vite devenir illisible… Des chaines de caractères de ce type ne doivent être que des valeurs attribuées à des champs.

    J’ai quand même fait l’exemple donné, mais Merlin à raison : pour établir une formule il faut une règle et non juste un ou des exemple :
    if (!event.willCommit) {
    if (event.changeEx==" Chantier non déclaré (CND)") {
    this.getField("N° Téléservice de la Dict").fillColor=color.gray;
    this.getField("N° Téléservice de la Dict").readonly=true;
    this.getField("Si absence de RDV").fillColor=color.gray;
    this.getField("Si absence de RDV").readonly=true;
    this.getField("si rdv non respecté").fillColor=color.gray;
    this.getField("si rdv non respecté").readonly=true;
    this.getField("si non respect des prescriptions").fillColor=color.gray;
    this.getField("si non respect des prescriptions").readonly=true;
    } else {
    this.getField("N° Téléservice de la Dict").fillColor=color.transparent;
    this.getField("N° Téléservice de la Dict").readonly=false;
    this.getField("Si absence de RDV").fillColor=color.transparent;
    this.getField("Si absence de RDV").readonly=false;
    this.getField("si rdv non respecté").fillColor=color.transparent;
    this.getField("si rdv non respecté").readonly=false;
    this.getField("si non respect des prescriptions").fillColor=color.transparent;
    this.getField("si non respect des prescriptions").readonly=false;
    }
    }
    Dans ton cas, s’il n’y a pas de règle bien définies, il faudra utiliser des “else if” pour chaque cas.
    if (!event.willCommit) {
    if (event.changeEx==" Chantier non déclaré (CND)") {
    this.getField("N° Téléservice de la Dict").fillColor=color.gray;
    this.getField("N° Téléservice de la Dict").readonly=true;
    this.getField("Si absence de RDV").fillColor=color.gray;
    this.getField("Si absence de RDV").readonly=true;
    this.getField("si rdv non respecté").fillColor=color.gray;
    this.getField("si rdv non respecté").readonly=true;
    this.getField("si non respect des prescriptions").fillColor=color.gray;
    this.getField("si non respect des prescriptions").readonly=true;
    } else if (event.changeEx==" Absence de RDV préalable - 2 appels infructueux, demande de RDV") {
    ...
    ...
    } else if (event.changeEx==" Non respect des prescriptions GRTgaz") {
    ...
    ...
    } else {
    this.getField("N° Téléservice de la Dict").fillColor=color.transparent;
    this.getField("N° Téléservice de la Dict").readonly=false;
    this.getField("Si absence de RDV").fillColor=color.transparent;
    this.getField("Si absence de RDV").readonly=false;
    this.getField("si rdv non respecté").fillColor=color.transparent;
    this.getField("si rdv non respecté").readonly=false;
    this.getField("si non respect des prescriptions").fillColor=color.transparent;
    this.getField("si non respect des prescriptions").readonly=false;
    }
    }

    Autre recommendation, pour les menus déroulants, pense à cocher la case “Valider la valeur sélectionnée immédiatement”.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Case texte grisée grâce à liste déroulante #72523
    bebarth
    Maître des clés

    bonjour,
    Dans ton fichier Excel, je ne vois pas à voir quelles cellules sont grisées en fonction de quels éléments des menus déroulants !
    Pourrais-tu donner quelques exemples.

    mais si je met plusieur mot dans la liste d’élément dans la liste déroulante

    À première vue if suffirait d’ajouter des “ou” (||).

    @+
    😎

    en réponse à : Case texte grisée grâce à liste déroulante #72520
    bebarth
    Maître des clés

    bonjour,
    Il existe plusieurs façons de faire ça !
    En script de touches personnalisé du menu déroulant qui ne s’exécute que lors de la modification du menu :
    if (!event.willCommit) {
    if (event.changeEx=="Champs grisés") {
    this.getField("Text2").fillColor=color.gray;
    this.getField("Text2").readonly=true;
    this.getField("Text3").fillColor=color.gray;
    this.getField("Text3").readonly=true;
    } else {
    this.getField("Text2").fillColor=color.transparent;
    this.getField("Text2").readonly=false;
    this.getField("Text3").fillColor=color.transparent;
    this.getField("Text3").readonly=false;
    }
    }
    ou en script de calcul des champs modifiés, mais ces scripts s’exécutent après chaque évènement ce qui peut être pénalisant s’il y en a beaucoup :
    if (this.getField("Dropdown7").value=="Champs grisés") {
    event.target.fillColor=color.gray;
    event.target.readonly=true;
    } else {
    event.target.fillColor=color.transparent;
    event.target.readonly=false;
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Exportation de tampons Acrobat Pro #72403
    bebarth
    Maître des clés

    bonjour,
    Les tampons sont stockés dans un répertoire Stamps.
    Tu télécharges l’utilitaire show_me_the_path et tu sera exactement où ils se trouvent :

    Show_me_the_path

    @+
    😎

    en réponse à : Afficher / masquer grâce à checkBox #72400
    bebarth
    Maître des clés

    bonjour,
    Il y avait la même chose dans l’API Reference, mais perso je préfère regarder la valeur :
    var premierPoint=event.target.name.indexOf(".");
    var dernierPoint=event.target.name.lastIndexOf(".");
    var ind1=event.target.name.substring(premierPoint+1,dernierPoint);
    this.getField("Aide."+ind1+".2").display=event.target.value!="Off"?display.visible:display.hidden;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Envoyer un Email #72382
    bebarth
    Maître des clés

    bonjour,
    Ça fonctionne pour moi !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raz et remplissage automatique #72368
    bebarth
    Maître des clés

    Je n’ai pas de message d’erreur mais ça ne marche pas…

    Je n’ai pas vérifié le script entier, mais la première chose que je vois est que resetForm() doit s’appliquer à une table, il faut donc écrire :
    if (oFld.type == "combobox") {this.resetForm([oFld.name]);}

    Je regarderai plus précisément si ça ne fonctionne pas mieux…

    @+
    😎

    en réponse à : Raz et remplissage automatique #72365
    bebarth
    Maître des clés
    bonjour,

    Par exemple si je veux extraire le chiffre compris entre les 2 points d’un champ qui se nommerait R.5.3 (ici le chiffre 5) mais il faudrait que ça fonctionne pour le cas d’un nombre à 2 chiffres comme R.12.10 (pour extraire le nombre 12)

    Pour celà, il faut prendre la valeur indiquée entre le premier et le dernier point. Essaye ceci :
    var nomChamp="R.12.10";
    var premierPoint=nomChamp.indexOf(".");
    var dernierPoint=nomChamp.lastIndexOf(".");
    var indice=nomChamp.substring(premierPoint+1,dernierPoint);
    console.println("indice : "+indice);
    Ce serait un peu plus compliqué s’il y avait plus de 2 points mais c’est faisable quand même !

    @+
    😎

    en réponse à : Enlever 1 heure dans un champ #72363
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire le script en fonction de l’indice des champs.
    Pour la fonction :
    function HM_Format(ind) {
    var enminutes=Math. round(somme/60)
    // Heures
    var heures=Math.floor(enminutes/60);
    // Minutes
    var minutes=((enminutes/60)-heures)*60;

    if (this.getField("caseAcocher."+ind).value!="Off") heures--;

    event.value=util.printf("%,302.0f", heures)+":"+util.printf("%,302.0f", minutes);
    }

    et pour appeler la fonction :
    event.value= "";
    var somme=Time2Num("hh:mm", this.getField("end.0").value)-Time2Num("hh:mm", this.getField("start.0").value);
    HM_Format(event.target.name.substr(6));

    A noter que tu devrais utiliser la même méthode pour la variable somme.
    Tu devrais également positionner ces scripts en scripts de touche personnalisés des menus déroulants start et end ce qui éviterait que les calculs se fassent après chaque évènement déclenché dans ton formulaire !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Enlever 1 heure dans un champ #72342
    bebarth
    Maître des clés

    bonjour,
    Voici pour moi ! Juste une petite modification de la fonction HM_Format :

    function HM_Format() {
    var enminutes=Math. round(somme/60)
    // Heures
    var heures=Math.floor(enminutes/60);
    // Minutes
    var minutes=((enminutes/60)-heures)*60;

    // Suppression d'une heure
    if (heures>6) heures--;
    // ou
    // if (this.getField("caseAcocher").value!="Off") heures--;
    //

    event.value=util.printf("%,302.0f", heures)+":"+util.printf("%,302.0f", minutes);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raz et remplissage automatique #72321
    bebarth
    Maître des clés
    bonjour,

    Attention quand même : cette requête GREP détecte le « R » en début de mot, mais pas forcément en début de nom.

    C’est pourquoi il vaut mieux écrire :
    ...
    if (/^R./.test(oFld.name)) {
    ...

    ou
    ...
    if (oFld.name.indexOf("R.")==0) {
    ...

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 3 mois par bebarth.
    en réponse à : Utiliser le même script sans le modifier #72294
    bebarth
    Maître des clés

    Voici donc ma proposition :
    function verifier(n) {
    var nbChamps=0;
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("Q"+n+".")==0) nbChamps++;
    }
    var erreurs=0;
    for (var a=1; a<=nbChamps; a++) {
    this.getField("Q"+n+"."+a).readonly=true;
    if (this.getField("Q"+n+"."+a).value!=0) {
    this.getField("Q"+n+"."+a).fillColor=color.white;
    } if (this.getField("Q"+n+"."+a).value==0) {
    this.getField("Q"+n+"."+a).fillColor=color.red;
    erreurs++;
    }
    }
    if (!erreurs) {
    this.getField("Bravo.1").display=display.visible;
    this.getField("Masque."+n).display=display.hidden;
    } else {
    if (erreurs==1) this.getField("Erreurs.1").value="Il y a une erreur.";
    else this.getField("Erreurs.1").value="Il y a "+erreurs+" erreurs.";
    this.getField("Erreurs.1").display=display.visible;
    }
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Utiliser le même script sans le modifier #72292
    bebarth
    Maître des clés
    bonjour,

    Il faudrait un code qui me permettrait de compter tous les champs qui commencent par « Q »+n+ ». »

    Voici ce que tu peux écrire :
    var nbChamps=0;
    for (var i=0; i<this.numFields; i++) {
    if (this.getNthFieldName(i).indexOf("Q"+n+".")==0) nbChamps++;
    }
    console.println("Nombre de champs Q"+n+". : "+nbChamps);

    @+
    😎

    en réponse à : BONNE ANNÉE 2023 ! #72284
    bebarth
    Maître des clés

    Bonne année à tous !

    🍾😎

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

    Math.floor arrondit à l’entier inférieur tandis que Math.round arrondit à l’entier le plus proche.

    @+
    😎

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

    bonjour,
    Essaye plutôt : Math.round(Math.random()*3)+1;

    @+
    😎

    en réponse à : Validation de valeur champ multiligne #72257
    bebarth
    Maître des clés

    A ce moment la il faut procéder autrement, directement lors de la création des liste.
    Donc on modifie ta fonction :
    function LaListe() {
    var lesLignes=this.getField("entreesListe").value.split("\r");
    for (var a=0; a<lesLignes.length; a++) if (lesLignes[a]=="") lesLignes[a]=lesLignes[a]=" ";
    for (var a = 0; a < 11; a++) {if (this.getField("motif."+a) != null) {this.getField("motif."+a).setItems(lesLignes);}}
    }
    et tu peux supprimer l’autre script.

    @+
    😎

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Importation d’image dans un formulaire PDF #72256
    bebarth
    Maître des clés

    Je n’avais pas fait attention que c’était un bouton, je pensais que c’était un champ image.
    Un champ image est un bouton sans couleur de fond où l’action et le script sont déjà intégrés.

    @+
    😎

    en réponse à : Validation de valeur champ multiligne #72249
    bebarth
    Maître des clés

    bonjour,
    Je ne vois pas bien à quoi ça sert, mais tu peux écrire :
    this.getField("champTXT").value=this.getField("champTXT").value.replace(/\r\r/g,"\r \r");

    @+
    😎

    en réponse à : Importation d’image dans un formulaire PDF #72248
    bebarth
    Maître des clés

    bonjour,
    Comme ça je ne vois pas !
    As-tu essayé d’importer une autre image pour voir le résultat ?

    @+
    😎

    en réponse à : Format personalisé #72242
    bebarth
    Maître des clés

    bonjour,
    En script de format personnalisé :
    if (event.value!="") event.value=event.value+" km";
    avec un “k” minuscule pour l’unité, et
    if (event.value!="") event.value=event.value+" €";

    @+
    😎

    en réponse à : Choix de langue #72238
    bebarth
    Maître des clés

    bonjour,
    Avant de modifier la langue, il faut repérer la position de chaque menu avec “currentValueIndices”, puis repositionner la valeur des menus après modification.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Extraction de pièces jointes #72230
    bebarth
    Maître des clés

    bonjour,

    La fonction exportdataobject marche si on importe une PJ normalement via l’onglet PJ mais pas via les annots

    C’est malheureusement correct !!!

    @+
    😎

    en réponse à : Javascript afficher/masquer un champ en fonction d’un calcul #72227
    bebarth
    Maître des clés
    bonjour,

    Le nombre 15 a-til une définition particulière en JS ?

    En JavaScriptologie, je ne pense pas !

    As-tu un message d’erreur dans la console ? Peux-tu partager un fichier ?

    @+
    😎

    en réponse à : Champs calculés #72219
    bebarth
    Maître des clés
    en réponse à : Incorporer des icones #72188
    bebarth
    Maître des clés

    bonjour,
    C’est parce que tu supprimes uniquement le champs, mais l’objet est toujours là !
    Il faudrait le supprimer avec :
    this.removeIcon("BB");
    …ou autre avant de réinitialiser.
    Manuellement tu peux taper cette ligne dans la console, sinon tu pourrais avec ton champ liste.66 supprimer complètement l’élément sélectionné (champ et objet).
    Essaye et dis-moi, sinon j’essayerai de faire ça lundi…

    @+
    😎

    en réponse à : Incorporer des icones #72180
    bebarth
    Maître des clés

    bonjour,
    Voici ! J’ai apporté quelques modifications dans tes scripts afin de réduire le nombre de lignes.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Choix de langue #72178
    bebarth
    Maître des clés

    bonjour,
    Il faut appeler différents éléments de l’objet “elementsListes” en fonction de la langue :
    var bouton=this.getField("icone");
    if (event.target.buttonGetCaption()=="Français") {
    event.target.buttonSetCaption("Anglais");
    event.target.fillColor=color.black;
    event.target.textColor=color.white;
    this.getField("ListeMere").setItems(["aAnglais","bAnglais","cAnglais"]);
    this.getField("ListeFille").setItems([elementsListes["aAnglais"],elementsListes["bAnglais"],elementsListes["cAnglais"]]);
    this.getField("ListePetiteFille").clearItems();
    } else {
    event.target.buttonSetCaption("Français");
    event.target.fillColor=color.black;
    event.target.textColor=color.white;
    this.getField("ListeMere").setItems(["aFrancais","bFrancais","cFrancais"]);
    this.getField("ListeFille").setItems([elementsListes["aFrancais"],elementsListes["bFrancais"],elementsListes["cFrancais"]]);
    this.getField("ListePetiteFille").clearItems();
    }
    bouton.buttonSetIcon(this.getField("bt1").buttonGetIcon());

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Tan inverse pour avoir un angle en ° impossible #72144
    bebarth
    Maître des clés

    bonsoir,
    event.value=Math.atan(this.getField("CtanRLD").value)*180/Math.PI;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Choix de langue #72137
    bebarth
    Maître des clés

    -dans l’onglet formulaire, j’indique a la liste Mere de donner des possibilités a la liste Fille, Petite Fille, icone a la liste fille de donner des possibilité a la liste Petite Fille, icone a la liste Petite Fille d’afficher icone. -dans l’onglet script, j’indique ce qu’il y a dans les listes par: var elementsListes={ « ChoixDeListeMere »: [« PossibilitéListeFille », »PossibilitéListeFille »], etc… Mais je ne comprends pas où ou comment je remplace exemple ChoixDeListeMere par la variable txt1 ou txt2 ou …

    Là c’est moi qui ne comprends pas !
    Qu’est-ce que ” l’onglet formulaire” ou “l’onglet script” ? et qu’est-ce que tu veux faire exactement… Que sont les variables “txt1” et “txt2” ?
    L’objet “elementsListes” est en script de document.

    @+
    😎

    en réponse à : Choix de langue #72125
    bebarth
    Maître des clés

    bonjour,
    J’imagine que le script de ton menu déroulant vient de ce fichier :
    https://www.abracadabrapdf.net/wp-content/uploads/2022/07/Se%CC%81lection-dimage-Mere-Fille_BB.pdf

    Si tu étudies ce fichier, tu verras qu’en script de document on définit l’objet “elementsListes” qui détaille les différents éléments des listes mères/Filles…

    @+
    😎

    en réponse à : Javascript afficher/masquer un champ en fonction d’un calcul #72120
    bebarth
    Maître des clés

    bonjour,
    Tu peux également réduire l’écriture du script :
    var somme=0;
    for (var i=1; i<=11; i++) somme+=Number(this.getField("VERS_REG_"+i).value);
    event.value=somme;
    if (event.value==100) event.target.display=display.hidden;
    else event.target.display=display.visible;

    @+
    😎

    en réponse à : Javascript afficher/masquer un champ en fonction d’un calcul #72117
    bebarth
    Maître des clés

    bonjour,
    Il suffit d’écrire :
    // somme des cases
    VAL01 = Number((this.getField("VERS_REG_1").value)) ;
    VAL02 = Number((this.getField("VERS_REG_2").value)) ;
    VAL03 = Number((this.getField("VERS_REG_3").value)) ;
    VAL04 = Number((this.getField("VERS_REG_4").value)) ;
    VAL05 = Number((this.getField("VERS_REG_5").value)) ;
    VAL06 = Number((this.getField("VERS_REG_6").value)) ;
    VAL07 = Number((this.getField("VERS_REG_7").value)) ;
    VAL08 = Number((this.getField("VERS_REG_8").value)) ;
    VAL09 = Number((this.getField("VERS_REG_9").value)) ;
    VAL10 = Number((this.getField("VERS_REG_10").value)) ;
    VAL11 = Number((this.getField("VERS_REG_11").value)) ;
    // Total
    event.value = VAL01 + VAL02 + VAL03 + VAL04 + VAL05 + VAL06 + VAL07 + VAL08 + VAL09 + VAL10 + VAL11;
    // Affichage
    if (event.value==100) event.target.display=display.visible;
    else event.target.display=display.hidden;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Bouton Radio avec Timer #72113
    bebarth
    Maître des clés

    bonjour,
    Voici ce que l’on peut faire avec une fonction en script de document :
    var temps=5;
    var vert=["RGB",185/255,255/255,125/255];
    var orange=["RGB",255/255,230/255,100/255];
    var leScript="this.getField(\"btRad.\"+(ind+1)).readonly=false;this.getField(\"btRad.\"+(ind+1)).fillColor=vert;this.getField(\"chTxt.\"+(ind+1)).readonly=false;this.getField(\"chTxt.\"+(ind+1)).fillColor=vert;";
    function attend(ind,temps) app.setTimeOut(leScript,temps*1000);
    L’unité de temps de temporisation en première ligne est la seconde.
    Dans cette exemple je modifies également la couleur des fonds pour montrer cette temporisation.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Bouton Radio avec Timer #72110
    bebarth
    Maître des clés

    bonjour,
    Il ne suffit pas d’avoir une idée, il faut aussi trouver le temps de l’expliquer et/ou faire un fichier exemple !
    Il existe plusieurs façons d’appréhender le sujet en fonction de la conception du formulaire. Si tu as déjà un fichier à partager ça facilitera la tâche…

    @+
    😎

    en réponse à : Ajout de page dans un formulaires #72109
    bebarth
    Maître des clés

    Désolé, je ne suis pas passé sur le forum hier, mais du coup, tu vois qu’on y arrive à force de travail et de persévérance…
    Bravo. 🙌

    @+
    😎

    en réponse à : resetForm #72099
    bebarth
    Maître des clés

    bonjour,
    Les champs à indiquer pour resetForm() doivent être sous forme de table, donc :
    for (var i=1; i<33; i++) {
    for (var j=1; j<32; j++) {
    this.getField("nom."+i+j+".0").defaultValue = ""
    this.resetForm(["nom."+i+j+".0"]);
    }
    }

    @+
    😎

    en réponse à : Ajout de page dans un formulaires #72089
    bebarth
    Maître des clés
    bonjour,

    Après utilisation du bouton « email » la console dit qu’un champ n’existe pas : TypeError: this.getField(…) is null

    Le champ “Nom_Fichier_1” se trouve sur la page modèle donc comme indiqué précédemment il faut trouver le préfixe pour que le “setFocus” s’exécute correctement sur le bon champ de la bonne page !
    Donc pour trouver le préfixe :
    var prefixe=event.target.name.substr(0,event.target.name.indexOf("000_VALIDATION"));
    ...
    this.getField(prefixe+"Nom_Fichier1").setFocus();
    ...

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajout de page dans un formulaires #72066
    bebarth
    Maître des clés

    Pour le champ 113a…

    Ici il faut trouver dans le document tous les noms de champs qui contiennent “176a_nom”, “176a_prenom” et “176a_email” donc :
    if (this.getNthFieldName(i).indexOf("176a_nom")>-1) this.getField(this.getNthFieldName(i)).value=event.target.value;
    etc.

    et sur le code java script « affichage », même pb

    …et ici il faut trouver les champs “184_Pole” et “185_Metier” qui sont sur la même page que le champ “183_Typedepole” donc avec le même préfixe.
    Donc prour trouver ce préfixe :
    var prefixe=event.target.name.substr(0,event.target.name.indexOf("183_Typedepole"));

    @+
    😎

    en réponse à : Configurer le format de plusieurs champs en même temps #72065
    bebarth
    Maître des clés

    bonjour,
    👍
    …et pour être un peu plus complet sur tous les types de formats que l’on peut paramétrer :
    https://www.websupergoo.com/helppdfnet/default.htm?page=source%2F6-abcpdf.objects%2Ffield%2F2-properties%2Fformat.htm

    @+
    😎

    en réponse à : Ajout de page dans un formulaires #72058
    bebarth
    Maître des clés

    C’est pas tout à fait le même principe…
    Je n’ai pas le temps développer ni de vérifier immédiatement, mais voici ce que ça devrait donner.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajout de page dans un formulaires #72055
    bebarth
    Maître des clés

     

    bonjour,
    Dans ton fichier les champs des pages dupliquées sont renommées avec un préfixe et c’est normal sinon les champs de même nom auraient toujours la même valeur quelle que soit la page !
    Il faut donc intégrer le préfixe pour chaque script, et ton document est pas mal fait pour ça.
    Par exemple, pour ton champ 180_DS1 tu peux modifier ton script en :
    if (!event.willCommit) {
    if (event.changeEx=="0") {
    this.getField(event.target.name.replace(/_DS1$/,"_DS2")).display=display.hidden;
    this.getField(event.target.name.replace(/_DS1$/,"_DS3")).display=display.hidden;
    } else this.getField(event.target.name.replace(/_DS1$/,"_DS2")).display=display.visible;
    }
    où tu remplaces le nom du champ “prefixe.180_DS1” par “prefixe.180_DS2” et “prefixe.180_DS3” et ce quel que soit ce préfixe.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Choix de langue #72049
    bebarth
    Maître des clés

    bonjour,
    Il y avait déjà un post à ce sujet :

    Formulaire choix de langue anglais francais


    et j’avais partagé un fichier, ci-joint.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Extraction de pièces jointes #72040
    bebarth
    Maître des clés

    bonsoir,
    Je n’y connais pas grand chose non plus en VBA, mais j’ai trouvé cette page :
    https://bytescout.com/products/developer/pdfextractorsdk/how-to-extract-attachments-from-pdf-files-using-pdf-extractor-sdk-in-asp-net-vbnet-and-others
    pour un script VBS, et celle-là pour intégrer un VBS dans une macro VBA :
    https://www.developpez.net/forums/d937730/autres-langages/general-visual-basic-6-vbscript/vbscript/integrer-vbs-macro-vba-excel/
    Si ça peut t’aider !!!

    @+
    😎

    en réponse à : Variable persistante #72039
    bebarth
    Maître des clés

    C’est parce que j’ai fait une erreur… Désolé !
    Il faut écrire :
    this.addScript("VarDefaut", "ListeDefaut="+DVD);

    C’est ça de publier sans tester…

    Mais tu peux aussi écrire directement :
    this.addScript("VarDefaut", "ListeDefaut="+this.getField("entreesListe").value);

    @+
    😎

    en réponse à : Variable persistante #72035
    bebarth
    Maître des clés
    bonjour,

    L’erreur venait du script ListeDefaut qui contient un format non conforme à une fonction je pense.

    C’est parce que tu as mal écrit ta ligne de script !
    Il manque les guillemets (et les caractères d’échappement) qui seront affiché dans la ligne de script ajoutée.

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 5 mois par bebarth.
    en réponse à : Impression #72034
    bebarth
    Maître des clés

    bonjour,
    Je n’ai pas étudié entièrement le fichier, mais lorsqu’il y a beaucoup de champs et de scripts, il vaut mieux éviter les scripts de calcul qui sont exécutés à chaque fois qu’un des champs du formulaire passe par l’événement « Champ désactivé ».

    L’ordre d’exécution des événements dans les champs de formulaire PDF


    Il vaut donc mieux préférer un autre déclencheur… quand c’est possible !

    @+
    😎

    en réponse à : Variable persistante #72016
    bebarth
    Maître des clés

    Sinon, tu peux sauvegarder ta variable en script de document, elle sera récupérée à l’ouverture :
    this.addScript("variable", "maVariable=\"peut-être une chaine de caractères ou un nombre !\";");

    @+
    😎

    en réponse à : Variable persistante #72009
    bebarth
    Maître des clés

    bonjour,
    Il faut la définir et la rappeler en la précédent du préfixe “global. “,  par exemple :
    global.nomVariable="ceci est une chaine de caractères";
    et ensuite tu peux la rappeler avec :
    console.println("Ma variable global est : "+global.nomVariable);

    Attention, cette variable n’est plus valable si tu quitte l’application !

    @+
    😎

    en réponse à : Choix de langue #72003
    bebarth
    Maître des clés
    bonjour,

    j’ai mis une page type en lien

    Un oubli peut-être…

    @+
    😎

    en réponse à : Impression #71999
    bebarth
    Maître des clés

    bonjour,
    Voici un lien pour la boite de dialogue et le paramètre printRange :
    https://we.tl/t-Jer1xMZsPB
    … le temps d’exécution est réellement meilleur et je pense que c’est la bonne solution !

    @+
    😎

    en réponse à : Calcul à deux chiffres max après la virgule #71998
    bebarth
    Maître des clés

    bonjour,
    …sinon, toujours en script de format personnalisé :
    if (event.value>0) event.value=event.target.value.toFixed(2);
    else event.value=0;

    @+
    😎

    en réponse à : Impression #71997
    bebarth
    Maître des clés
    bonjour,

    Après ça l’impression se lançait mais pour toutes les pages.

    Je suis désolé d’apprendre que ce script ne fonctionne pas avec ton logiciel alors qui fonctionne parfaitement avec Acrobat !
    Voici un nouveau lien pour ceux que ça intéresse car il y avait une inversion de page dans certains cas avec la version précédente.
    La modification est en fin de script :
    ...
    for (var i=0; i<lesPages.length; i++) t[lesPages].hidden=false;
    t[t.length-1].hidden=true;
    if (lesPages[lesPages.length-1]==t.length-1) t[t.length-1].hidden=false;
    this.print({bUI: false});
    ...

    N’oubliez-pas de supprimer les 2 slashs dans le script du fichier exemple.

    Je viens de penser à une autre option : mettre une checkbox (CB.n) devant chaque champ agoto.n qui serait cochée si on souhaite imprimer la fiche de cet élève puis ce script affecté au bouton « imprimer » :

    Je n’avais pas pensé au paramètre “printRange”, et on pourrait faire la même chose avec la boite de dialogue…

    @+
    😎

    en réponse à : Impression #71984
    bebarth
    Maître des clés

    bonjour,
    Le message signifie que le script n’a pas trouvé de page modèle. J’imagine donc qu’il apparait depuis ton document !
    Il faut donc créer les pages modèles sur ton document avec ce script :
    for (var i=0; i<this.numPages; i++) {
    if (i<10) var t=this.createTemplate({cName:"pageModele.0"+i, nPage: i});
    else var t=this.createTemplate({cName:"pageModele."+i, nPage: i});
    }
    mais on ne peut pas l’exécuter depuis un bouton, donc soit via la console ou une action.
    Le script d’impression devrait marcher beaucoup mieux ensuite…

    @+
    😎

    en réponse à : Si condition alors #71981
    bebarth
    Maître des clés

    bonjour,
    Je pense que le plus simple c’est :
    var leTexte=this.getField("nomChamp").value;
    if (leTexte.indexOf("800")=0 || leTexte.indexOf("800")=0) event.value=leTexte;
    else event.value="";

    @+
    😎

    en réponse à : Calcul à deux chiffres max après la virgule #71980
    bebarth
    Maître des clés

    bonjour,
    En script de format personnalisé tu peux écrire :
    event.value=event.target.value.toFixed(2);
    Seul l’affichage apparaitra avec 2 décimales, mais la valeur réelle restera celle du champ !

    @+
    😎

Affichage de 99 réponses de 199 à 297 (sur un total de 3,104)