Donnez vie à vos documents numériques !
 

bebarth

Toutes mes réponses sur les forums

Affichage de 99 réponses de 595 à 693 (sur un total de 3,389)
  • Auteur
    Réponses
  • en réponse à : Piece jointe et icône #71878
    bebarth
    Maître des clés

    bonjour,
    Pas si simple en fait, parce qu’avec ce que j’ai compris, ça fonctionne différemment selon l’échelle…
    Plus de 100% il faut redimensionner l’icône.
    Entre 50% et 100% Acrobat le fait automatiquement.
    Moins de 50%, il faut redimensionner par rapport à l’échelle 50%.
    C’est du moins ce que ‘ai constaté sur mon Mac. J’espère que ça fonctionne pareil sur un PC !
    Ci-joint un fichier qui fonctionne correctement sur mes iMac et MacBook.

    @+
    😎

    PS : Pour ceux qui avaient suivi mon ancien post, il y avait une erreur. La taille exacte de l’icône « Punaise » est de 14 x 20.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ajout page supplémentaire fiche PDF #71873
    bebarth
    Maître des clés

    Tout est dit !

    @+
    😎

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

    bonjour,
    Normalement la taille de l’icône s’adapte à l’échelle ! …avec Acrobat du moins, pour les autres logiciels je ne sais pas.
    De toute façon on ne pourrait pas le faire automatiquement car le zoom ne déclenche pas un évènement. On pourrait à la rigueur adapter l’icône selon le zoom à l’aide d’un bouton puisqu’on peut connaitre l’échelle avec this.zoom.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Cacher/montrer avec un bouton unique #71853
    bebarth
    Maître des clés

    Ça va venir…

    @+
    😎

    en réponse à : Cacher/montrer avec un bouton unique #71851
    bebarth
    Maître des clés

    bonjour,
    If faut écrire :
    function ShowHide(indice) {
    if (this.getField("test."+indice).display == display.visible) this.getField("test."+indice).display = display.hidden;
    else this.getField("test."+indice).display = display.visible;
    }
    == signifie « est égal à ».
    = signifie « devient égal à ».

    @+
    😎

    en réponse à : Ajout page supplémentaire fiche PDF #71850
    bebarth
    Maître des clés

    …et tu sais comment ajouter des pages modèles ?

    @+
    😎

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

    heu… j’ai pas compris !

    @+
    😎

    en réponse à : Lien bouton radio et liste #71834
    bebarth
    Maître des clés
    bonjour,

    Un grand bravo. Aujourd’hui, vous avez fait un homme heureux 👌.

    Certaines fois, il suffit de pas grand chose !

    C’est juste parfait.

    C’est exact !
    En me relisant, je viens de m’apercevoir que la variable « menuDeroulant » de l’exemple précédent ne sert à rien… J’avais certainement dû modifier mon script et oublié de la retirer de la fonction !
    Du coup la fonction s’écrit :
    function affichage() {
    this.getField("champ2").display=display.visible;
    switch (event.changeEx) {
    case "0":
    var leMenu=[
    ["-SELECTIONNER-",0],
    ["Métier3",["-SELECTIONNER-","Cheval","Chien"]],
    ];
    break;
    case "1":
    var leMenu=[
    ["-SELECTIONNER-",0],
    ["Métier1",["-SELECTIONNER-","Maison","Balcon"]],
    ["Métier2",["-SELECTIONNER-","Maison","Voiture"]],
    ];
    break;
    default:
    var leMenu=[""];
    this.getField("champ2").display=display.hidden;
    this.getField("champ3").display=display.hidden;
    }
    this.getField("champ2").setItems(leMenu);
    }
    et pour l’appeler :
    if (!event.willCommit) affichage();

    Maintenant, si on veut approfondir l’apprentissage en JavaScript, on peut n’utiliser qu’une seule fonction avec plusieurs variables.
    Ici le script n’est pas très long ce n’est donc pas très grave, mais s’il l’était ce serait plus intéressant.
    Si par exemple le contenu des menus déroulants est identique, on peut écrire :
    // Fontion à 2 variables
    function affichage(menuDeroulant2,menuDeroulant3) {
    this.getField(menuDeroulant2).display=display.visible;
    switch (event.changeEx) {
    case "0":
    var leMenu=[
    ["-SELECTIONNER-",0],
    ["Métier3",["-SELECTIONNER-","Cheval","Chien"]],
    ];
    break;
    case "1":
    var leMenu=[
    ["-SELECTIONNER-",0],
    ["Métier1",["-SELECTIONNER-","Maison","Balcon"]],
    ["Métier2",["-SELECTIONNER-","Maison","Voiture"]],
    ];
    break;
    default:
    var leMenu=[""];
    this.getField(menuDeroulant2).display=display.hidden;
    this.getField(menuDeroulant3).display=display.hidden;
    }
    this.getField(menuDeroulant2).setItems(leMenu);
    }
    // Script pour champ1
    if (!event.willCommit) affichage("champ2","champ3");
    // Script pour champ4
    if (!event.willCommit) affichage("champ5","champ6");
    Une seule fonction commune et les 2 variables sont définies lorsqu’on appelle cette fonction…

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 7 mois par bebarth.
    • Cette réponse a été modifiée le il y a 3 années et 7 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Permuter des champs #71829
    bebarth
    Maître des clés

    Je ne comprends pas trop quelles informations il y a dans rect. A ce que je crois comprendre et après avoir lu deux trois trucs sur le net, c’est les coordonnées des 4 coins du champ en question?

    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#id602

    Autre truc que je crois avoir compris : currentValueIndices c’est la position des entrées dans le menu déroulant et on ajoute 1 car la numérotation commence à zero ?

    Exact ! Si tes champs goto avaient commencé à 0 il n’y aurait pas eu besoin d’ajouter +1.

    Dernière question : est il possible de se passer du bouton servant à générer les menus déroulants ? J’ai essayé en plaçant ce script en script de calcul pour chacun des champs Ch1 et Ch2 ça à l’air de marcher. La méthode est bonne ou y a-t-il mieux à faire ?

    On peut mettre un script d’action en souris entrée… Le même pour les 2 menus déroulants.
    var laListe=this.getField("liste00").value.split("\r");
    event.target.setItems(laListe);

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Lien bouton radio et liste #71815
    bebarth
    Maître des clés

    bonjour,
    Si avec le menu champ4 tu veux remplir le champ5, il faut utiliser ton autre fonction.
    Donc if (!event.willCommit) affichage_1(event.target.name);

    @+
    😎

    en réponse à : Ajout page supplémentaire fiche PDF #71812
    bebarth
    Maître des clés

    bonjour,
    Vu tes 2 problèmes, je suppose que tu ne connais pas les pages modèles !
    Il va falloir t’y pencher dessus : https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#template
    Ici si tu veux ajouter ou supprimer des choses il faut le faire directement sur ces pages et non sur des copies qui dans l’exemple (que j’avais fait il y a quelques années) sont supprimées pour les cacher.

    Dans ce nouveau script on affiche ou masque les pages modèles. On peut donc ajouter ou supprimer des éléments. Ce sera pris en compte lorsque tu afficheras ou masqueras de prochaines fois… (je ne sais pas si c’est très clair…).

    var t=this.templates;
    if (event.target.buttonGetCaption()=="Voir les documents") {
    for (var i=0; i<t.length; i++) t.hidden=false;
    event.target.buttonSetCaption("Masquer les documents");
    event.target.fillColor=["RGB",155/255,40/255,20/255];
    } else {
    for (var i=0; i<t.length; i++) t.hidden=true;
    event.target.buttonSetCaption("Voir les documents");
    event.target.fillColor=["RGB",0,127/255,0];
    }

    A l’époque j’avais affiché/masqué avec 2 boutons, mais on peut le faire avec un seul !

    @+
    😎

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

    …effectivement, je n’avais pas pensé à ça !!!
    Il faut donc regarder la position des menus déroulants, mais ici on ne ragarde uniquement que la position cela présume que la position des noms dans les champs « goto.1 », etc est identique à celle des menus déroulants, sinon il faudrait comparer les valeurs (menu et champs texte)
    var temp=this.getField("goto."+(this.getField("Ch1").currentValueIndices+1)).rect;
    this.getField("goto."+(this.getField("Ch1").currentValueIndices+1)).rect=this.getField("goto."+(this.getField("Ch2").currentValueIndices+1)).rect;
    this.getField("goto."+(this.getField("Ch2").currentValueIndices+1)).rect=temp;

    J’ai réduit le script au minimum. Demande si tu ne comprends pas !

    @+
    😎

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

    bonjour,
    Voici un script qui devrait répondre à ta question :
    function eleve(nomChamp) {
    var eleve=this.getField(nomChamp).value;
    n=eleve.indexOf(" ");
    return eleve.substr(n+1);
    }
    eleveCh1=eleve("Ch1");
    eleveCh2=eleve("Ch2");
    var temp=this.getField("goto."+eleveCh1).rect;
    this.getField("goto."+eleveCh1).rect=this.getField("goto."+eleveCh2).rect;
    this.getField("goto."+eleveCh2).rect=temp;

    @+
    😎

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

    Voici le résultat !

    @+
    😎

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

    x choix pour chacun des 50 définis par le menu 2 ?

    @+

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

    bonjour,
    Qu’y a-t-il dans ce troisième menu en fondu deuxième ??? X choix différents pour les 50 éléments définis dans le deuxième menu ou juste un menu commun quel que soit le deuxième menu ?

    @+
    😎

    en réponse à : Permuter des champs #71787
    bebarth
    Maître des clés

    bonjour,
    Si tu ne t’y connais pas trop en expression régulière, il vaut mieux écrire :
    var laListe=this.getField("liste00").value.split("\r");
    this.getField("Ch1").setItems(laListe);
    this.getField("Ch2").setItems(laListe);

    Ensuite, je ne comprends pas trop ce que tu veux faire vu que les 2 listes sont identiques !
    Admettons que tu ais « élève 3 » dans le premier menu et « élève 5 » dans le deuxième, que veux-tu faire ???

    @+
    😎

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

    bonjour,
    C’est exactement pareil si tu mets 0, 1, 2, 3 et 4 en valeur d’exportation de ton premier menu déroulant !

    …ou presque exactement !!!

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 8 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Piece jointe et icône #71772
    bebarth
    Maître des clés

    bonjour,
    Voici un exemple.

    @+
    😎

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

    bonjour,
    Il suffit de permuter la propriété « rect » des 2 champs :
    var temp=this.getField("Ch1").rect;
    this.getField("Ch1").rect=this.getField("Ch2").rect;
    this.getField("Ch2").rect=temp;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Lien bouton radio et liste #71765
    bebarth
    Maître des clés
    bonjour,

    C’est parce-que les listes sont initialisées à l’ouverture du document, donc réinitialisées à chaque ouverture du document.

    Le script Champ1 est placé en validation donc exécuté à l’ouverture du document.

    Je reconnais ce script et me semble que je l’avais adapté d’après un que tu m’avais fourni. Personnellement je n’écris pas tout à fait comme ça…
    Ce weekend, j’essayerai de le réécrire à ma manière en script de touches personnalisé (c’est comme ça que je fais d’habitude).

    @+
    😎

    en réponse à : Lien bouton radio et liste #71738
    bebarth
    Maître des clés

    Je re-regarderai demain car pour l’instant je ne comprends toujours pas !
    Qu’est-ce qui devrait se passer et qui ne fonctionne pas ???

    @+
    😎

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

    Tu décompresses et tu places le fichier « Save_ destylast.js » (ci-joint) dans le répertoire JavaScript d’Acrobat, puis tu relances l’application.
    Tu peux ensuite utiliser le bouton pour calculer le poids de ton fichier : https://we.tl/t-CEcBFS4UWD

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Lien bouton radio et liste #71732
    bebarth
    Maître des clés

    bonjour,
    Désolé, mais pour l’instant après un essai rapide, je ne comprends pas ce qui ne fonctionne pas…

    @+
    😎

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

    1- peut-on avoir le poids du formulaire en temps réelle sans enregistré le document.

    Non, comme l’a indiqué Merlin on doit obligatoirement enregistrer le document pour connaitre le poids du document.

    2- avec un bouton peut-on avoir le poids dans un champs texte a chaque fois que l’on clic sur le bouton en temps réelle.

    C’est possible, mais vu qu’il faut enregistrer le document depuis un bouton, il faudra écrire un script de document à placer dans le répertoire JavaScript de ton application Acrobat.
    Tu me dis si tu es intéressé…

    étonnant mais alors pourquoi tu as le poids exact de ton formulaire sans l’avoir enregistré quand tu l’envoies directement par mail(tu as le poids du fichier dans la pièce jointe) avec un bouton envoie alors encore une fois le document et non enregistrer.

    C’est une version enregistrée du document qui est placée en pièce jointe. Le poids est donc calculé !

    @+
    😎

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

    …après vérification, this.filesize retournant un nombre, il suffit décrire :
    // Le document sera enregistré
    function lesPoids(lePoids) {
    if (lePoids<1000) return lePoids+" octets";
    else if (lePoids<1000000) return (lePoids/1000).toFixed(1)+" Ko";
    else if (lePoids<1000000000) return (lePoids/1000000).toFixed(1)+" Mo";
    else return (lePoids/1000000000).toFixed(1)+" Go";
    }
    var avant=lesPoids(this.filesize);
    // Le document a été enregistré
    var apres=lesPoids(this.filesize);
    this.getField("poids").value="Le poids avant enregistrement était de "+avant+", après enregistrement il est de "+apres+".";

    @+
    😎

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

    Il faut mettre ces script avec l’outils « Actions du document ».
    https://we.tl/t-MpHCWJ8iHZ

    @+
    😎

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

    bonjour,
    Voici 2 scripts à placer en Action de document :

    // Le document sera enregistré
    function lesPoids(lePoids) {
    if (Number(lePoids)<1000) return Number(lePoids)+" octets";
    if (Number(lePoids)<1000000) return (Number(lePoids)/1000).toFixed(1)+" Ko";
    if (Number(lePoids)<1000000000) return (Number(lePoids)/1000000).toFixed(1)+" Mo";
    if (Number(lePoids)<1000000000000) return (Number(lePoids)/1000000000).toFixed(1)+" Go";
    }
    var avant=lesPoids(this.filesize);

    // Le document a été enregistré
    var apres=lesPoids(this.filesize);
    this.getField("poids").value="Le poids avant enregistrement était de "+avant+", après enregistrement il est de "+apres+".";

    …et tout fonctionne bien !

    Voici par liens mon formulaire en cours de finalisation. https://www.casimages.com/f/

    Le lien n’est pas correct et ne fonctionne pas.

    @+
    😎

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

    …il manque les indices dans la ligne de script pourtant au format « code » !!!

    Il faut lire : cf. copie d’écran jointe.

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 8 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Piece jointe et icône #71693
    bebarth
    Maître des clés

    bonjour,
    Si ton document ne comporte que ces pièces jointes, tu peux écrire :
    var annots=this.getAnnots();
    for (var i=0; i<annots.length; i++) if (annots.type=="FileAttachment") annots.destroy();
    Sinon il faudrait faire une étude plus approfondie de chaque pièce jointe !

    @+
    😎

    en réponse à : Remplissage automatique. #71687
    bebarth
    Maître des clés

    bonjour,
    Première chose, ça ne sert à rien d’écrire this.event.value (ou autre) car event ne fonctionne qu’avec le document actif (this). Il suffit donc d’écrire event.value.

    Deuxièmement je ne comprend pas bien ce que tu veux faire !
    if (event.value != "")  {app.alert({cMsg:"Attention, liste pleine. L'entrée ne peut être saisie", nIcon:3});
    this.event.value = "";
    this.getField("evenement1.31.1").value = "";
    this.getField("commentaire1.31.1").value = "";
    }
    signifie que si le champ n’est pas vide tu affiches ton message puis tu vide ce champ plus les deux autres ! Ça ne me parait pas trop logique… Tu pourrais n’avoir que le message ou demander si on veut ou pas effacer la ligne…

    Ça ne fonctionne pas, je n’ai pas étudié exactement le pourquoi, mais ça commence à faire une sacrée usine à gaz et il doit certainement y avoir redondance dans l’exécution des scripts.

    @+
    😎

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

    bonjour,
    Désolé pour ce retard !
    Le script est une fonction en script de document.

    @+
    😎

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

    …ça ne m’empêche pas de réfléchir !
    Que doit-on faire si une pièce jointe est supprimée ? Remettre toutes les icônes à la suite ou laisser un espace vierge pour éventuellement remettre une icône à cette place ?

    @+
    😎

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

    bonjour,
    Je vais y réfléchir… mais pas aujourd’hui, certainement demain !

    @+
    😎

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

    L’api reference indique pour event.modifier :

    Specifies whether the modifier key is down during a particular event. The modifier key on the Microsoft
    Windows platform is Control and on the Mac OS platform is Option or Command. This property is not
    supported on UNIX.

    Pour info, sur Mac, seule la touche Option fonctionne, la touche Commande n’est pas reconnue (le fichier joint indique que l’on a appuyé sur aucune touche) et avec la touche ctrl rien ne se passe…

    @+
    😎

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

    👏💪👍

    @+
    😎

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

    Par exemple en utilisant CTRL + clic ou MAJ + clic, c’est une bête astuce à laquelle on ne pense pas assez souvent.

    Je connais event.shift pour maj+clic mais je ne connais pas pour ctrl+clic ! C’est quoi la commande ?

    1- je limite mes pièces jointes à 5 mais si la personne efface une d’elle sur les 5 et veuille la remplacer par exemple la position n° 3 la nouvelle viendra se superposer sur la 5 donc il y a un problème comment faire ?

    Les pièces jointes sont indiquées dans l’ordre où on les importe. Si tu supprimes la numéro 3, la numéro 4 devient la numéro 3 et la numéro 5 devient numéro 4. Le nouveau fichier importé arrivera toujours en dernière position.

    On peut désactiver la surbrillance de tous les champs avec app.runtimeHighlight=false et la simuler uniquement pour un champ avec event.target.fillColor=[« RGB », 200/255,1,1]; par exemple !

    @+
    😎

    en réponse à : Comment remplir automatiquement les cellules mois et annés #71638
    bebarth
    Maître des clés

    bonjour,
    Voici un script. N’hésite pas à demander des explications…

    if (event.value!="") {
    laDate=new Date(util.scand("mmmm yyyy", event.value).getTime());
    var leMois=laDate.getMonth();
    var lAnnee=laDate.getFullYear();
    for (var i=2; i<=32; i++) {
    leMois++;
    if (leMois==12) {
    var leMois=0;
    lAnnee++;
    }
    this.getField("date."+i).value=util.printd("mmmm yyyy",new Date(lAnnee,leMois));
    }
    } else {
    for (var i=2; i<=32; i++) this.getField("date."+i).value="";
    }

    @+
    😎

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

    bonjour,
    Le script ne fonctionnait pas car l’objet annots est nul (n’existe pas vu qu’il n’y a aucun commentaire).
    Je te conseille de travailler avec la console pour voir les messages d’erreurs.
    J’ai jeune (JavaScriptologiquement) lorsque j’ai écrit ce script et j’y ai donc apporté quelques modifications. 🤓

    var aRect=this.getField("Buttonn").rect;
    annots=this.getAnnots();
    var j=0;
    if (annots!=null) {
    for (var i=0; i<annots.length; i++) {
    if (annots.type=="FileAttachment") j++;
    }
    }
    if (j>4) {
    app.alert({cMsg:"Vous ne pouvez importer plus de 5 pièces jointes.", nIcon:2});
    } else {
    var annot=this.addAnnot({
    page: this.pageNum,
    type: "FileAttachment",
    author: "abracadabraPDF",
    contents: "Double-clic pour ouvrir la piece jointe",
    attachIcon: "PushPin",
    point: [aRect[0]-(25*(j+1)), aRect[1]-10],
    strokeColor: color.red,
    });
    annot.contents=annot.attachment.name;
    annots=this.getAnnots();
    for (var i=0; i<annots.length; i++) {
    if (annots.type=="FileAttachment") {
    var licone=annots.attachIcon;
    var r=annots.rect;
    r[2]=r[0]+20;
    r[3]=r[1]+40;
    annots.setProps({rect: r});
    }
    }
    }

    N’hésite pas à demander des explications.

    @+
    😎

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

    Ça ne fonctionnera pas à partir d’un bouton !
    Il faut lancer le script via une action (jointe) :

    this.insertPages ({
    nPage: this.numPages-1,
    cPath: "InsertExampleSource.pdf",
    nStart: 0
    });
    this.saveAs({
    cPath: "chemin du repertoire/"+this.documentFileName,
    });

    Pour « cPath » de « insertPages » tu indiques uniquement le nom du fichier s’il est dans le même répertoire que les autres, sinon tu indiques le chemin complet.

    Pour « cPath » de « saveAs » tu indiques le chemin du répertoire.

    Ensuite tu sélectionne l’action, tu indiques les fichiers à traiter (ou le répertoire) et tu la lances…

    @+
    😎

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

    Bonjour 2- peut on changer la taille de l’icône de la pièce jointe ainsi que de la remplacer par un personnel (un script explicatif serait le bienvenu pour mes deux questions). Non. Tout ce qu’on peut remplir c’est l’info-bulle, qui est ici dans ton script : contents: « Double-clic pour ouvrir »,

    eh ben si, comme expliqué dans le post !

    @+
    😎

    en réponse à : Ajout de page dans un formulaire pdf #71602
    bebarth
    Maître des clés

    bonjour,
    A vrai dire, je n’ai pas tout à fait compris !

    1. Comment veux-tu supprimer la dernière page : via un script ? Avec Acrobat Pro ou Reader ? Qu’est-ce que l’import via ftf ?
    2. Tu as raison, il n’ai pas possible d’ajouter une page avec Acrobat Reader mais c’est possible de le faire sur plusieurs fichiers avec Acrobat Pro et d’enregistrer une copie dans un autre répertoire via une action.

    Et pour alimenter ta base de données, comment penses-tu faire ?

    @+
    😎

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

    bonjour,
    Il est normal que tes icônes s chevauchent à chaque fois vu que tu leurs donnes la même position [400,500] !
    Le sujet a été traité il y a déjà un certain temps…

    Personnalisation d’un bouton permettant d’importer une pièce jointe

    Je te joins le fichier que j’avais fait à l’époque. Essaye de l’étudier et n’hésite pas à demander ce que tu ne comprends pas !

    Il n’est pas possible de personnaliser les icônes, mais on peut modifier leurs tailles comme indiqué dans le lien.

    @ Merlin : Le fichier Excel que l’on a extrait m’a bien été utile pour retrouver le post et le fichier…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Numéro de page #71588
    bebarth
    Maître des clés

    …il faut juste connaitre la logique de calcul de ce nombre qui est 5 fois Nb1 plus Nb2. Seule la construction se fait avec 2 nombres aléatoires qui sont affichés dans la boite de dialogue.
    Mais si un élève arrive à lire le script il pourra facilement déduire cette logique ! Il en est de même avec un champ texte avec option mot de passe même s’il est indiqué en unicode.

    @+
    😎

    en réponse à : Numéro de page #71578
    bebarth
    Maître des clés

    bonjour,
    Je ne pense pas que cela soit possible de cacher la frappe d’une boite de dialogue, mais tu pourrais ajouter un champ avec l’option « Mot de passe » !
    Une remarque, il faudrait peut-être mettre à jour le menu déroulant lorsqu’on supprime une page….

    …et on n’écrit pas : if (numpage = this.numPages – 1)  mais : if (numpage == this.numPages – 1)

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 8 mois par bebarth.
    en réponse à : Numéro de page #71571
    bebarth
    Maître des clés

    Sinon, sans supprimer ce bouton via un script d’ouverture de page, tu peux le cacher après avoir exécuté l’action de suppression de la dernière page…

    @+
    😎

    en réponse à : Numéro de page #71569
    bebarth
    Maître des clés

    bonjour,
    Attention, si on supprime la dernière page à l’aide du bouton de l’avant dernière, cette page devient la dernière et n’a donc plus besoin de ce bouton ! Il faudrait donc penser à le supprimer mais on ne peut le faire directement avec le script qui supprime la dernière page (on ne peut pas supprimer un bouton déclencheur d’un script). Je pense donc à un script d’ouverture de page qui testerait si c’est la dernière page et qu’elle contient un bouton pour la suppression de la page suivante…

    @+
    😎

    en réponse à : Zone de texte en Champs texte #71558
    bebarth
    Maître des clés

    Compris, merci !

    @+
    😎

    en réponse à : Zone de texte en Champs texte #71555
    bebarth
    Maître des clés

    bonjour Merlin,
    C’est une fonction tellement peu connue que je ne la connais pas du tout et je n’ai pas compris à quoi elle sert !
    Une fois que tu as « Copier avec formatage » tu fais quoi ?
    J’ai essayé de coller dans un champ texte, mais je ne vois pas de formatage…

    @+
    😎

    en réponse à : Remplissage automatique. #71552
    bebarth
    Maître des clés

    bonjour,
    En fait, il faut provoquer une erreur pour que le message s’affiche. Pour la deuxième boucle il faut donc mettre i<=32 (au lieu de i<32).
    Le mieux aurait été de n’avoir qu’une seule boucle !

    Par contre, je n’avais pas vérifier mais lorsqu’on valide plusieurs fois la fenêtre de réponse s’affiche plusieurs fois ! Je ne vois pas pourquoi… J’essaie de regarder dans la journée.

    @+
    😎

    en réponse à : Remplissage automatique. #71541
    bebarth
    Maître des clés

    bonjour,
    Voici, je te laisse étudier…
    https://we.tl/t-j2iIATXTHI

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 9 mois par bebarth.
    en réponse à : Ma formule math.tan ne passe pas #71536
    bebarth
    Maître des clés

    bonjour,
    Voici pour l’ensemble des calculs.
    Je ne garantis pas le nom des polygones de plus de 12 côtés, je les ai trouvé sur internet !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Ma formule math.tan ne passe pas #71533
    bebarth
    Maître des clés

    Malheureusement la notation simplifiée est limitée aux 4 opérations…

    Notation simplifiée : astuces


    Pour des calculs plus complexes if faudra utiliser le JavaScript !

    @+
    😎

    en réponse à : Ma formule math.tan ne passe pas #71529
    bebarth
    Maître des clés

    bonjour,

    1. Il ne faut pas écrire le script en « Notation simplifiée du champ » mais en « Script de calcul personnalisé ».
    2. Dans ton script la valeur du champ que tu veux calculer (event.value) ne peut pas être en fonction de cette même valeur… (ici, this.getField(« TanPyPo »).value c’est la même chose que event.value)

    J’espère avoir été clair car pas facile à expliquer !!!
    Si j’ai un moment demain, je regarde l’ensemble du calcul…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Info-bulles #71523
    bebarth
    Maître des clés

    bonjour,
    Si j’ai bien compris ce que tu veux faire, il faut écrire :
    this.getField("nomDuChamp").userName="0 : toto\r1 : tata\r2 : titi";

    @+
    😎

    en réponse à : Comment mettre en place la formule angle correctement #71519
    bebarth
    Maître des clés

    bonjour,
    …moi, au contraire, j’adorais ça !

    var piRad=Math.atan(this.getField("EuclideH").value/this.getField("Euclidep").value);
    event.value=piRad.toFixed(2)+" rad ou "+(piRad*180/Math.PI).toFixed(2)+"°";

    var piRad=Math.atan(this.getField("EuclideH").value/this.getField("Euclideq").value);
    event.value=piRad.toFixed(2)+" rad ou "+(piRad*180/Math.PI).toFixed(2)+"°";

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71511
    bebarth
    Maître des clés

    bonjour,
    Voici ce que j’ai fait avec une fonction en script de document. Tous les champs sont au format yyyy-mm-dd.
    On indique date1 qui se reproduit automatiquement dans date2 (champ texte que l’on peut modifier). Le menu déroulant date3 reprend ces 2 dates (si différente car les doublons sont supprimés) avec possibilité d’ajouter une nouvelle date.
    Idem pour le champ avec contour rouge.

    // Fonction qui supprime les doublons d'une table
    function sansDoublons(uneTable) {
    return uneTable.filter((valeur, indice) => uneTable.indexOf(valeur)===indice);
    }

    // Script de calcul date2 permet de modifier la valeur indiquée par date1
    if (event.source && event.source.name=="date1") event.value=this.getField("date1").value;

    // Script de validation date2
    var laTable=[this.getField("date1").value,event.value];
    this.getField("date3").setItems(sansDoublons(laTable).sort());

    // Script de validation date3
    var laTable=[this.getField("date1").value,this.getField("date2").value,event.value];
    this.getField("rencontre_date_BB").setItems(sansDoublons(laTable).sort());

    Je n’ai pas vu l’utilité d’ajouter un élément vierge pour les menus déroulants !
    J’espère avoir répondu à ta demande.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71510
    bebarth
    Maître des clés

    Je regarde demain…

    @+
    😎

    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71508
    bebarth
    Maître des clés

    Je crois avoir mis le doight dessus en ajoutant: var that = e.options[e.selectedIndex];

    Très bien, si tu t’en es sorti…

    @+
    😎

    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71504
    bebarth
    Maître des clés

    bonjour,
    Je ne suis pas certain de comprendre le process !
    A chaque fois que tu entres une nouvelle Date1 (champ texte) elle s’ajoute (sans vérifier si elle existe déjà) dans le menu déroulant Date2 et lorsque tu sélectionnes une Date2, Date1 et Date2 s’ajoutent au menu déroulant Date3 (?????? ça me parait étrange).
    Que doit-il y avoir dans le menu déroulant avec le cadre rouge ????

    Peux-tu expliquer exactement !

    @+
    😎

    en réponse à : Comment faire le calcul d’un nombre en exposant #71502
    bebarth
    Maître des clés

    bonjour,
    Les écritures des opérations JavaScript sont décrites ici :
    https://www.w3schools.com/jsref/jsref_obj_math.asp

    Pour la racine carrée c’est donc Math.sqrt(x) et voici pour l’exemple posté précédemment.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71489
    bebarth
    Maître des clés

    bonjour,

    le VAR n’imprime pas dans la case / disparait

    En fait, je ne comprends pas ce que cela signifie… Pourrais-tu partager un fichier ?

    @+
    😎

    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71483
    bebarth
    Maître des clés

    bonjour,
    Dans l’onglet « Options » des propriétés du menu déroulant tu sélectionnes « Valider la valeur sélectionnée immédiatement ». Ça devrait fonctionner !

    @+
    😎

    en réponse à : JavaScript / oLB imprime frequement un « 1 », par erreur #71480
    bebarth
    Maître des clés

    bonjour,
    dans la méthode « insertItemAt » le deuxième paramètre indique la valeur d’exportation. Je ne comprends pas « Bref, pourquoi le chiffre 1 imprime dans ma selection… » mais il y a bien un 1 en valeur d’exportation.

    D’après ce que je comprends, il serait préférable d’écrire les valeurs dans une table plutôt que de les insérer une après l’autre :
    var lesDates=[[],[this.getField(" Appelrecu_date ").value,1],[this.getField(" 1.SurvenuEntre_Date ").value,2],[this.getField(" SurvenuEntre_Date2 ").value,3]];
    this.getField(" redaction_date ").setItems(lesDates);

    …et une petite remarque : ne pas mettre d’espaces dans le nom des champs.

    @+
    😎

    en réponse à : Problème formule de calcul #71458
    bebarth
    Maître des clés

    bonjour,

    Je ne peux pas regarder ton fichier immédiatement mais regarde l’ordre de calcul des champs.

    @+
    😎

    en réponse à : Remplir champ texte avec checkboxes #71451
    bebarth
    Maître des clés

    bonjour,
    Voici comment écrire d’après ton exemple :

    var T = "";
    for (var i=1; i<=9; i++) {
    if (this.getField("Case."+i).value != "Off") {
    T= T + this.getField("Case."+i).value;
    if (i!=9)
    T = T + ", ";
    }
    }
    if (T=="") event.value= "Rien";
    else event.value= "Synthèse : " + T;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Lien bouton radio et liste #71445
    bebarth
    Maître des clés

    As-tu vu ma dernière réponse ?

    En ce qui me concerne il faudra attendre le 30 août pour une réponse plus approfondie… mais je ne sais pas s’il est très judicieux d’avoir un menu déroulant avec 80 éléments !

    @+
    😎

    en réponse à : Lien bouton radio et liste #71440
    bebarth
    Maître des clés

    bonjour,

    C’est une bonne chose de mettre le code en script de validation, mais il faut dans ce cas le mettre pour « Champ2 » et non pour « champ3″…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Lien bouton radio et liste #71431
    bebarth
    Maître des clés

    bonjour,

    Ne serait-il pas judicieux d’envisager de placer toutes ces données dans une feuille de tableur (Excel par exemple) au format csv et de joindre le fichier au formulaire ?

    @+
    😎

    en réponse à : Lien bouton radio et liste #71428
    bebarth
    Maître des clés

    bonjour,
    Voici une possibilité, en script de calcul du champ3 :
    if (this.getField("Champ2").value!="") {
    this.getField("Metiers").value=this.getField("Champ2").value;
    var liste=["- Choisissez -"];
    for (var i=0; i<3; i++) liste.push(this.getField("Champ2").value+" - Élément "+(i+1));

    } else {
    var liste=[""];
    this.getField("Metiers").value="Off";
    }
    event.target.setItems(liste);

    Attention à ne pas mettre de caractères accentués dans le nom des champs !

    Désolé pour les délais de réponse, mais je suis « ENCORE » (et toujours) en vacances jusqu’à fin août !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Calcul racine carrée de 5,65 #71423
    bebarth
    Maître des clés

    …ce n’est pas ce qui était demandé !

    Pour trouver ta valeur il faut écrire :

    event.value=Math.sqrt(this.getField("A14").value)*5.65;

    @+
    😎

    en réponse à : Calcul racine carrée de 5,65 #71419
    bebarth
    Maître des clés

    La racine carrée de 5.65 s’écrit : Math.sqrt(5.65)
    Donc ton script doit être :
    event.value=this.getField("A14").value*Math.sqrt(5.65);

    J’ai fait pas mal de cours de « Résistance des matériaux » il y a très longtemps lorsque j’étais étudiant, et je ne reconnais pas cette formule… Certainement ai-je oublié !!! A quoi correspondent S0 et le coefficient 5,65 ???

    @+
    😎

    en réponse à : Calcul racine carrée de 5,65 #71414
    bebarth
    Maître des clés

    bonjour,
    Vu que DJCK_014 et DJCK_015 sont identiques (DJCK_007/2), j’ai un peu modifié ta formule :
    event.value=this.getField("DJCK_007").value/2*Math.sqrt(Math.PI)*5.65;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Calcul racine carrée de 5,65 #71410
    bebarth
    Maître des clés

    S0 racine carre *5,65

    ??? ça donne pas 41.31 !!!

    @+
    😎

    en réponse à : Calcul racine carrée de 5,65 #71409
    bebarth
    Maître des clés

    Désolé, j’avais mal lu la question. Pour trouver la racine de 5.65 il faut utiliser Math.sqrt() :
    https://www.w3schools.com/jsref/jsref_pow.asp
    Donc : Math.sqrt(5.65)

    @+
    😎

    en réponse à : Modification de commande #71403
    bebarth
    Maître des clés

    OK, il faut donc un script de format personnalisé où tu inverses les lignes car si tu rajoutes l’unité, event.value n’est plus un nombre !

    if (event.value!="") {
    event.target.textColor = event.value > 1400 ? color.red : color.black;
    event.value=Number(event.value).toFixed(0)+" N";
    }

    @+
    😎

    en réponse à : Modification de commande #71400
    bebarth
    Maître des clés

    bonjour,
    Qu’est-ce que « N » ??? Il faut que ce soit un chiffre ou un nombre…
    Ça fonctionne si tu écris en script de validation :
    event.value=Number(Number(event.value).toFixed(0))+2;
    event.target.textColor = event.value > 1400 ? color.red : color.black;
    Si tu écris ce script en script de calcul le nombre sera incrémenté après chaque évènnement…

    @+
    😎

    en réponse à : Calcul racine carrée de 5,65 #71399
    bebarth
    Maître des clés

    bonjour,
    Il faut utiliser Math.pow() :
    https://www.w3schools.com/jsref/jsref_pow.asp
    Donc : Math.pow(xxxx,5.65)

    @+
    😎

    • Cette réponse a été modifiée le il y a 3 années et 10 mois par bebarth.
    en réponse à : Calculs conditionnels sur bouton radio #71393
    bebarth
    Maître des clés

    bonjour,
    Il faut régler les valeurs d’exportation de chaque groupe de boutons radios 1 pour vrai et 0 pour faux. Ensuite un script de calcul pour chaque champ Note (ici pour le numéro 1) :
    if (this.getField("Group1").value!="Off") event.value=this.getField("Group1").value;
    else event.value="";

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Enregistrer un fichier en le nommant de la valeur d’un champ #71388
    bebarth
    Maître des clés

    bonjour,
    Voici un script que tu ne pourras utiliser que depuis la console ou avec une action (en pièce jointe).
    var f=this.getField("nomChamp");
    if (f.value) {
    this.saveAs({
    cPath: this.path.replace(/.pdf$/i," ("+f.value+").pdf"),
    bCopy: true,
    bPromptToOverwrite: true,
    });
    this.resetForm();
    this.dirty=false;
    } else app.alert("Veuillez remplir le champ \""+f.name+"\".",3);

    Il n’est pas possible d’enregistrer un fichier à partir d’un bouton, à moins d’utiliser un script d’application (à installer sur chaque ordinateur désirant l’exécuter). Dis-moi si ça t’intéresse !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Duplication de plusieurs pages exemples #71386
    bebarth
    Maître des clés

    bonjour,
    Regarde la partie « Template » de l’API Reference :
    https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FTemplate.htm
    Les propriétés et méthodes :
    https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FTemplate_properties.htm
    https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FTemplate_methods.htm

    Il y a plusieurs possibilités pour dupliquer et renommer les champs, mais je suppose que si tu veux dupliquer une page modèle, c’est que la nouvelle ne sera pas exactement comme l’originale, sinon je ne vois pas à quoi ça sert…

    @+
    😎

    en réponse à : Sélection d’image #71383
    bebarth
    Maître des clés

    bonjour,
    Voici ! Je te laisse étudier…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Sélection d’image #71377
    bebarth
    Maître des clés

    Désolé ! En vacances sans wifi…

    @+
    😎

    en réponse à : Duplication de plusieurs pages exemples #71315
    bebarth
    Maître des clés

    bonjour,
    Voici le script réécrit car il est conseillé de ne plus utiliser la méthode « spawnPageFromTemplate ».
    Du coup, j’ai mis les scripts en fonctions dans un script de document !

    Techniquement est-il possible de dupliqué via script les pages modèles

    Pour cela il suffit de dupliquer une page modèle et de lui appliquer la méthode « createTemplate ».

    @+
    😎

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

    bonjour,

    …mais comment je fais pour voir ce qui est inscrit dedans…

    Tu peux le lire avec un éditeur JavaScript si tu en as un, sinon tu changes l’extension .js par .txt et tu l’ouvres avec un éditeur de texte ! Ça Fonctionne peut-être même directement…

    Sinon, voici le script :
    if (app.formsVersion>=8) {
    importIcon_boucledore95=app.trustedFunction(function(nomPhoto) {
    app.beginPriv();
    this.importIcon("laPhoto",nomPhoto);
    app.endPriv();
    })
    }

    @+
    😎

    en réponse à : Tampon dateur dynamique choix date #71304
    bebarth
    Maître des clés

    Il y a quelques a années j’avais traduit en français l’article de Thom Parker :
    https://acrobatusers.com/tutorials/print/dynamic_stamp_secrets/
    Je l’ai remis en page il n’y a pas très longtemps si ça intéresse quelqu’un, je partage !

    @+
    😎

    en réponse à : Tampon dateur dynamique choix date #71296
    bebarth
    Maître des clés

    bonjour,
    Pas besoin de le créer puisque Acrobat l’a fait pour toi ! Mais le nom a déjà été modifié vu que Acrobat crée le modèle de page avec un symbole #…
    Pour modifier l’intitulé, -> Outil « Organiser les pages » -> « Autre » -> « Modèles de page ». Puis tu rajoutes un # au début du nom et « Ajouter ». Acrobat va te demander si tu veux modifier le nom, tu réponds Oui.
    Ensuite, il faut utiliser « #gFArg3CUa7QIU6ELF48e51 » dans ton script.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Tampon dateur dynamique choix date #71293
    bebarth
    Maître des clés


    Après ça marche !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Tampon dateur dynamique choix date #71290
    bebarth
    Maître des clés

    bonjour,
    Il faut ajouter un symbole # avant la référence de ta page modèle, et c’est cette référence qu’il faut indiquer dans ton script.

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

    Voilà !
    Tu places le fichier « importIcon_boucledore95.js » dans le répertoire JavaScript d’Acrobat. Tu peux évidemment renommer ce fichier si tu le souhaites.
    Pour cet exemple, les photos (uniquement des fichiers .pdf) doivent être dans le même répertoire que le fichier « Identité & Photo_BB.pdf », mais on peut en indiquer un autre du moment que tu as les droits d’accès.

    Tu me dis…

    @+
    😎

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

    bonjour,
    Je n’ai pas le temps de répondre plus en détail pour l’instant, mais il faudrait utiliser la méthode « importIcon » puis utiliser l’icône pour dans un bouton ou champ image.

    Malheureusement, pour être utilisée autrement qu’avec la console ou une action, cette méthode nécessite des privilèges, il faut donc créer n script d’application…

    @+
    😎

    en réponse à : Sélection d’image #71280
    bebarth
    Maître des clés

    bonjour,
    La fonction teste (comme la fonction Liste) se trouve en script de document.
    Si dans ton document tu n’as pas recopié les scripts de document ça ne pourra pas fonctionner !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Tampon dateur dynamique choix date #71268
    bebarth
    Maître des clés

    bonjour,
    Exact ! Il faut tester ton script avec ton fichier tampon (dans le répertoire Stamps). La propriété forReal est vraie (true) lorsqu’un tampon (du fichier qui contient le ou les tampons) est placé sur le document et faux (false) à tout autre moment. event.source.stampName est la référence (générée par Acrobat) incluse dans le nom de la page modèle dans le fichier qui contient le ou les tampons. Cette référence (symbole # inclus) peut être modifiée du moment qu’elle l’est également dans le script.
    En cas de souci, peux-tu partager ton tampon ?

    @+
    😎

    • Cette réponse a été modifiée le il y a 4 années par bebarth.
    en réponse à : A la recherche de bugs #71261
    bebarth
    Maître des clés

    bonjour,
    …sauf que ton répertoire est protégé !
    Il faut un nom d’utilisateur et un mot de passe.

    @++
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Duplication de plusieurs pages exemples #71256
    bebarth
    Maître des clés

    bonjour,
    Du moment que les pages à dupliquer sont des pages modèles, on peut le faire avec autant de modèles que l’on veut !
    Voici un exemple que j’avais fait il y a quelques années… (pour dire que le script peut certainement être amélioré).

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action menu déroulant / signature #71253
    bebarth
    Maître des clés

    bonjour,
    Les factures : si, mais la facturation, je crois que c’est carrément interdit !

    PDF INVOICE

    @+
    😎

    en réponse à : Renommer plusieurs champs de formulaire avec JavaScript #71248
    bebarth
    Maître des clés

    Voici un exemple où j’ai indiqué l’ordre de tabulation souhaité en info-bulle de chaque champ.
    Après avoir lancé le script, les info-bulles sont effacées et j’ai indiqué pour les champs texte uniquement le numéro de tabulation, mais ça c’est juste pour montrer que ça a fonctionné !

    Le script à lancer de la console ou à mettre en action :

    var nomIncr="BB";
    var nomChamps=[];
    for (var i=0; i<this.numFields; i++) nomChamps.push([getNthFieldName(i),this.getField(getNthFieldName(i)).userName]);
    nomChamps.sort(function(a, b){return a[1]-b[1]});
    for (var i=0; i<nomChamps.length; i++) {
    var leNom=nomChamps[0];
    var nouveauNom=nomIncr+"_";
    if (i<10) nouveauNom+="00"+i;
    else if (i<100) nouveauNom+="0"+i;
    else nouveauNom+=i;
    g=this.getField(leNom);
    var leType=g.type;
    var laPage=String(g.page);
    var lesPages=laPage.split(",");
    for (var p=0; p<lesPages.length; p++) {
    var cettePage=Number(lesPages[p]);
    if (lesPages.length>1) {
    var nomChamp=leNom+"."+p;
    } else {
    var nomChamp=leNom;
    }
    g=this.getField(nomChamp);
    var lesCoord=g.rect;
    var f=this.addField(nouveauNom, leType, cettePage, lesCoord);
    f=this.getField(nouveauNom);
    for (var j in g) {
    try {
    if (typeof g[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") {
    f[j]=g[j];
    }
    } catch(e) {}
    }
    f.userName="";
    if (f.type="text") f.value="Tabulation n° "+nomChamps[1];
    }
    this.removeField(leNom);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Action menu déroulant / signature #71245
    bebarth
    Maître des clés

    bonjour,

    Comment fait-on pour les forcer à utiliser un logiciel spécifique ?

    Forcer l’utilisation d’un PDF avec Acrobat Reader

    Et pour former ton numéro, voici un exemple, et le script de touches personnalisé du menu déroulant :

    if (!event.willCommit) {
    if (event.changeEx!=0) this.getField("noFacture").value=util.printd("ddmmyy",new Date())+event.changeEx;
    else this.getField("noFacture").value="";
    }

    …et je laisse Merlin commenter au sujet des factures réalisées avec Acrobat !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Appliquer un script sur 16 champs sur 22 #71242
    bebarth
    Maître des clés

    bonjour,
    Il faut définir une boucle de 1 à 16 pour ta variable n, mais ici aussi tu aurais dû avoir une boucle de 1 à 22….

    if (event.target.value == 1) {
    for (var n=1; n<=16; n++) {
    this.resetForm(['Normal'+n,'M'+n]);
    this.getField("Normal"+n).display = display.visible;
    this.getField("Normal"+n).value = "0" ;
    this.getField("Normal"+n).required = false;

    this.getField("Uneval"+n).value = "!" ;
    this.getField("V"+n).value = "!" ;
    this.getField("Stent"+n).value = "!" ;
    this.getField("NotPresent"+n).display = display.hidden;
    this.getField("P"+n).display = display.hidden;
    this.getField("S"+n).display = display.hidden;
    this.getField("M"+n).display = display.hidden;
    this.getField("Uneval"+n).display = display.visible;
    this.getField("V"+n).display = display.visible;
    this.getField("Stent"+n).display = display.visible;
    }
    } else {
    for (var n=1; n<=16; n++) {
    this.getField("Normal"+n).value = "!" ;
    this.getField("P"+n).value = "!" ;
    this.getField("S"+n).value = "!" ;
    this.getField("NotPresent"+n).value = "!" ;
    this.getField("Normal"+n).required = true;
    this.getField("NotPresent"+n).required = true;
    this.getField("P"+n).required = true;
    this.getField("S"+n).required = true;
    this.getField("NotPresent"+n).display = display.visible;
    this.getField("P"+n).display = display.visible;
    this.getField("S"+n).display = display.visible;
    this.getField("M"+n).display = display.visible;
    }
    }

    @+
    😎

Affichage de 99 réponses de 595 à 693 (sur un total de 3,389)