Donnez vie à vos documents numériques !
 

bebarth

Toutes mes réponses sur les forums

Affichage de 99 réponses de 298 à 396 (sur un total de 3,343)
  • Auteur
    Réponses
  • en réponse à : Affichage aléatoire #73740
    bebarth
    Maître des clés

    Peux tu m’expliquer les quelques lignes qui permettent d’afficher une question aléatoirement mais avec une plus grande fréquence pour les réponses erronées.

    Lorsque l’on crée le menu déroulant depuis la table “reponses”, la valeur d’exportation de chaque élément est mise à 0. Cette valeur représente le nombre de réponses exactes pour cette question et est incrémentée lorsque la réponse est correcte.
    var moyenne=0;
    for (var i=1; i<nb; i++) moyenne+=reponses[1];
    moyenne/=(reponses.length-1);
    signifie que l’on fait la moyenne de toutes ces valeurs d’exportation, et “for (var i=1…” et non i=0 car on ne tient pas compte de la première ligne “-/-“. Idem pour “…length-1);
    var aleatoire=Math.floor(Math.random()*nb);
    Bon ben ça c’est un nombre aléatoire sur le nombre d’éléments de la table “reponses”.
    while (reponses[aleatoire][1]>moyenne || laQuestion=="-") {
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion=lesReponses[aleatoire][0];
    var laReponse=lesReponses[aleatoire][1];
    }
    …et ça c’est une boucle. Tant que le deuxième élément ([1]) de l’élément à la position [aleatoire] de la table “reponses” est supérieure à la moyenne, ou si laQuestion==”-“, on recommence le tirage d’un nombre aléatoire.
    L’explication est un peu compliquée je suppose… J’espère que tu as compris !

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 3 mois par bebarth.
    en réponse à : Affichage aléatoire #73739
    bebarth
    Maître des clés

    bonjour,

    Je viens de constater qu’il y a encore des doublons pour les réponses sous forme de liste.

    J’ai essayé mais je ne trouve pas de doublons !

    De plus lors de la création de la liste par ordre alphanumérique, est il possible d’avoir le 10 après le 9 et non entre le 1 et le 2 ou c’est trop complexe?

    C’est possible mais ça va compliquer le script. Ici les questions (ex. : “3×10”) sont des chaines de caractères. Pour les trier comme tu le souhaite il faudrait transformer chaque chaine en table coupée au “x” (ex. : [3,10]) puis trier sur le deuxième élément de la table et finir par retransformer la table en chaine de caractères .toString() et remplacer la virgule par un “x”.
    Ce n’est pas très compliqué, mais le script sera différent si tu veux changer les questions par des soustractions, divisions ou additions…

    @+
    😎

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

    bonjour,

    Pour la liste de réponse, est il possible d’éliminer les doublons dans la liste de réponse et de classer les éléments de la liste par ordre alphanumérique ?

    J’avais écris une fonction il y a quelques années… Je l’ai donc adaptée pour ton script !
    Dans l’exemple j’ai ajouté plusieurs doublons pour montrer ce que ça donne.

    Pour les réponses type Champ Texte, comme la vérification est en action de frappe, si la réponse saisie contient plusieurs caractères, cela va afficher le message d’erreur dès la frappe du 1er caractère.

    Vu que pour le type de champ Liste le script est en script de touches personnalisé, il n’est exécuté que lorsque l’évènement vient de ce champ liste. Si On utilise un champ Texte pour indiquer la réponse, il faut d’abord vérifier que l’évènement vient de ce champ (cf. le script de calcul “Rep”).

    Dernier souci, j’ai remarqué que lorsque je génère les questions, cela fonctionne seulement si je sauvegarde, ferme puis ouvre le document.

    Ça c’est normal vu que l’initialisation du champ se fait avec le bouton démarrer par “if (!reponses.length)” et qu’en script de document on a “var reponses=[];”
    Avec ton bouton “generateur” on peut maintenant réinitialiser la liste.

    Pour le bonton “vérifier” j’ai retire le message “Erreur…” car il est déjà affiché directement si la réponse n’est pas correcte que ce soit via une liste ou un champ texte.

    Voici les scripts :

    // Script de document
    var reponses=[];
    var nbQuestions=0;
    var nbReponses=0;
    this.getField(“Reponse”).setItems([“-“]);
    this.getField(“Question”).value=””;
    this.getField(“Score”).value=””;
    this.getField(“Score”).value=””;

    // Script de calcul “Démarrer”
    if (!reponses.length) {
    var lesReponses=this.getField(“entreesListe”).value.split(“\r”);
    function triSansDoublons(uneTable) {
    return uneTable.sort().filter(function(valeur, indice, cetteTable) {
    return !indice || valeur!=cetteTable[indice-1];
    });
    }
    var lesReponses=triSansDoublons(lesReponses);
    this.getField(“entreesListe”).value=lesReponses.toString().replace(/[,]/g,”\r”);
    var nb=lesReponses.length;
    var reponses=[];
    for (var i=0; i<nb; i++) {
    lesReponses=lesReponses.split(“\/”);
    reponses.push([lesReponses[1],0]);
    }
    }
    var moyenne=0;
    for (var i=1; i<nb; i++) moyenne+=reponses[1];
    moyenne/=(reponses.length-1);
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion=”-“;
    while (reponses[aleatoire][1]>moyenne || laQuestion==”-“) {
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion=lesReponses[aleatoire][0];
    var laReponse=lesReponses[aleatoire][1];
    }
    this.getField(“Reponse”).setItems(reponses);
    this.getField(“Question”).value=laQuestion;
    this.getField(“Score”).value=””;

    // Script de touches personnalisé “Reponse”
    if (!event.willCommit) {
    nbQuestions++;
    if (event.change!=laReponse) app.alert(“Erreur !!!\rLa bonne réponse est : “+laReponse,3);
    else {
    reponses[aleatoire][1]=Number(event.changeEx)+1;
    this.getField(“Reponse”).setItems(reponses);
    nbReponses++;
    }
    }

    // Script de calcul “Rep”
    if (event.source && event.source.name==event.target.name) {
    nbQuestions++;
    if (event.value!=laReponse) app.alert(“Erreur !!!\rLa bonne réponse est : “+laReponse,3);
    else {
    reponses[aleatoire][1]=reponses[aleatoire][1]+1;
    nbReponses++;
    }
    }

    // Script de calcul “vérifier”
    if (reponses.length) this.getField(“Score”).value=” • Nombre de bonnes réponses : ” +nbReponses+”\r”+” • Nombre d’erreurs : ” +(nbQuestions-nbReponses)+”\r”+” • Nombre de questions : ” +nbQuestions+”\r”+” • Taux de réussite : ” +(Math.round((100*nbReponses/nbQuestions) * 100) / 100).toString().replace(/[.]/,”,”)+” %”;

    // Script de calcul “geberateur”
    var lesReponses=this.getField(“entreesListe”).value.split(“\r”);
    function triSansDoublons(uneTable) {
    return uneTable.sort().filter(function(valeur, indice, cetteTable) {
    return !indice || valeur!=cetteTable[indice-1];
    });
    }
    var lesReponses=triSansDoublons(lesReponses);
    this.getField(“entreesListe”).value=lesReponses.toString().replace(/[,]/g,”\r”);
    var nb=lesReponses.length;
    var reponses=[];
    for (var i=0; i<nb; i++) {
    lesReponses=lesReponses.split(“\/”);
    reponses.push([lesReponses[1],0]);
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule trigonométrie #73723
    bebarth
    Maître des clés

    bonjour,
    Concernant ton dernier fichier, j’ai l’impression de répéter toujours la même chose !

    1. Tu parles de trigonométrie circulaire (cos) et dans ta formule tu utilises la trigonométrie hyperbolique (cos).
    2. Si tu recherche le cosinus (cos) il ne faut pas utiliser l’argument (acos).
    3. Les angles doivent être indiqués en radians et non en degrés.
    4. La syntaxe JavaScript n’est pas correct pour le script de calcul personnalisé.

    Il ne faut donc pas écrire :
    Text1/Math.acosh(Text2)
    mais :
    event.value=this.getField("Text1").value/Math.cos(this.getField("Text2").value*Math.PI/180);

    Cf. fichier joint.

    @+
    😎

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

    bonjour,
    Je vois ! En fait j’ai rajouté le script de document à la dernière minute avant d’envoyer le fichier et sans le tester… Erreur de débutant lol
    Du coup, la table “reponses” est déclarée à l’ouverture du document et if (reponses==null) n’est plus vrai.
    J’ai donc modifié légèrement les scripts :

    // Script de document
    var reponses=[];
    var nbQuestions=0;
    var nbReponses=0;
    this.getField("Reponse").setItems(["-"]);
    this.getField("Question").value="";
    this.getField("Score").value="";

    // Script de calcul "Démarrer"
    if (!reponses.length) {
    var lesReponses=this.getField("entreesListe").value.split("\r");
    var nb=lesReponses.length;
    var reponses=[];
    for (var i=0; i<nb; i++) {
    lesReponses=lesReponses.split("\/");
    reponses.push([lesReponses[1],0]);
    }
    }
    var moyenne=0;
    for (var i=1; i<nb; i++) moyenne+=reponses[1];
    moyenne/=(reponses.length-1);
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion="-";
    while (reponses[aleatoire][1]>moyenne || laQuestion=="-") {
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion=lesReponses[aleatoire][0];
    var laReponse=lesReponses[aleatoire][1];
    }
    this.getField("Reponse").setItems(reponses);
    this.getField("Question").value=laQuestion;

    // Script de touches personnalisé "Reponse"
    if (!event.willCommit) {
    nbQuestions++;
    if (event.change!=laReponse) app.alert("Erreur !!!\rLa bonne réponse est : "+laReponse,3);
    else {
    reponses[aleatoire][1]=Number(event.changeEx)+1;
    this.getField("Reponse").setItems(reponses);
    nbReponses++;
    }
    }

    // Script de calcul "vérifier"
    if (reponses.length) this.getField("Score").value=nbReponses+"/"+nbQuestions;

    … et ce coup ci c’est testé !

    Il y a juste à voir comment se compte le nombre de question. Dans mon script il est incrémenté par la réponse (correcte ou mauvaise). Si l’utilisateur clique plusieurs fois sur “Démarrer” sans répondre, le nombre de question n’augmente pas.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule trigonométrie #73718
    bebarth
    Maître des clés

    bonsoir,
    Désolé mais je n’ai pas encore eu le temps… En fait je pensais reprendre depuis le début car ton fichier possède beaucoup de champs répétés. Lorsqu’on a le nez dedans on les connais par coeur, mais quand on reprend des scripts et/ou formules dont on est pas l’auteur c’est un peu plus compliqué à se mettre dedans.
    Tous ça pour dire que ça va me prendre un peu de temps que je n’ai pas ces jours-ci.

    Je vais quand même regarder vite fait juste pour ta formule !

    @+
    😎

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

    bonsoir,
    Voici les différents script pour rester dans le même principe.

    // Script de document
    var reponses=[];
    var nbQuestions=0;
    var nbReponses=0;
    this.getField("Reponse").setItems(["-"]);
    this.getField("Question").value="";
    this.getField("Score").value="";

    // Script de calcul "Démarrer"
    if (reponses==null) {
    var lesReponses=this.getField("entreesListe").value.split("\r");
    var nb=lesReponses.length;
    var reponses=[];
    for (var i=0; i<nb; i++) {
    lesReponses=lesReponses.split("\/");
    reponses.push([lesReponses[1],0]);
    }
    }
    var moyenne=0;
    for (var i=1; i<nb; i++) moyenne+=reponses[1];
    moyenne/=(reponses.length-1);
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion="-";
    while (reponses[aleatoire][1]>moyenne || laQuestion=="-") {
    var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion=lesReponses[aleatoire][0];
    var laReponse=lesReponses[aleatoire][1];
    }
    this.getField("Reponse").setItems(reponses);
    this.getField("Question").value=laQuestion;

    // Script de touches personnalisé "Reponse"
    if (!event.willCommit) {
    nbQuestions++;
    if (event.change!=laReponse) app.alert("Erreur !!!\rLa bonne réponse est : "+laReponse,3);
    else {
    reponses[aleatoire][1]=Number(event.changeEx)+1;
    this.getField("Reponse").setItems(reponses);
    nbReponses++;
    }
    }

    // Script de calcul "vérifier"
    if (reponses!=null) this.getField("Score").value=nbReponses+"/"+nbQuestions;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Attribuer des valeurs dans une liste déroulante #73708
    bebarth
    Maître des clés

    bonjour,
    Il faut écrire :
    listeDeroulante.setItems([["tata",1], ["titi",2],["toto",3]]);

    @+
    😎

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

    bonjour,
    Voici ce que je te propose.
    On met les questions et réponses dans un champ liste ce qui permet de n’avoir qu’un champ au lieu de 2. On pourrait également définir  une table dans le script avec les questions et les réponses.

    Donc, pour répondre aux 2 points indiqués en rouge :
    // Script de calcul "Button1"
    var f=this.getField("entreesListe");
    var nb=f.numItems;
    if (reponses==null) {
    var reponses=[];
    for (var i=0; i<nb; i++) reponses.push([f.getItemAt(i,true),0]);
    }
    var moyenne=0;
    for (var i=0; i<nb; i++) moyenne+=reponses[1]; moyenne/=reponses.length; var aleatoire=Math.floor(Math.random()*nb); while (reponses[aleatoire][1]>moyenne) var aleatoire=Math.floor(Math.random()*nb);
    var laQuestion=f.getItemAt(aleatoire,false);
    var laReponse=f.getItemAt(aleatoire,true);
    this.getField("Reponse").setItems(reponses);
    this.getField("Question").value=laQuestion;

    // Script de touches personnalisé "Reponse"
    if (!event.willCommit) {
    if (event.change!=laReponse) app.alert("Erreur !!!\rLa bonne réponse est : "+laReponse,3);
    else {
    reponses[aleatoire][1]=Number(event.changeEx)+1;
    this.getField("Reponse").setItems(reponses);
    }
    }

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 3 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule trigonométrie #73691
    bebarth
    Maître des clés

    … Erreur lors de la conversion radians en degrés ! Il faut écrire :

    event.value=Math.acos(this.getField("RESULLIGNBC").value)*180/Math.PI;

    @+
    😎

    en réponse à : Formule trigonométrie #73687
    bebarth
    Maître des clés

    bonjour,
    acosh est la fonction inverse cosinus hyperbolique qui d’ailleurs comme indiqué dans un autre post ne fonctionne pas !
    Dans ton cas if faut utiliser acos ! Si elle ne fonctionne pas, il doit y avoir une erreur… Y a-t-il un mesage dans la console ?

    @+
    😎

    en réponse à : Décocher automatiquement CASE #73683
    bebarth
    Maître des clés

    bonjour,
    Voici un script avec lequel il n’est pas possible de cocher la case si la somme était supérieure à 6000 une fois cette case cochée.
    var somme=this.getField("VT").value;
    var ind=event.target.name.substr(1);
    if (event.target.value!="Off") {
    if (somme+event.target.value<6000) {
    this.getField("VT").value+=event.target.value;
    this.getField("v"+ind).value=event.target.value;
    } else event.target.value="Off";
    } else {
    this.getField("VT").value-=event.target.exportValues;
    this.getField("v"+ind).value=0;
    }

    Dans le fichier exemple j’ai mis ce script en fonction pour éviter de le recopier 6 fois !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Améliorer la qualité du texte d’un PDF #73678
    bebarth
    Maître des clés

    Il n’y a pas de messagerie sur ce forum !
    Tu peux m’envoyer un mail à bebarth arobase sfr point fr et je te répondrai !

    @+
    😎

    en réponse à : Améliorer la qualité du texte d’un PDF #73675
    bebarth
    Maître des clés

    bonjour,
    Quel OS ? As-tu essayé en open source ?
    https://sourceforge.net/directory/ocr/

    Ci-joint le résultat avec un “pas gratuit” ! Il faut dire que le scan n’est pas terrible…

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule trigonométrie #73674
    bebarth
    Maître des clés

    bonjour,
    Il y a beaucoup d’erreurs de syntaxe. En JavaScript il ne suffit pas d’indiquer le nom du champ (comme on le fait en notation simplifiée) pour récupérer la valeur du champ. Il faut donc écrire par exemple :
    event.value=Math.acos(this.getField("cosABC").value)*(180/Math.PI);

    Il y a également encore des inverses hyperboliques (asinh) au lieu de circulaires (asin)…

    @+
    😎

    en réponse à : Formule trigonométrie #73667
    bebarth
    Maître des clés

    bonjour,
    J’ai voulu commencer à regarder ce soir, mais malheureusement je ne comprends pas les questions !

    Bonjour, Voila je suis presque arrivé a la fin, mais je n’arrive pas a mettre en relation 3 choses (si deja c’est possible !)
    • 1 la cote de 180° est ce que c’est possible de pouvoir calculer sur un triangle rectangle voir sur un triangle quelconque
    • 2 Je n’arrive pas a aller au bout du cadre bleu avec les inverses tan, cos ou sinus !
    • 3 je pense que c’est impossible de tout mettre en relation ?, si pas en deux groupes c’est possible ?

    1. Il est normalement possible de calculer tous les angles d’un triangle vu qu’on sait que la somme est de 180°.
      Pour rappel, la somme des angles d’un polygone est égale à (n-2)*180° (où n est le nombre de côtés).
    2. Je ne comprends pas ce qu’est “le cadre bleu” (et quel fichier).
    3. Normalement si ! Si on connait la formule générique pour calculer le côté opposé d’un triangle quelconque ABC : C<sup>2</sup>=A<sup>2</sup>+B<sup>2</sup>-2AB*cos(c)

    Merci de me donner les détails pour pouvoir continuer.

    @+
    😎

    en réponse à : Formule trigonométrie #73665
    bebarth
    Maître des clés

    bonjour,
    Bien ton fichier ! Je regarde la trigo, mais je ne te promets pas quand…

    @+
    😎

    en réponse à : Liste déroulante fille ne s’enregistre pas #73658
    bebarth
    Maître des clés

    bonjour,

    Bravo ! Je me doutais de quelque chose comme ça mais je n’ai pas trouvé où.

    C’est pourquoi je préfère personnellement mettre ce genre de script en script de touches personnalisé, pour éviter ce “problème”.

    @+
    😎

    en réponse à : Liste déroulante fille ne s’enregistre pas #73644
    bebarth
    Maître des clés

    bonjour,
    Dans ton script de format (qui est exécuté à l’ouverture du document), tu dois récupérer la valeur de ton champ “dependentDropdown” avant le reste du script avant de la rappeler en fin de script.

    var valeurDependentDropdown=this.getField("dependentDropdown").value;
    ...
    ...
    this.getField("dependentDropdown").value=valeurDependentDropdown;

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule trigonométrie #73643
    bebarth
    Maître des clés

    bonjour,

    …ainsi j’aurai pu mette ce que j’ai créé ou d’autre personne, la j’ai créé grâce a vous un aide mémoire auto pour tout les formule de mathématique que toute personne peux utiliser dans la vie de tout les jours !, mais c’est vrai que je l’ai orienté plus conception métallerie…

    Moi, tout m’intéresse et en plus je suis un ancien chaudronnier/soudeur ! Donc si tu veux partager via un lien, je regarderai.

    @+
    😎

    en réponse à : Copier presse papier #73637
    bebarth
    Maître des clés

    because,

    Non, ça ce n’est pas possible !

    @+
    😎

    en réponse à : Formule trigonométrie #73631
    bebarth
    Maître des clés

    En trigonométrie circulaire il faut juste écrire :
    event.value=Math.sin(this.getField("Text2").value*Math.PI/180);

    C’est le même principe pour toutes les fonctions circulaires sin, cos et tan et leurs fonctions inverses.

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Formule trigonométrie #73628
    bebarth
    Maître des clés

    Bonjour,

    je suis un peu perdu ! Parles-tu de fonctions trigonométriques circulaires ou hyperboliques.

    Les fonctions JavaSript Math. ne fonctionnent pas avec Acrobat JavaScript juste pour les fonctions hyperboliques mais fonctionnent correctement avec les fonctions circulaires. Dans ce cas, les angles doivent être indiqués en radians et non en degrés.

    …et que veux-tu dire dans tes fichiers par “et avec une seule fonction” ???

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    en réponse à : Formule trigonométrie #73615
    bebarth
    Maître des clés

    bonjour,
    Sur ton document la formule écrite est 52/cos(24) et non 52/acosh(24) !

    Si c’est effectivement l’argument cosinus hyperbolique que tu souhaite utiliser, je ne sais pas pourquoi (mais je vais essayer de me renseigner) Math.acosh() ne fonctionne pas en Acrobat JavaScript…
    Par contre on peut recréer cette fonction, et il faut donc écrire :
    function acosh(x) {
    return Math.log(x+Math.sqrt(x*x-1));
    }
    event.value=this.getField(“Text1”).value/acosh(this.getField(“Text2”).value);

    @+
    😎

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

    bonsoir,
    … c’était donc plutôt “demain soir” !!! Je suis un retraité overbooké comme tous les retraité ! 😉
    Voici les différents scripts pour ton document et le fichier en pièce jointe. Je te laisse les étudier et n’hésite pas à me demander ce que tu ne comprends pas. J’ai choisi de mettre les différents prix dans une table de tables “tarifs”. Je pense que l’option pour un fichier .csv en pièce jointe aurait été plus appropriée si on avait eu beaucoup plus de données.
    Tu vérifies si tout se passe comme tu le souhaites et tu me dis.

    // init en Script de document
    var tarif=[
    [ // N&B
    [10,15,25,35], // Carte d'affaire
    [15,25,35,45], // 1/4 de page
    [25,40,55,80], // 1/3 de page
    [40,70,100,130], // 1/2 page
    [100,150,200,250] // Pleine page
    ],
    [ // Quadri
    [20,30,40,60], // Carte d'affaire
    [30,50,70,90], // 1/4 de page
    [50,80,110,160], // 1/3 de page
    [80,140,200,275], // 1/2 page
    ],
    ];
    function options(indice) {
    for (var i=0; i<=4; i++) {
    if (i!=indice) this.getField("option."+i).value="Off";
    }
    }

    // totalPrix
    var couleur=-1;
    if (this.getField("couleur.gris").value!="Off") var couleur=0;
    else if (this.getField("couleur.couleur").value!="Off") var couleur=1;
    var format=-1;
    for (var i=0; i<=4; i++) {
    if (this.getField("option."+i).value!="Off") {
    var format=i;
    break;
    }
    }
    var nb=0;
    for (var i=0; i<=3; i++) {
    if (this.getField("mois."+i).value!="Off") nb++;
    }
    this.getField("total.parutions").value=nb;
    if (couleur>-1 && format>-1 && nb) event.value=tarif[couleur][format][nb-1];
    else event.value=0;
    if (this.getField("Mois").value!="Off") event.value=Number(event.value)+this.getField("Mois").value*25;
    if (event.value==0) event.value="";

    // couleur.gris
    if (event.target.value!="Off") {
    this.getField("couleur.couleur").value="Off";
    this.getField("option.4").display=display.visible;
    }

    // couleur.couleur
    if (event.target.value!="Off") {
    this.getField("couleur.gris").value="Off";
    this.getField("option.4").value="Off";
    this.getField("option.4").display=display.hidden;
    } else this.getField("option.4").display=display.visible;

    // option
    options(event.target.name.substr(event.target.name.indexOf(".")+1));

    @+
    😎

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

    Je regarde ça ce soir ou demain…

    @+
    😎

    en réponse à : Calcul complexe #73600
    bebarth
    Maître des clés

    bonjour,
    On peut récupérer les tarifs avec effectivement soit une table ou un fichier .csv en pièce jointe. J’hésite quelle est la meilleure solution…
    Si je comprends bien le tarif, les pages intérieures obligatoirement en niveaux de gris tandis que la couleur est réservée en première et quatrième de couverture ! Correct ?

    Sur ton fichier, on peut choisir plusieurs formats pour une parution, c’est normal ? Si non, du coup il faudrait plutôt mettre des boutons radio. Idem pour “256 tons GRIS” et “COULEUR”…

    La première page est-elle automatiquement une pleine page ??? et pour la quatrième de couverture, y a-t-il différents formats ?

    @+
    😎

    J’avais pas bien lu !

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    en réponse à : Réduction fraction #73591
    bebarth
    Maître des clés

    Avec ma méthode, la fonction ne sert plus, et la variable Reponse est une opération Numerateur/Denominateur;
    Il faut donc juste écrire :
    Reponse=Numerateur/Denominateur;
    if (Reponse ==eval (RepUser)) {
    app.alert({cMsg:"Bravo.", nIcon:2});this.getField("Neq").value++;
    MessEqOk();
    console.println("RepUser="+RepUser+" ; Reponse="+Reponse);
    } else {
    app.alert({cMsg:"La fraction est insufisament simplifiée, ou fausse.", nIcon:2});
    erreurs++;
    console.println("RepUser="+RepUser+" ; Reponse="+Reponse);
    }

    @+
    😎

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

    Merci, 2 questions cependant : pourquoi appelle-t-on 2 fois la fonction ? nbAleatoires(); while (b*f-e*c<=0 || a*f-c*d<=0) nbAleatoires(); En créant une fonction on peut se passer de déclarer les variables avec la valeur 0 ?

    Une première fois, cela déclare les variables avec un nombre aléatoire au lieu d’un zéro, et si les 2 conditions requises ne sont pas obtenues on effectue la boucle while jusqu’à qu’elles le soient.

    La fonction évite d’écrire 2 fois les lignes des nombres aléatoires.

    @+
    😎

    en réponse à : Réduction fraction #73583
    bebarth
    Maître des clés

    bonjour,
    Je ne sais pas si j’ai bien compris, mais sinon ça me parait bien compliqué !
    Pour moi il suffit d’écrire :
    if (this.getField ("RepEt.2b").value/this.getField ("RepEt.1b").value==eval(this.getField("RepEt.3").value)) app.alert("Bravo.",2);
    else app.alert("La fraction est insufisament simplifiée, ou fausse.",2);

    ou avec des variables :
    var Numerateur=this.getField ("RepEt.2b").value;
    var Denominateur=this.getField ("RepEt.1b").value;
    var RepUser=this.getField("RepEt.3").value;
    if (Numerateur/Denominateur==eval(RepUser)) app.alert("Bravo.",2);
    else app.alert("La fraction est insufisament simplifiée, ou fausse.",2);

    @+
    😎

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

    bonjour,
    Le plus simple est effectivement de déclarer toutes les variables en les mettant à 0.
    Par contre, les conditions ne sont pas correctes. Il faut écrire :
    var a=0;
    var b=0;
    var c=0;
    var d=0;
    var e=0;
    var f=0;
    while (b*f-e*c<=0 || a*f-c*d<=0) {
    var a=Math.round(Math.random()*7)+2;
    var b=Math.round(Math.random()*9)+1;
    var c=Math.round(Math.random()*8)+1;
    var d=Math.round(Math.random()*9)+1;
    var e=Math.round(Math.random()*8)+1;
    var f=Math.round(Math.random()*9)+1;
    }

    Sinon, tu peux également définir une fonction :
    function nbAleatoires() {
    var a=Math.round(Math.random()*7)+2;
    var b=Math.round(Math.random()*9)+1;
    var c=Math.round(Math.random()*8)+1;
    var d=Math.round(Math.random()*9)+1;
    var e=Math.round(Math.random()*8)+1;
    var f=Math.round(Math.random()*9)+1;
    }
    nbAleatoires();
    while (b*f-e*c<=0 || a*f-c*d<=0) nbAleatoires();

    @+
    😎

     

    en réponse à : Raccourcir une condition #73574
    bebarth
    Maître des clés

    bonjour,

    Pas exactement.

    Tu as tout à fait raison, mais ce que je voulais dire c’est que dans ce cas le résultat est identique que l’on mette le + ou pas avec le g.
    Ici on aurait pu écrire /\s/g car le global détecte toutes les espaces (consécutives ou non) alors que /\s+/g détecte tous les “au moins une” espaces consécutives. En théorie c’est plus rapide puisqu’il peu y avoir moins d’occurences !
    Lorsque on met le signe + (un ou plus) avec le g (global) le + est donc redondant pour moi, ce qui n’est plus vrai à partir de {2,} (2 ou plus). Mais je le laisse car l’expression est plus parlante à mon avis.

    @+
    😎

    en réponse à : Raccourcir une condition #73571
    bebarth
    Maître des clés

    C’est bien ça ?

    C’est ça, exactement !

    + signifie : présent une ou plusieurs fois.
    g signifie qu’on veut une recherche globale, c’est à dire une recherche qui ne s’arrête pas à la première occurrence trouvée mais qui les cherche toutes.

    Dans ce cas, ces 2 signes sont redondants, mais ce n’est pas grave de les mettre ensemble.

    @+
    😎

    en réponse à : Champs adresses remplis après sélection nom dans liste #73567
    bebarth
    Maître des clés

    bonjour,
    Désolé pour cette réponse tardive, je pensais avoir répondu !

    j’ai un problème avec le script “veto” le nom du veto disparaît lors de l’enregistrement du document

    Ça ce n’est pas compliqué, il suffit de récupérer la valeur du menu déroulant à l’ouverture du document et de redonner cette valeur après lecture des données de la pièce jointe dans le script de document.
    var leCabinet=this.getField("nomCabinet").value;
    ...
    this.getField("nomCabinet").value=leCabinet;

    Moins grave, si je veux ajouter une info après le cabinet sélectionné comme (un nom par exemple), l’adresse s’efface … As-tu une idée ?

    Ça c’est plus compliqué et je ne sais pas si c’est une bonne idée… Je vais réfléchir !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raccourcir une condition #73565
    bebarth
    Maître des clés

    bonjour,
    Une petite erreur…

    Ici, la notation équivaut à var num=c+(b*d) ou var num=c-(b*d)

    Il faut donc écrire :
    ...
    while (c-b*d==0 || c+b*d==0) {
    ...

    Même si “c+b*d==0” avec des nombres aléatoires ne doit pas être fréquent !

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raccourcir une condition #73562
    bebarth
    Maître des clés

    …sinon tu peux réduire un peu le script :
    var OpAl=Math.round(Math.random()*1)+1;
    var a=0;
    var b=0;
    var c=0;
    var d=0;
    while (c==0 || b==0 || d==0) {
    var a=Math.round(Math.random()*7)+2;
    var b=Math.round(Math.random()*9)+1;
    var c=Math.round(Math.random()*8)+1;
    var d=Math.round(Math.random()*9)+1;
    }
    if (OpAl==1) var num=(c-b*d);
    else var num=(c+b*d);
    var den=(a*d);
    this.getField("numOk").value=num;
    this.getField("denOk").value=den;
    this.getField("NB.1").value=a;
    this.getField("NB.2").value=b;
    this.getField("NB.3").value=c;
    this.getField("NB.4").value=d;

    Ici, la notation équivaut à var num=c+(b*d) ou var num=c-(b*d)

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raccourcir une condition #73561
    bebarth
    Maître des clés

    Dans un premier temps, il faut initialiser tes variables a, b, c et d avant d’effectuer la première boucle “while” !

    Tu me dis si ça fonctionne ensuite…

    @+
    😎

    en réponse à : Raccourcir une condition #73555
    bebarth
    Maître des clés

    Désolé, mais toi tu es dans ton script et tu connais certainement par cœur les variables et ce que tu veux faire, mais à moins de déchiffrer tous tes scripts je suis un peu perdu !!!
    Quand la variable “diff” est-elle incrémentée et devient-elle égale à 6 ?
    Que souhaites-tu faire exactement avec ce script ?

    @+
    😎

    en réponse à : Raccourcir une condition #73554
    bebarth
    Maître des clés

    bonjour,

    Bonjour, pas testé cette dernière version mais la précédente marchait bien il me semble

    Il fonctionne mais également pour des réponses incorrectes. Ce script vérifie que les 2 nombres vC2 et vC3 sont présents et qu’il y a un signe de multiplication (x ou *) entre 2 nombres. Mais si par exemple la réponse correcte est 3×5, il valide également 35 x 11 car il y a bien un 3, un 5 et un signe entre 2 nombres…

    Sinon, je reconnais que je ne comprend pas cette ligne : var RepUser2=this.getField("RepUser2").valueAsString.replace(/\s+/g,"").replace(/[x]/,"*").split("*");

    Ici la variable RepUser2 va être transformée en une table de 1 ou 2 cellules selon la réponse (un nombre ou une opération).
    replace(/\s+/g,"") On supprime tous les espaces.
    replace(/[x]/,"*") On remplace l’éventuel signe de multiplication “x” en “*”.
    split("*") On transforme la chaine de caractères en table avec “*” comme séparateur de cellules.

    Et celle-ci : if (RepUser2.length==2 && ((vC2==RepUser2[0] && vC3==RepUser2[1]) || (vC2==RepUser2[1] && vC3==RepUser2[0]))) OK++;

    if (RepUser2.length==2... Si la table à 2 valeurs c’est que le résultat est une opération (si elle en a qu’une c’est le résultat de l’opération)
    && ((vC2==RepUser2[0] && vC3==RepUser2[1]) vC2) est égale à la première cellule de ta table et vC3 à la seconde…
    || (vC2==RepUser2[1] && vC3==RepUser2[0])) ou l’inverse…
    ) OK++; la variable “OK” (initialement 0) est incrémentée.

    J’ai un autre souci avec ce fichier…

    Je regarde plus tard !

    @+
    😎

    en réponse à : Raccourcir une condition #73543
    bebarth
    Maître des clés

    bonjour,
    Voici donc une version qui devrait correspondre à ce que tu cherches à faire :
    var vC2=this.getField("NB.2").valueAsString;
    var vC3=this.getField("NB.3").valueAsString;
    var RepUser2=this.getField("RepUser2").valueAsString.replace(/\s+/g,"").replace(/[x]/,"*").split("*");
    var OK=0;
    if (RepUser2.length==2 && ((vC2==RepUser2[0] && vC3==RepUser2[1]) || (vC2==RepUser2[1] && vC3==RepUser2[0]))) OK++;
    else if (RepUser2.length==1 && RepUser2==Number(vC2)*Number(vC3)) OK++;
    if (OK) app.alert({cMsg:"Bravo !", nIcon:2});
    else app.alert({cMsg:"Erreur !", nIcon:2});

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raccourcir une condition #73540
    bebarth
    Maître des clés

    Ça fonctionne si on indique le résultat mais pas si on écrit la multiplication.
    Voici un script qui vérifie tous les cas :
    var vC2=this.getField("NB.2").valueAsString;
    var ReGex2=new RegExp(vC2);
    var vC3=this.getField("NB.3").valueAsString;
    var ReGex3=new RegExp(vC3);
    var RepUser2=this.getField("RepUser2").valueAsString;;
    if ((ReGex2.test(RepUser2) && ReGex3.test(RepUser2) && /^\d+\s*([*]|[x])\s*\d+$/.test(RepUser2)) || RepUser2==Number(vC2)*Number(vC3)) app.alert({cMsg:"Bravo !", nIcon:2});
    else app.alert({cMsg:"Erreur !", nIcon:2});

    @+
    😎

    En fait cette version fonctionne lorsque le résultat est correct mais également avec de mauvaises réponses lorsqu’on indique l’opération.
    Le script vérifie que les 2 nombres vC2 et vC3 sont présents dans le résultat et qu’il y a bien un signe pour la multiplication, mais si un des nombres est composé des 2 valeurs vC2 et vC3 et que le second nombre est incorrect il indique la réponse comme bonne… alors que ce n’est pas le cas !

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Raccourcir une condition #73538
    bebarth
    Maître des clés

    bonjour,
    Je vois 2 erreurs :
    var RepUser2 = this.getField("RepUser<span style="color: #ff9900;">2</span>").valueAsString;

    ...
    if (RepUser2 == (vC2 + ("×" || "*" || " × " || " * ") + vC3) || <span style="color: #ff9900;">RepUser2 ==</span> (vC3 + ("×" || "*" || " × " || " * ") + vC2) || <span style="color: #ff9900;">RepUser2 ==</span> (Number(vC2) * Number(vC3))<span style="color: #ff0000;"><del> && vC1</del></span>)...

    Ici j’ai retiré “&& vC1” car je ne sais pas ce que tu veux vérifier…
    Tu testes et tu me dis !

    @+
    😎

    en réponse à : Champs adresses remplis après sélection nom dans liste #73523
    bebarth
    Maître des clés

    Merci pour ta réponse ! C’est ok mais j’ai un problème avec mon dernier script for (var i = 0; i < colonnes.length; i++) { if (event.value == colonnes[2]) { this.getField(“43 Deplacement”).value = colonnes[6]; break; } } j’ai un message d’erreur car le format du champ 43 est nombre monétaire

    Essaye :
    ...
    this.getField("43 Deplacement").value = Number(colonnes[6]);
    ...

    En supposant que “colonnes[6]” (la septième colonne numérotée basée sur 0) est bien un nombre !

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73522
    bebarth
    Maître des clés

    Désolé, existe-t-il une autre méthode que vous pouvez utiliser pour saisir et mettre à jour des données avec le lecteur gratuit ? peccato, nessun altro metodo da poter utilizzare per inserire e aggiornare dati con il lettore gratuito?

    Je ne pense pas !

    @+
    😎

    en réponse à : Champs adresses remplis après sélection nom dans liste #73516
    bebarth
    Maître des clés

    Bonjour Bebarth J’ai réussi à importé et modifier les scripts avec adresses sans problème par contre pour les NPA j’ai qqch qui beug ! Même en reprenant le NPA du fichier avec les adresses afin d’avoir qu’un seul csv … Une case efface l’autre !? Je souhaite utiliser le script dans chaque case du formulaire avec ville et adresse il me suffit de copier ton script dans les actions des cases en question ? for (var i=0; i<colonnes.length; i++) { if (event.value==colonnes[3]) { this.getField(“npaCabinet”).value=colonnes[2]; break; } } J’ai loupé qqch ? Il me semple que c’est les colonnes 3 et 4 Non ? Pas 2 et 3 ? J’ai essayé de remplacer “npaCabinet” par “06 NPA” et villeCabinet par “07 ville” qui corresponde au champs de mon document mais cela ne fonctionne pas Je souhaite aussi ajouter une colonne dans mon csv ( N°7 frais de déplacements) avec un montant et le reprendre dans une case plus loin dans le formulaire en fonction en fonction du NPA ajouté dans le champs ” 06 NPA”

    Il faudrait partager ton fichier car comme ça je ne comprends pas !

    @+
    😎

    en réponse à : Champs adresses remplis après sélection nom dans liste #73515
    bebarth
    Maître des clés

    Salut, en faisant les tests j’ai vu que ça marche sur Acrobat 2020 (je mets à jour le livre) alors qu’avec le lecteur Adobe gratuit, ça ne marche pas. (il ne le met pas à jour pour moi) Existe-t-il un moyen pour que le lecteur gratuit mette à jour le fichier Excel ? Merci

    Le message retourné par la console avec Adobe Reader est :

    NotAllowedError: Les paramètres de protection interdisent l’accès à cette propriété ou à cette méthode.
    Doc.setDataObjectContents:27:Field addAbook.4:Mouse Up

    Donc pas possible…

    @+
    😎

    en réponse à : Champs adresses remplis après sélection nom dans liste #73510
    bebarth
    Maître des clés

    bonjour,
    Si je comprends bien, tu veux alimenter le fichier .csv à partir de données entrées dans le pdf !
    Si c’est cela, il y a un post où j’avais répondu :

    Problème d’ouverture d’un fichier


    …et le fichier correspondant en pièce jointe.

    N’hésite pas à demander pour des informations complémentaires.

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73486
    bebarth
    Maître des clés

    bonjour,
    C’est possible ! Il faut donc appeler chaque fichier csv plutôt par son nom que sa position…

    ...
    //
    var fichier=this.getDataObjectContents("NPA.csv");
    var donnees=util.stringFromStream(fichier).replace(/\r/g,"");
    var rangees=donnees.split("\n");
    var NPA=new Array();
    for (var i=0; i<rangees.length; i++) NPA=rangees.split(";");

    // Script champ "npaCabinet" désactivé
    if (event.value) {
    for (var i=0; i<NPA.length; i++) {
    if (event.value==NPA[1]) {
    this.getField("villeCabinet").value=NPA[0];
    break;
    }
    this.getField("villeCabinet").value="";
    }
    } else this.getField("villeCabinet").value="";
    // Script champ "villeCabinet" désactivé
    if (event.value) {
    for (var i=0; i<NPA.length; i++) {
    if (event.value.toUpperCase()==NPA[0].toUpperCase()) {
    this.getField("npaCabinet").value=NPA[1];
    event.target.value=NPA[0];
    break;
    }
    this.getField("npaCabinet").value=""
    }
    } else this.getField("npaCabinet").value="";

    @+
    😎

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73458
    bebarth
    Maître des clés

    Tu peux écrire ceci :
    // Script champ "npaCabinet" désactivé
    for (var i=0; i<colonnes.length; i++) {
    if (event.value==colonnes[2]) {
    this.getField("villeCabinet").value=colonnes[3];
    break;
    }
    }
    // Script champ "villeCabinet" désactivé
    for (var i=0; i<colonnes.length; i++) {
    if (event.value==colonnes[3]) {
    this.getField("npaCabinet").value=colonnes[2];
    break;
    }
    }

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73456
    bebarth
    Maître des clés

    ??? Je ne comprends pas les questions !
    Tu veux un menu déroulant pour “ville” et “NPA” ?

    @+

    en réponse à : Champs adresses remplis après sélection nom dans liste #73452
    bebarth
    Maître des clés

    bonjour,
    Voici les scripts à indiquer :
    // Script de document
    this.getField("nomCabinet").clearItems();
    var p=this.getDataObject(this.dataObjects[0].name);
    var fichier=this.getDataObjectContents(p.name);
    var donnees=util.stringFromStream(fichier);
    var rangees=donnees.split("\n");
    var colonnes=new Array();
    for (var i=0; i<rangees.length; i++) colonnes=rangees.split(";");
    var cellule=new Array();
    for (var j=0; j<colonnes.length; j++) cellule[j]=[colonnes[j][0],j];
    cellule[0][0]="";
    this.getField("nomCabinet").setItems(cellule);

    // Script de touches personnalisé du menu déroulant
    if (!event.willCommit) {
    if (event.changeEx!=0) {
    this.getField("adresseCabinet").value=colonnes[event.changeEx][1];
    this.getField("npaCabinet").value=colonnes[event.changeEx][2];
    this.getField("villeCabinet").value=colonnes[event.changeEx][3];
    this.getField("telephoneCabinet").value=colonnes[event.changeEx][4];
    this.getField("emailCabinet").value=colonnes[event.changeEx][5];
    } else {
    this.getField("adresseCabinet").value="";
    this.getField("npaCabinet").value="";
    this.getField("villeCabinet").value="";
    this.getField("telephoneCabinet").value="";
    this.getField("emailCabinet").value="";
    }
    }

    …et si tu as des caractères accentués, il faut absolument enregistrer ton fichier .csv en UTF-8.

    @+

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Décomposition en facteurs premiers #73447
    bebarth
    Maître des clés

    Cadeau !
    Affichage dans différents formats :
    if (this.getField("NB.1").value) {
    function decomposition(nombre) {
    nbPremiers=[];
    while (nombre%2==0) {
    nbPremiers.push(2);
    nombre=nombre/2;
    }
    for (var i=3; i<=Math.sqrt(nombre); i=i+2) {
    while (nombre%i==0) {
    nbPremiers.push(i);
    nombre=nombre/i;
    }
    }
    if (nombre>2) nbPremiers.push(nombre);
    return nbPremiers;
    }
    this.getField("Resultat").value=decomposition(this.getField("NB.1").value).toString().replace(/[,]/g," x ");
    //
    var nbEtExposant=[[nbPremiers[0],1]];
    for (var i=1; i<nbPremiers.length; i++) {
    if (nbEtExposant[nbEtExposant.length-1][0]==nbPremiers) nbEtExposant[nbEtExposant.length-1][1]++;
    else nbEtExposant.push([nbPremiers,1])
    }
    for (var i=0; i<nbEtExposant.length; i++) {
    if (nbEtExposant[1]==1) nbEtExposant=nbEtExposant.toString().replace(/,1$/,"");
    else nbEtExposant=nbEtExposant.toString().replace(/,/,"^");
    }
    this.getField("Resultat1").value=nbEtExposant.toString().replace(/[,]/g," x ");
    //
    var f=this.getField("Resultat2");
    f.textSize=16;
    spans=new Array();
    var j=0;
    for (var i=0; i<nbEtExposant.length; i++) {
    var XX=nbEtExposant.split("^");
    spans=new Object();
    spans.text=XX[0];
    j++;
    if (XX.length>1) {
    spans=new Object();
    spans.text=XX[1];
    spans.superscript=true;
    j++;
    }
    if (i<nbEtExposant.length-1) {
    spans=new Object();
    spans.text=" x ";
    spans.textSize=f.textSize-4;
    j++;
    }
    }
    f.richValue=spans;
    } else {
    this.getField("Resultat").value="";
    this.getField("Resultat1").value="";
    this.getField("Resultat2").value="";
    }

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73441
    bebarth
    Maître des clés

    bonjour,

    Pouvez-vous m’expliquer comment le mettre en place dans le formulaire (Est-ce dans action du champ liste ?)

    Le code est placé en “Script de touches personnalisé” du menu déroulant (cf. copie d’écran).

    Est-ce que le fichier Excel peut-être masqué ou invisible pour les utilisateur ?

    Le fichier Excel peut-être masqué si on cache les volets de navigation… On peut peut-être essayer qu’il ne soit pas possible à afficher !

    Est-ce que le système marchera avec le lecteur pdf ou uniquement la version pro ?

    Ça fonctionnera sur ordinateur PC/Mac avec Acrobat Reader ou Pro (ou autres lecteurs pdf) mais pas avec les téléphones et tablettes dont les readers sont allergiques au JavaScript.

    Si tu veux plus d’aide, merci de partager un fichier (en messagerie privée si tu le souhaites).

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73438
    bebarth
    Maître des clés

    Du coup, voici un script pour un autre post que j’avais écris il y a quelques années (déjà) !

    // Script de document
    var id=this.getField(“ID”).value;
    var studentName=this.getField(“Name”).value;
    var parentName=this.getField(“Parent_Name”).value;
    var address=this.getField(“Address”).value;
    var phoneNumber=this.getField(“Phone_Number”).value;
    var email=this.getField(“E-mail”).value;
    // Initialisation liste déroulante
    this.getField(“ID”).clearItems();
    // Importer l’unique PJ sans la nommer
    var p=this.getDataObject(this.dataObjects[0].name);
    var fichier=this.getDataObjectContents(p.name);
    var donnees=util.stringFromStream(fichier);
    // Séparation des rangées (saut de ligne)
    var rangees=donnees.split(“\n”);
    // Séparation des colonnes (TAB)
    var colonnes=new Array();
    for (var i=0; i<rangees.length; i++) colonnes=rangees.split(“;”);
    var cellule=new Array();
    for (var j=0; j<colonnes.length; j++) cellule[j]=[colonnes[j][0], j];
    // Remplissage de la liste déroulante
    this.getField(“ID”).setItems(cellule); // champ liste déroulante
    // Re-remplissage des champs
    this.getField(“ID”).value=id;
    this.getField(“Name”).value=studentName;
    this.getField(“Parent_Name”).value=parentName;
    this.getField(“Address”).value=address;
    this.getField(“Phone_Number”).value=phoneNumber;
    this.getField(“E-mail”).value=email;

    // Script de touches personnalisé du menu déroulant
    if (!event.willCommit) {
    try {
    var studentName=colonnes[event.changeEx][1];
    } catch(e) {
    var studentName=””;
    }
    try {
    var parentName=colonnes[event.changeEx][2];
    } catch(e) {
    var parentName=””;
    }
    try {
    var address=colonnes[event.changeEx][3];
    } catch(e) {
    var address=””;
    }
    try {
    var phoneNumber=colonnes[event.changeEx][4];
    } catch(e) {
    var phoneNumber=””;
    }
    try {
    var email=colonnes[event.changeEx][5];
    } catch(e) {
    var email=””;
    }
    this.getField(“Name”).value=studentName;
    this.getField(“Parent_Name”).value=parentName;
    this.getField(“Address”).value=address;
    this.getField(“Phone_Number”).value=phoneNumber;
    this.getField(“E-mail”).value=email;
    }

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73436
    bebarth
    Maître des clés
    bonjour,


    var excelFilePath = « /chemin/fichier.xlsx »; //
    var selectedName = this.getField(« nomMenuDeroulant »).value;
    var excelData = app.Excel.importDataObjects(excelFilePath);

    Ça ce n’est pas possible !
    Ton fichier .csv doit être en pièce jointe de ton pdf.

    @+

    en réponse à : Décomposition en facteurs premiers #73434
    bebarth
    Maître des clés

    Tu veux que je développe ?

    😉

    en réponse à : Décomposition en facteurs premiers #73430
    bebarth
    Maître des clés

    bonjour,
    J’avais fait ça il y a quelques temps…
    Voici le script adapté à ton exemple :
    function decomposition(nombre) {
    var nbPremiers=[];
    while (nombre%2==0) {
    nbPremiers.push(2);
    nombre=nombre/2;
    }
    for (var i=3; i<=Math.sqrt(nombre); i=i+2) {
    while (nombre%i==0) {
    nbPremiers.push(i);
    nombre=nombre/i;
    }
    }
    if (nombre>2) nbPremiers.push(nombre);
    return nbPremiers;
    }
    this.getField("Resultat").value=decomposition(this.getField("NB.1").value).toString().replace(/[,]/g," x ");

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champs adresses remplis après sélection nom dans liste #73422
    bebarth
    Maître des clés

    bonsoir,
    Le sujet a déjà été traité plusieurs fois, dont :

    Importation des données à partir d’un fichier texte.


    et ci-joint le script associé :
    // Importation de l'unique pièce jointe sans la nommer
    var pj=this.getDataObject(this.dataObjects[0].name);
    var fichier=this.getDataObjectContents(pj.name);
    var donnees=util.stringFromStream(fichier);
    // Suppression du fichier
    this.removeDataObject(pj.name);
    // Suppression du champ "script"
    this.removeField("script");
    // Séparation des lignes de la feuille de calcul (saut de ligne)
    var lignes=donnees.split("\r\n");
    // Séparation des cellules de chaque ligne de la feuille de calcul (TAB)
    cellules=new Array();
    for (var i=1; i<lignes.length; i++) {
    // i est le numéro de la ligne et on commence par la deuxième ligne : i=1
    cellules=lignes.split(";");
    this.getField("Nom").value=cellules[0]; // Cellule 0 de la ligne i, donc Nom
    this.getField("Prenom").value=cellules[1]; // Cellule 1 de la ligne i, donc Prénom
    this.getField("Adresse").value=cellules[2]; // etc.
    this.getField("Telephone").value=cellules[3];
    this.getField("e-mail").value=cellules[4];
    var nomFichier="Fichier "+cellules[0]+" "+cellules[1]+".pdf";
    if (i!=lignes.length-1) this.saveAs({cPath: nomFichier,bCopy: true});
    else this.saveAs({cPath: nomFichier});
    }

    …et le fichier en pièce jointe.

    @+

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Nombre aléatoire compris entre 2 valeurs #73418
    bebarth
    Maître des clés

    …et si tu veux utiliser une fonction pour indiquer les bornes, tu peux écrire :
    function getRandomIntInclusive(min,max) {
    return Math.ceil(Math.random()*(max-min+1)+min-1);
    }
    for (var i=1; i<=100; i++) console.println(i+" : "+getRandomIntInclusive(-20,20));

    @+

    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    • Cette réponse a été modifiée le il y a 1 année et 4 mois par bebarth.
    en réponse à : Nombre aléatoire compris entre 2 valeurs #73417
    bebarth
    Maître des clés

    bonjour,
    Le ∆ étant de 40 et vu qu’avec “Math.ceil” on arrondi à l’entier supérieur, personnellement j’écrierais simplement :
    var Nb2=Math.ceil(Math.random()*41-21);

    Si tu lances une boucle dans la console pour 100 nombres aléatoires :
    for (var i=1; i<=100; i++) console.println(i+" : "+Math.ceil(Math.random()*41-21));
    Tu vois que ça fonctionne.

    @+

    en réponse à : Checkboxes cachées si pas cochées #73410
    bebarth
    Maître des clés

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

    @+

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

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

    @+

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

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

    @+

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

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

    @+

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

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

    @+

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

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

    @+

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

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

    @+

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

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

    @+

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

    Bonjour,

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

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

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

    @+

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

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

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

    bonsoir,

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

    @+

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

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

    @+

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

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

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

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

    Je te fait une vidéo demain !

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+

    😎

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

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


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

    @+
    😎

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

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

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

    @+
    😎

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

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

    @+
    😎

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

    bonjour,

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

    A essayer donc…

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

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

    @+
    😎

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

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

    @+
    😎

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

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

    @
    😎

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

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

    @+
    😎

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

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

    @+
    😎

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

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

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

    @+
    😎

Affichage de 99 réponses de 298 à 396 (sur un total de 3,343)