Donnez vie à vos documents numériques !
 

michel c.

Toutes mes réponses sur les forums

Affichage de 99 réponses de 1 à 99 (sur un total de 422)
  • Auteur
    Réponses
  • en réponse à : Renommer indices #75352
    michel c.
    Participant

    Je n’osait pas le demander…C’est magique. Tu as même fait en sorte de ne pas re-créer les champs R.a.b s’ils sont déjà présents…

    Je n’ai plus qu’à intégrer ça au menu admin. Mais ça je sais faire.

    Un grand merci, ça va me faire gagner un temps précieux.

    en réponse à : Renommer indices #75349
    michel c.
    Participant

    Merci !

    ça marche parfaitement

    en réponse à : Renommer indices #75336
    michel c.
    Participant

    J’ai régulièrement des messages qui sont supprimés par le site. Peut-être que les liens vers mon site internet ne sont pas acceptés… Je passe par mon site pour poster des fichiers trop lourds. S’il faut passer par un hébergeur, par lequel dois-je passer?

    Merci

    en réponse à : Renommer indices #75334
    michel c.
    Participant

    Sinon pour résumer, lorsque je crée mes listes déroulantes Q.a.b (celles que les élèves vont utiliser pour saisir leurs réponses) je dois créer ensuite des listes R.a.b contenant les réponses exactes. Je copie colle les champs Q.a.b et je les renommais ensuite une à une en R.a.b

    Lorsque je passe par le fichier renommer_champs_v01.pdf, 

    les listes sont renommées convenablement mais lorsque je copie-colle les champs R.a.b dans mon exercice interactif, le script de vérification qui compare les valeurs des champs Q.a.b avec R.a.b détecte toutes les réponses comme fausses alors que leurs valeurs sont les mêmes…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75333
    michel c.
    Participant

    Merci.

    Voici une vidéo montrant le problème : Vidéo

    en réponse à : Renommer indices #75324
    michel c.
    Participant

    C’est curieux, j’ai essayé 2 fois de poster une réponse mais elle n’apparaît pas…A la 3ème tentative, j’ai ce message :

    Erreur : réponse identique détectée ; il semble que vous l’ayez déjà dit.

    Mais je ne vois pas ma réponse sur le forum.

    Sinon, la voici en pièce jointe dans un pdf…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75318
    michel c.
    Participant

    J’ai un autre souci….

    Je compte me servir de ce fichier pour pouvoir créer plus rapidement des cours ou exercices “interactifs”

    Grosso modo, j’ai des champs que les élèves doivent remplir. Ces champs sont les champs Q.a.b

    Lorsque l’élève clique sur vérifier, la valeur de ces champs sont comparées à des champs R.a.b Si les valeurs sont identiques, alors la réponse est validée.

    Jusqu’à présent, lorsque je crée mon document, je crée les champs Q.a.b puis je les copie et je renomme leurs copies une à une Q.a.b sera renommé en R.a.b

    L’avantage de ce fichier est d’importer les champs Q.a.b et de les renommer en R.a.b en un seul clic.

    Cela fonctionne très bien lorsque les champs sont de type texte, mais lorsqu’il s’agit de menus déroulants, quand je place les fichiers crées par le script, les réponses ne sont plus valides même lorsque les mêmes items ont été choisis pour les champs Q.a.b et R.a.b

    J’espère que ce n’est pas trop confus.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75304
    michel c.
    Participant

    Merci, effectivement ton script (test-6_BB.pdf) fonctionne bien mieux, je vais partir de cette base. Avec l’ancien, si les champs étaient de type liste déroulante, ils devenaient des champs textes après exécution du script.

    Merci beaucoup.

    J’essayerai demain de faire la petite modif que je souhaite

    en réponse à : Renommer indices #75300
    michel c.
    Participant

    J’ai parfaitement compris. Mon code fonctionne parfaitement pour l’ajout des nouveaux champs. Par contre, je ne sais pas ou placer le code pour retirer les anciens…

    J’ai testé en dehors des boucles try/catch mais ça ne fonctionne pas.

    J’en ai profité pour optimiser un peu le script.

    Il y a un truc que je souhaiterais faire également :

    Si l’option P1 est sélectionnée et que la partie 1 du champ P1 = Q, je souhaiterais que les nouveaux champs crées soient placés au dessus des anciens (hauteur augmentée de la hauteur du champ) mais je ne sais pas si c’est faisable…

     

    Merci

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75295
    michel c.
    Participant

    Non en fait ça ne marche toujours pas même lorsque je sélectionne P1

    en réponse à : Renommer indices #75293
    michel c.
    Participant

    Merci pour la réponse.

    Pour palier à ce problème, j’ai déclaré 2 variables pour les valeurs des champs Name.3.1 et Name.3.2

    Le problème est résolu pour la modification de la partie 1 mais ça ne change rien lorsque je séléctionne P2…

    function Renommer_c() {

    //récuperer les noms de tous les champs
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //déclarer les variables
    var aN = this.getField("Name.3.1").value;
    var nN = this.getField("Name.3.2").value
    var CaR = this.getField("nom_champ").value;
    var Menu = this.getField("Menu").value;
    //décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    //Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
    if (Menu == 1 && aN == P1) {
    //déclarer la variable P1new (nouveau nom pour la partie 1)
    var P1new = nN;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1new.P2.P3
    var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
    //app.alert("Champ ajouté : "+P1new+"."+P2+"."+P3);
    f.textSize=ts;
    f.textFont=tf;
    //interrompre le code si erreur
    }catch(e){break}
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)
    //app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
    }

    //Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
    if (Menu == 2 && aN == P2 && CaR == P1) {
    //déclarer la variable P2new (nouveau nom pour la partie 2)
    var P2new = nN;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1.P2new.P3
    var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
    //app.alert("Champ ajouté : "+P1+"."+P2new+"."+P3);
    f.textSize=ts;
    f.textFont=tf;
    }catch(e){break}
    //interrompre le code si erreur
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)
    //app.alert("Champ retiré : "+P1+"."+P2+"."+P3);
    }

    }

    }

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75285
    michel c.
    Participant

    Étrange le fonctionnement de ce script :

    Lorsque je souhaite renommer la partie 1, il va fonctionner uniquement pour les 2nds indices (P3) ayant des valeurs paires.

    Lorsque je souhaite renommer la partie 2 ; même chose, ça fonctionne que pour les 2nds indices ayant des valeurs paires….

    en réponse à : Renommer indices #75283
    michel c.
    Participant

    Bonjour, je viens de commenter mon code :

    function Renommer_c() {

    //récuperer les noms de tous les champs
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //déclarer la variable CaR (Champs à renommer)
    var CaR = this.getField("nom_champ").value;
    //décomposer les noms de champs en 3 parties séparées par les points : P1 ; P2 et P3
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    //Si l'on désire modifier la partie 1 et que la partie 1 correspond à l'entrée saisie dans le champ Name.3.1
    if (this.getField("Menu").value == 1 && this.getField("Name.3.1").value == P1) {
    //déclarer la variable P1new (nouveau nom pour la partie 1)
    var P1new = this.getField("Name.3.2").value;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1new.P2.P3
    var f=this.addField(P1new+"."+P2+"."+P3,"text",pg,rct);
    f.textSize=ts;
    f.textFont=tf;
    //interrompre le code si erreur
    }catch(e){break}
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)
    app.alert("Fait");
    }

    //Si l'on désire modifier la partie 2 et que la partie 2 correspond à l'entrée saisie dans le champ Name.3.1 et que la partie 1 correspond à la variable CaR
    if (this.getField("Menu").value == 2 && this.getField("Name.3.1").value == P2 && CaR == P1) {
    //déclarer la variable P2new (nouveau nom pour la partie 2)
    var P2new = this.getField("Name.3.2").value;
    try{
    //récupérer les paramètres des champs à renommer
    var ts=this.getField(P1+"."+P2+"."+P3).textSize;
    var tf=this.getField(P1+"."+P2+"."+P3).textFont;
    var rct=this.getField(P1+"."+P2+"."+P3).rect;
    var pg=this.getField(P1+"."+P2+"."+P3).page;
    //créer des nouveaux champs P1.P2new.P3
    var f=this.addField(P1+"."+P2new+"."+P3,"text",pg,rct);
    f.textSize=ts;
    f.textFont=tf;
    }catch(e){break}
    //interrompre le code si erreur
    //supprimer les anciens champs P1.P2.P3
    this.removeField(P1+"."+P2+"."+P3)

    }

    }

    }

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75277
    michel c.
    Participant

    Il y a un truc que je ne comprend pas. Mon script fonctionne mais il y a toujours un champ qui n’est pas renommé…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75274
    michel c.
    Participant

    J’y suis arrivé pour la modification de la partie 1 du nom de champ (P1.P2.P3)

    Par contre mon script ne fonctionne pas quand je souhaite “modifier” la partie 2 P2. J’ai une erreur à la ligne 28…

     

    Merci

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75269
    michel c.
    Participant

    Je vais regarder si j’ai cette fonctionnalité dans pdf XChange. Mais si elle est cachée, alors elle est bien cachée…

    Merci en tout cas. Je vais continuer à bosser sur ce script je ne suis pas très loin d’y arriver je pense.

     

    en réponse à : Renommer indices #75241
    michel c.
    Participant

    Je viens d’essayer le fichier proposé par BB mais ça ne fonctionne pas, j’ai une erreur à la ligne 12…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75239
    michel c.
    Participant

    Je viens de tester pour modifier la première partie ou la 2ème au choix. Mais ça ne fonctionne toujours pas…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75236
    michel c.
    Participant

    Bon j’avance à tâtons, ça marche très partiellement…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Renommer indices #75231
    michel c.
    Participant

    Je viens de retrouver le logiciel, il s’agit de Pdf Studio. Je viens de tester le renommage séquentiel mais ça ne me fait pas gagner de temps.

    Je voulais renommer 30 champs : “Q.7.1” à “Q.7.30” qui se seraient appelés : “R.7.1″ à R.7.30”.

    Et je voulais que ce soit fait respectivement pour chaque champ (que le Q.7.1 devienne R.7.1 et ainsi de suite)

    Cependant le renommage a été fait dans le désordre.

    Je suis donc à la recherche d’un outil ou d’une astuce pour y arriver.

    En gros si je décompose le nom de champ en 3 parties (nom ; indice1 ; indice2), j’aimerais qu’en spécifiant ou en sélectionnant le nom du champ je puisse modifier l’indice 1 et que les indices 2 soient inchangés.

    Si je comprend bien, l’astuce serait de récupérer les propriétés de chaque champ, de créer des nouveaux champs avec les mêmes propriétés mais des noms différents puis d’effacer les champs d’origine.

    Je perdrais je pense au passage les actions liés à ces champs. Mais ça ce n’est pas grave, les champs que je souhaite “renommer” ne seront pas des champs ayant des scripts.

    Merci

    • Cette réponse a été modifiée le il y a 3 semaines par michel c..
    en réponse à : Renommer indices #75229
    michel c.
    Participant

    Je viens de tester un truc à partir d’un script trouvé sur le net mais rien ne se passe. Je cherche encore…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Centrage des éléments de listes déroulantes #75225
    michel c.
    Participant

    C’est sur libre office writer et non calc pardon.

    Il suffit d’insérer une zone de liste et dans les propriété, on peut aligner à gauche, au centre et à droite.

    Pour finir il suffit d’exporter en pdf.

     

    • Cette réponse a été modifiée le il y a 3 semaines et 2 jours par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champ image #75221
    michel c.
    Participant

    Merci pour cette solution

    en réponse à : Champ image #75204
    michel c.
    Participant

    Merci beaucoup. J’ai réussi pour cette condition.

    Par contre je n’ai pas réussi pour la suivante :

    if (nomChamp.indexOf("Aide.")==0) {
    if (this.getField(nomChamp).type=="text" || nomChamp.indexOf("_af_image")>0) this.getField(nomChamp).readonly=true;
    else this.getField(nomChamp).readonly=false;
    }

    Ici, je voudrais que pour les champs Aide, les champs de type bouton qui ne sont pas des images soient en readonly = false et que les champs de type texte ainsi que les images en readonly = true

    Merci

     

    en réponse à : Modification de script #75147
    michel c.
    Participant

    Merci

    en réponse à : Tracé arc de cercle #75112
    michel c.
    Participant

    Bonjour, je n’ai absolument pas les compétences en javascript pour y arriver. Je me demandais si quelque chose de ce genre existait.

    Je cherche également des solutions intermédiaires comme passer par un autre logiciel dans lequel je pourrais faire mes dessins puis les copier / coller.

    Mais ou chaque élément peut être déplacé et modifié.

    J’y arrive avec inkscape mais sans pouvoir changer la couleur ni l’épaisseur des traits après avoir copié/collé

     

    Ps : très impressionnant la montre

    • Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
    en réponse à : Problème de lancement d’un script #75095
    michel c.
    Participant

    Merci, je me suis servi de ton code pour me faire un document qui me sera utile.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Problème de lancement d’un script #75091
    michel c.
    Participant

    Bonjour, je veux uniquement modifier les caractères accentués.

    Je ne savais pas du tout que l’on pouvait faire ça via la console….

    Merci

    en réponse à : Problème de lancement d’un script #75088
    michel c.
    Participant

    Une question en passant : pour coder cette phrase ainsi : "Voulez vous vraiment supprimer le contenu de tous les champs de
    donn\u00E9es et revenir \u00E0 l'\u00E9tat initial du document
    ?\n\nCette action ne pourra pas \u00EAtre annul\u00E9e.\nSi besoin
    utilisez : menu Fichier : R\u00E9tablir"

    tu as un outil ou un lien qui te permet de faire ça rapidement ou tu connais par coeur l’unicode pour les caractères é ê ; à … et tu glisse ces codes au milieu des mots?

    Jusqu’à présent je mettais toute la phrase en unicode mais c’est plus compréhensible comme ça en relisant la phrase.

    en réponse à : Problème de lancement d’un script #75087
    michel c.
    Participant

    Merci !

    en réponse à : Problème de lancement d’un script #75083
    michel c.
    Participant

    Pour mon 2ème souci, j’ai trouvé une façon détournée de résoudre ce problème.

    Obliger l’utilisateur à cliquer sur démarrer pour faire apparaître la première partie :

    Tant que l’utilisateur ne clique pas sur le bouton, Aucune question ne s’affiche…

    S’il clique sur le bouton, une réinitialisation s’opère avec de nouvelles variables.

    Par contre j’ai un autre souci, en cliquant sur ce bouton la boite de dialogue s’affiche pour demander confirmation.

    J’aimerais que si l’utilisateur répond Non, l’exécution du script s’arrête

    if (cResponse != "Oui") {app.alert("Opération annulée.");

    <strong>commande pour stopper l'exécution du script</strong>

    }

    Merci

    • Cette réponse a été modifiée le il y a 2 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Problème de lancement d’un script #75082
    michel c.
    Participant

    Merci, je ne savais pas pour else if

    en réponse à : Problème de lancement d’un script #75076
    michel c.
    Participant

    Merci pour les réponses.


    @BB
    : J’ai modifié mon script Default ainsi

    function Default() {

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    //console.println(i+" - nomChamp : "+nomChamp+" - "+(this.getField(nomChamp).page+1)+" - "+this.getField(nomChamp).type);

    if (nomChamp.indexOf("R.")==0) {
    if (this.getField(nomChamp).type=="text") this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;
    }

    if (nomChamp.indexOf("Q.")==0) {
    if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).value="";}
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).value="Off";
    if (this.getField(nomChamp).type=="combobox") {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}
    }

    if (nomChamp.indexOf("Titre.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
    if (nomChamp.indexOf("TQ.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
    if (nomChamp.indexOf("Question.")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}
    if (nomChamp.indexOf("Aide." && this.getField(nomChamp).type=="text")==0) {this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;}

    if (nomChamp.indexOf("TL.")==0 && this.getField(nomChamp).type=="text") {this.getField(nomChamp).defaultValue="";}

    if (nomChamp.indexOf("Menu.")==0) {
    this.getField("Menu.3").fillColor=color.green;
    this.getField("Menu.4").fillColor=color.green;
    if (this.getField(nomChamp).type=="text") this.getField(nomChamp).defaultValue=this.getField(nomChamp).value;
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).value="Off";
    }

    }}

    Dans la 1ère condition (ligne 7 à 10) et pour la dernière (ligne 25 à 30) je ne sais pas comment écrire : si le champ est de type combobox alors la valeur par defaut sera la valeur sélectionnée dans la combobox.

    Pour le reste, je crois avoir compris ce qui pose problème, je pense que ça fonctionne. Le fichier est en pj

    @ Merlin :

    J’ai renomé la fonction random → hasard

    J’ai crée un formulaire avec uniquement ces 2 scripts pour que ce ne soit pas pollué par d’autres scripts de mon pdf qui en contient énormément et j’ai toujours le même problème :

    cela fonctionne quand j’appele la fonction via le script du bouton  démarrer

    mais ça ne fonctionne plus quand j’apelle la fonction par la commande aleatoir(); (bouton Aleatoir)

    Fichier (aleatoir) en piece jointe

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Problème de lancement d’un script #75071
    michel c.
    Participant

    J’ai corrigé mon script Default mais ça ne fonctionne toujours pas.

    J’ai crée un un bouton qui appele simplement la fonction aleatoir et ça ne fonctionne pas non plus.

    Lorsque le code :

    for (var i=1; i<=30; i++) {
    try {
    random (i);
    } catch(e) {
    this.getField("Var."+i+".3").value="";
    }
    }

    est affecté au bouton, ça fonctionne (Bouton Demarrer) mais lorsque ce même code est en action de document, et que j’appele cette fonction ça ne marche plus (bouton aleatoir)

    Merci

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Problème de lancement d’un script #75049
    michel c.
    Participant

    Bonjour, je viens de tester en ajoutant le script aleatoir en script de document et en appelant ce script à la 3ème ligne de mon script Raz.

    Lorsque je clique sur le bouton Raz (en bas à gauche) je n’ai aucune erreur à la console mais les variables angle et AB ne sont pas affectées par de nouvelles valeurs.

    Alors que lorsque je clique sur le bouton demarrer, auquel j’ai affecté la fonction random, de nouvelles valeurs pour les variables sont générées.

    Merci

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Expression regulière #75038
    michel c.
    Participant

    C’est magique !

    Merci

    en réponse à : Expression regulière #75032
    michel c.
    Participant

    Bonjour, cela ne fonctionne toujours pas. Le point d’interrogation entre crochet ne fonctionne plus non plus, cela provoque une erreur à la console.

    Je n’ai aucun souci pour passer par de l’unicode mais je pense que mes collègues à qui je vais fournir ce fichier risquent de trouver ça compliqué… Sauf s’ils n’ont pas comme moi des réponses attendues entre parenthèses ou entre crochets ou encore un point d’interrogation.

     

    • Cette réponse a été modifiée le il y a 2 mois et 2 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Expression regulière #75023
    michel c.
    Participant

    Je suis en train petit à petit de voir quels caractères posent problème dans les champs R.a.b pour savoir si c’est gênant :

    Les parenthèses : erreur à la console et arrêt du script
    Le crochet [ : erreur à la console et arrêt du script
    Le crochet ] : n’a pas l’air de poser problème

    Si la réponse dans le champ R.a.b est écrite entre parenthèses ; entre {} ; entre [] , la réponse saisie dans le champ Q.a.b ne sera pas acceptée même si elle est correcte
    même si c’est la même que celle contenue dans le champ Q.a.b

    Les caractères accentués ne semblent pas poser problème

    Dans ma matière les réponses attendues sont parfois entre parenthèses ou accolades.

    Je sais que j’ai l’option de l’unicode.

    Sinon j’ai une possibilité d’apporter une petite modif à mon script. Il me manque une info pour cela :

    Comment coder :

    • si le caractère | est présent dans la valeur du champ R.a.b
    • si le caractère | est absent dans la valeur du champ R.a.b

    Je pensais à cela :

    var regex = /(|)/g

    if (regex .test(this.getField("R."+n+"."+a).value)) {......}

    else {.....}

    Mais sans grande conviction

    Mon idée c’est que si le caractère | est absent cela veut dire qu’il n’y a qu’une seule réponse attendue et dans ce cas je compare les valeurs des champs Q.a.b et R.a.b de façon simple et dans ce cas je peux m’autoriser certains caractères

    Si le caractère | est présent alors j’exécute ce code :

    for (var k=0; k<rep.length; k++) {
    var RegExTest=new RegExp(“^”+rep[k]+”$”);
    if (RegExTest.test(this.getField(“Q.”+n+”.”+a).value)) {…}}

    Pour comparer mes champs Q.a.b et R.a.b et dans ce cas, j’utiliserai l’unicode si je souhaite inclure ces caractères…

    Merci

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Expression regulière #75021
    michel c.
    Participant

    Parfois je suis obligé de passer par l’unicode…

    Dans un autre formulaire je dois saisir \u0064\u0072\u006f\u0069\u0074\u0065\u0020\u0046\u0028\u0078\u0029 au lieu de droite P'(x) dans un champ R.a.b

    ça complique un peu les choses mais je suppose qu’il n’y a pas d’autre solution…

    en réponse à : Expression regulière #75011
    michel c.
    Participant

    Bonjour, et merci pour les réponses


    @BB

    Ce n’est pas cette question qui pose problème.

    C’est la vérification à la page 3 par le bouton vérifier.3.0

    @ Merlin : Effectivement si je saisis “\u003F” dans le champ R.3.24 cela ne pose plus de problème.

    Cependant, je compte partager une base de ce formulaire pour que chaque prof puisse créer facilement des pdf “interactifs”. Leur demander de saisir de l’unicode me parait un peu délicat.

    N’y a-t-il pas une autre solution?

     

    Merci

    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par michel c..
    en réponse à : Variables aléatoires #74963
    michel c.
    Participant

    Je n’avais pas vu qu’il y avait une action associée au bouton. C’est pour cela que je n’arrivais pas à intégrer ton script dans mon document…

    Merci

    en réponse à : Variables aléatoires #74958
    michel c.
    Participant

    Je viens de tester ceci :

    function random () {

    function getRandomIntInclusive(min,max,dec) { return Math.round((Math.random()*(max-min)+min)*Math.pow(10,dec))/Math.pow(10,dec);}

    for (var i=1 ; i<31 ; i++) {

    if (this.getField("Dec."+i).value == "") this.getField("Dec."+i).value = 0;
    if (this.getField("Var."+i+".0").value == "") this.getField("Var."+i+".0").value = "Var."+i;
    if (this.getField("Var."+i+".1").value == "") this.getField("Var."+i+".1").value = 0;
    if (this.getField("Var."+i+".2").value == "") this.getField("Var."+i+".2").value = this.getField("Var."+i+".1").value+50;
    if (this.getField("Var."+i+".2").value <= this.getField("Var."+i+".1").value) app.alert("La valeur maxi de la variable "+this.getField("Var."+i+".0").value+" doit être supérieure à la valeur mini");

    else this.getField("Var."+i+".3").value=getRandomIntInclusive(this.getField("Var."+i+".1").value,this.getField("Var."+i+".2").value,this.getField("Dec."+i).value);}

    }

     

    ça fonctionne mais c’est un pis aller. C’est un peu bête de créer toutes ces variables si je n’en ai pas besoin. Je n’arrive pas encore à faire en sorte que ce script ne s’exécute que pour les variables demandées…

     

    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Variables aléatoires #74952
    michel c.
    Participant

    Bonjour, je bloque sur l’adaptation de ce script et d’un autre.

    Je souhaite qu’a l’exécution du script random() chaque champ Var.i.3 soit affecté d’une valeur aléatoire comprise entre les valeurs min et max et avec le nombre de décimales indiqué par le champ Dec.i

    Je voudrais que le script ne s’exécute pas si le champ Var.i.0 ou le champ Var.i.1 ou le champ Var.i.2 est vide

    Le script Variables quand à lui va créer les variables ayant comme nom les textes saisis dans les champs Var.i.0 et comme valeurs les valeurs aléatoires générées précédemment.

    Il me semble que c’est le script random qui bloque et me cause des erreurs.

    Je cherche mais j’avoue que j’ai un peu de mal à trouver.

     

    Merci

    • Cette réponse a été modifiée le il y a 2 mois et 3 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Variables ayant comme nom la valeur des champs #74951
    michel c.
    Participant

    Merci beaucoup !

    en réponse à : Variables ayant comme nom la valeur des champs #74946
    michel c.
    Participant

    Merci beaucoup, j’avance…

    J’aimerais maintenant que pour chaque variable (E et F) , au lieu d’avoir “la chaine de caractère comme valeur” j’ai le contenu des champs Var.1.3 pour la variable E et Var.2.3 pour la variable F

    Merci

     

     

     

    Merci

    • Cette réponse a été modifiée le il y a 2 mois et 4 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Variables ayant comme nom la valeur des champs #74942
    michel c.
    Participant

    Merci mais je ne suis pas sur d’avoir compris. Ce que je dois mettre à la place de “la chaîne de caractères”

    Et pour la suite, je ne vois pas trop ce que je pourrais faire pour exploiter ces variables.

    Dans mon document, je souhaite que dans le champs calcul, la somme des variables E et F soit calculée.

    Le nom de ces variables serait la valeur des champs Var.1.0 et Var.2.0 et les valeurs de ces variables seraient respectivement les

    valeurs des champs Var.1.3 et Var.2.3

    Autre question : si je déclare ces variables par var, celles ci ne sont déclarées que dans le script de document ou dans tout le document?

    Merci

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Variables aléatoires #74929
    michel c.
    Participant

    Merci beaucoup.

    en réponse à : Variables aléatoires #74923
    michel c.
    Participant

    Oui je l’ai déjà fait plusieurs fois mais là ça ne marche pas….

     

    voir document joint

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Variables aléatoires #74919
    michel c.
    Participant

    Je n’arrive pas à faire tourner ce script en script de document…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Variables aléatoires #74917
    michel c.
    Participant

    Merci beaucoup, ça fonctionne à merveille.

    Je voulais savoir s’il était possible de placer ce script en script de document? J’aimerais que l’action puisse être déclenchée par autre chose qu’un bouton

     

    Merci

    en réponse à : Léger bug sur mon formulaire #74835
    michel c.
    Participant

    J’ai trouvé avant de dormir…

    J’ai modifié la dernière ligne de cette partie du script Raz :

    if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).value="";}
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton") && this.getField(nomChamp).value=="undefined") this.getField(nomChamp).value="Off";
    else {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}

    comme ceci

    if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).value="";}
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton") && this.getField(nomChamp).value=="undefined") this.getField(nomChamp).value="Off";
    if (this.getField(nomChamp).type=="dropdown") {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}

    en réponse à : Léger bug sur mon formulaire #74831
    michel c.
    Participant

    Merci pour la réponse, je viens d’identifier le problème car le bug survenait à nouveau lors de l’execution du script Raz.

    Plus particulièrement les lignes 30 à 32 :

    if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).value="";}
    else {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}
    }

    Que j’ai modifiées comme ceci grâce à ton code :

    if (this.getField(nomChamp).type=="text") {this.getField(nomChamp).value="";}
    if ((this.getField(nomChamp).type=="checkbox" || this.getField(nomChamp).type=="radiobutton")) this.getField(nomChamp).value="Off";
    else {this.getField(nomChamp).value=this.getField(nomChamp).getItemAt(0,false);}
    }

    Comme il s’agit d’un champ Q.a.b : en appuyant sur raz je souhaite que les cases soient décochées.

    Par contre maintenant c’est les champs textes qui prennent la valeur undefined lors de l’exécution du script Raz….

    Bon, je vais me coucher, la nuit porte conseil…

    • Cette réponse a été modifiée le il y a 3 mois et 2 semaines par michel c..
    • Cette réponse a été modifiée le il y a 3 mois et 2 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Léger bug sur mon formulaire #74827
    michel c.
    Participant

    Merci infiniment.

    Par contre ça a entraîné un autre souci :pour la 3ème partie, celle ci devrait être validée si la 2ème case est cochée et toutes les autres décochées.

    Or ça ne fonctionne pas du 1er coup….

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Execution d’un script si un champ est absent #74813
    michel c.
    Participant

    J’en apprend tous les jours. je n’avais jamais vu le point d’exclamation placé avant….

    Merci

    en réponse à : Execution d’un script si un champ est absent #74811
    michel c.
    Participant

    merci. ça fonctionne

    en réponse à : Script qui fonctionne de façon isolée #74776
    michel c.
    Participant

    Tu as parfaitement raison, pour les quantités identiques, ce n’est plus un problème depuis que Merlin m’a suggéré d’exporter les données, je n’ai pour le coup aucune saisie à faire.

    Par contre il y a plus grave, je me suis un peu embrouillé je pense avec toutes ces données et je crois avoir relevé quelques erreurs. Je suis en train de réfléchir à une autre façon de nommer les champs.

    en réponse à : Script qui fonctionne de façon isolée #74768
    michel c.
    Participant

    Je pense avoir réussi. Il y avait sûrement plus simple avec une autre numérotation des champs mais je ne voulais pas me refaire tous les calculs…

    Le script est long mais ça a l’air de marcher.

    Enfin ça fonctionne si il y a 10 caissons….Il va falloir que je trouve un truc s’il y a moins de 10 caissons…

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74766
    michel c.
    Participant

    Je pensais à un script de ce type :

    function debit() {

    var ess = this.getField("ChoixEss").value;
    var essenceFond = this.getField("essence.17").value;
    var essenceCote = this.getField("essence.19").value;
    var essenceAvant = this.getField("essence.20").value;
    var essenceArrier = this.getField("essence.21").value;
    var essenceFacades = this.getField("essence.24").value;
    var numPiece = 0;

    if (ChoixEss = essenceFond) {

    if (this.getField("Tiroir.1.1").value != "") {
    var D1=this.getField("Tiroir.1.1").value.split("×");
    var P1 = (D1[0]);
    var P2 = (D1[1]);
    var P3 = (D1[2]);
    var P4 = (D1[3]);
    this.getField("Reference.1").value = "a";
    this.getField("Designation.1").value = "Fond Caisson1";
    this.getField("Nombre.1").value = P4;
    this.getField("Longueur.1").value = P1;
    this.getField("Largeur.1").value = P2;
    this.getField("Epaisseur.1").value = P3;
    this.getField("Essence.1").value = ChoixEss;
    }

    if (this.getField("Tiroir.1.2").value != "") {
    var D1=this.getField("Tiroir.1.2").value.split("×");
    var P1 = (D1[0]);
    var P2 = (D1[1]);
    var P3 = (D1[2]);
    var P4 = (D1[3]);
    this.getField("Reference.2").value = "b";
    this.getField("Designation.2").value = "Fond Caisson2";
    this.getField("Nombre.2").value = P4;
    this.getField("Longueur.2").value = P1;
    this.getField("Largeur.2").value = P2;
    this.getField("Epaisseur.2").value = P3;
    this.getField("Essence.2").value = ChoixEss;
    }

    }

    }

    Il faudrait juste que j’apporte une modif pour que dans le champ Longueur.a soit inscrite la plus grande valeur entre P1 et P2 et que dans le champ Largeur.a soit inscrite la plus petite valeur entre P1 et P2

    Je l’ai testé pour les 2 premières colonnes de la 1ère ligne des tiroirs. Compléter ce script pour toutes les pièces des tiroirs risque d’être long.

    Je vais avoir un script à rallonge et je pense que je vais rencontrer des problèmes si j’ai un nombre de caisson <10…

    Qu’en pensez vous ?

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74762
    michel c.
    Participant

    J’arrive à exporter avec PdfX-Change, j’ai préparé le tableau qu’il faut, il me reste le plus difficile : après avoir choisi l’essence dans la liste déroulante, j’aimerais qu’en cliquant sur générer le débit chaque pièce de cette essence puisse s’inscrire dans le tableau.

    Dans la colonne 1 sont spécifiées des références a ; b ; c …..aa ; ab….

    Dans la colonne 2 : Piece 1 ; Piece2….

    Colonne 3 la quantité (pour les pièces dont les longueurs et largeurs sont identiques)

    Colonne 4 : La plus grande des 2 premières données des champs Tiroir.a.b

    Colonne 5 : La plus petite des 2 premières données des champs Tiroir.a.b

    Colonne 6 : L’épaisseur : l’avant dernière donnée des champs Tiroir.a.b

    Colonne 7 : L’essence sélectionnée

    Colonne 8 : Le sens du fil (je l’inscrirais manuellement)

    Je vais chercher mais je crains que cela dépasse un peu mes compétences…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74756
    michel c.
    Participant

    Un logiciel de calepinage est un programme dans lequel tu indique les dimensions de tes panneaux de bois (des planches dont tu disposes) et dans lequel tu indiques ensuite les dimensions et quantité des pièces que tu désires.

    Tu spécifie si le sens du fil (des fibres de bois) est vertical, horizontal ou sans importance, l’épaisseur de ta lame de scie (trait de coupe) ainsi que la marge voulue au bord du panneau (les bords ont parfois des défauts).

    Le logiciel va ensuite arranger tes différentes pièces sur tes panneaux bruts afin de minimiser les pertes et pour avoir comme chutes des morceaux de dimensions intéressantes. (voir document joint)

    Il y a effectivement un bouton pour importer les fiches de débit. Je vais me pencher dessus pour tester la forme voulue.

    Par contre je ne sais pas du tout comment m’y prendre pour générer un csv à partir de mon formulaire

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74749
    michel c.
    Participant

    Merci, je viens de tout modifier, ça fonctionne. J’ai du mettre un else à la suite de chaque condition pour cela.

    J’ai une autre question mais qui est un peu plus ardue… :

    j’aimerais que les résultats soient synthétisés dans un tableau (page 3) pour les dimensions des différentes pièces des tiroirs.

    Les dimensions inscrites dans les champs Tiroir.a.b sont sous la forme : dimension1×dimension2×épaisseur×quantité

    J’aimerais que dans mon tableau de synthèse, les différentes épaisseurs pour chacune des pièces des tiroirs apparaissent par ordre croissant dans les champs Synthese.0.n et que pour chaque épaisseur soient inscrits dimension1×dimension2×quantité.

    Dans l’idéal j’aimerais que les dimensions 1 et 2 permutent si la dimension2 est supérieure à la dimension1.

    L’autre difficulté est d’ajouter les différentes quantités si plusieurs dimensions sont identiques.

    Je l’ai fait manuellement pour les pièces d’épaisseur 5mm

    Pour expliquer un peu la raison de ce besoin c’est que je dois saisir les dimensions de chaque pièce dans un logiciel de calepinage pour optimiser mes découpes dans un panneau de dimension donné.

    Ce logiciel exige que la 1ère dimension saisie soit la plus grande. De plus la saisie de plusieurs pièces identiques est possible car pour chaque pièce on peut saisir la quantité voulue.

    Merci

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74741
    michel c.
    Participant

    Dans ce même document, j’aimerais que pour le cas ou les caissons n’ont aucune dimension, aucun calcul ne soit fait.

    pour éviter d’avoir des inscriptions du style ×× ou 0××

    Merci

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Script qui fonctionne de façon isolée #74739
    michel c.
    Participant

    Merci beaucoup, l’erreur venait de là. Erreur de copier/coller qui m’avait échappée

    • Cette réponse a été modifiée le il y a 4 mois et 1 semaine par michel c..
    en réponse à : Générateur liste déroulantes #74635
    michel c.
    Participant

    Merci beaucoup. Les explications j’en aurait besoin mais le problème c’est que j’en aurais besoin de beaucoup trop. Il faudrait que je me penche vraiment sur les expressions régulières avant. Parce que là, je nage total…

    en réponse à : Générateur liste déroulantes #74630
    michel c.
    Participant

    Merci beaucoup, ça fonctionne.

    Par contre les espaces sont interprétés comme un nouvel item de la liste.

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74619
    michel c.
    Participant

    Le script fonctionne nickel mais lorsque je l’implémente dans mon document, rien ne se passe et aucun message d’erreur à la console.

    J’ai essayé avec le champ Q.1.5 et rien.

    Décidément, quand ça ne veut pas…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74611
    michel c.
    Participant

    C’est à n’y rien comprendre.

    Je n’avais pas vu que tu avais partagé ton fichier quelques posts avant …. Du coup j’insistais en essayant de corriger cette erreur…

    Du coup je vais me servir de ton fichier.

    Merci beaucoup

    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    en réponse à : Générateur liste déroulantes #74599
    michel c.
    Participant

    Fait attention au fait que déclarer une variable en commençant par “var = ” signifie que c’est une variable locale, uniquement accessible dans la boucle ou dans la fonction dans laquelle elle a été créée. Contrairement à la déclaration sans “var = ” qui en fait une variable globale.

    Oui, j’ai vérifié, dans d’autres scripts, les variables globales fonctionnent avec PDF-XChange Editor. Je ne comprend pas pourquoi dans ce script ça bloque à cette ligne. Je cherche…

    J’ai ajouté ces 3 lignes après la ligne 27 :

    console.println("oRslt : " + oRslt);
    console.println("listeChamps : " + listeChamps);
    console.println("LCha : " + LCha);
    console.println("elements : " + elements);

    juste après la déclaration de la variable : valeurListe=listeChamps;

    La console renvoie :

    oRslt : [object Object]
    listeChamps : [object Object]
    Field:Mouse Up:30: ReferenceError: LCha is not defined

    Je me demandais si la variable listeChamps ne devrait pas être la liste de tout les champs.

    Je suis loin de tout maitriser dans ce script mais bon, je vais essayer quand même de m’y retrouver…

    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74595
    michel c.
    Participant

    Bonjour, avec le script proposé, j’ai toujours cette erreur :

    Field:Mouse Up:35: ReferenceError: valeurListe is not defined

    J’essayerai avec adobe acrobat DC en rentrant ce soir.

    • Cette réponse a été modifiée le il y a 5 mois et 3 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74591
    michel c.
    Participant

    Bonjour et merci.

    Il y avait une erreur à la ligne 31 : Doc:Open:37: ReferenceError: valeurListe is not defined
    j’ai mis var valeurListe=listeChamps à la place de valeurListe=listeChamps

    idem à la ligne 80 : var debutChamp=nomListe; au lieu de debutChamp=nomListe
    mais cette fois l’erreur est toujours là…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Générateur liste déroulantes #74585
    michel c.
    Participant

    Non. Ce n’est pas la peine.

    en réponse à : Assistant d’actions pour remplir en javascript #74570
    michel c.
    Participant

    Bonjour, effectivement je n’ai pas cette fonctionnalité….

    en réponse à : Assistant d’actions pour remplir en javascript #74557
    michel c.
    Participant

    Bonjour, je veux bien la version qui fonctionne en script d’application. Si je comprend bien ce script permet l’insertion plus rapide des scripts dans un pdf?

    en réponse à : Action si champ existe #74532
    michel c.
    Participant

    Merci !

    en réponse à : Vérification #74525
    michel c.
    Participant

    Merci beaucoup !!!

    en réponse à : Vérification #74518
    michel c.
    Participant

    J’ai essayé le script de BB qui fonctionne parfaitement.

    Je l’ai modifié en fonction de mes besoins.

    Je préfère qu’il n’y ait pas de boite de dialogue qui s’ouvre pour la saisie des noms de champs, j’ai supprimé cette fonctionnalité (je vais la garder dans un coin pour moi mais je préfère simplifier le formulaire pour mes collègues qui vont l’utiliser)

    En fonction du nom de champ, les indices a et b de départ ne sont pas les mêmes :

    • pour les champs Question ; Q et R les indices commencent à 1.1
    • pour les champs cAc : les indices commencent à 1.0
    • pour les champs Verifier ; Recommencer et Aide : les indices commencent à 1.0

    Le script modifié a l’air de bien fonctionner :

    var reponse="Titre,TQ,Question,Q,R,Aide,Verifier,Recommencer,cAc,Doc";

    var reponse=reponse.replace(/[,]{2,}/g,",").replace(/^,/,"").replace(/,$/,"");
    var aVerifier=reponse.split(",");
    var lesSeries=[];
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    for (var j=0; j<aVerifier.length; j++) {
    var RegExTest=new RegExp("^"+aVerifier[j]+"\\.(\\d+)\\.(\\d+)$");
    var OK=nomChamp.match(RegExTest);
    if (OK) {
    var ind1=OK[1];
    var ind2=OK[2];
    if (lesSeries[j]==undefined) lesSeries[j]=[aVerifier[j],[]];
    if (lesSeries[j][1][ind1]==undefined) lesSeries[j][1][ind1]=[ind1,[]];
    if (lesSeries[j][1][ind1][1][ind2]==undefined) lesSeries[j][1][ind1][1][ind2]=[ind2];
    break;
    }
    }
    }
    var txt=""

    for (var i=0; i<lesSeries.length; i++) {
    if (lesSeries==undefined) txt+="Il n'y a pas de champ \""+aVerifier+"\" avec indices.\r";
    else {
    if (aVerifier=="Titre") {
    for (var j=0; j<lesSeries[1].length; j++) {
    if (lesSeries[1][j]==undefined) txt+="Il n'y a pas d'indice de premier niveau \""+aVerifier+"."+[j]+"\".\r";
    else {
    for (var k=0; k<lesSeries[1][j][1].length; k++) {
    if (lesSeries[1][j][1][k]==undefined) txt+="Il n'y a pas d'indice de second niveau \""+aVerifier+"."+[j]+"."+k+"\".\r";
    }
    }
    }
    }

    if (aVerifier=="Question" || aVerifier=="Q" || aVerifier=="R" || aVerifier=="TQ") {
    for (var j=1; j<lesSeries[1].length; j++) {
    if (lesSeries[1][j]==undefined) txt+="Il n'y a pas d'indice de premier niveau \""+aVerifier+"."+[j]+"\".\r";
    else {
    for (var k=1; k<lesSeries[1][j][1].length; k++) {
    if (lesSeries[1][j][1][k]==undefined) txt+="Il n'y a pas d'indice de second niveau \""+aVerifier+"."+[j]+"."+k+"\".\r";
    }
    }
    }
    }

    if (aVerifier=="cAc") {
    for (var j=1; j<lesSeries[1].length; j++) {
    if (lesSeries[1][j]==undefined) txt+="Il n'y a pas d'indice de premier niveau \""+aVerifier+"."+[j]+"\".\r";
    else {
    for (var k=0; k<lesSeries[1][j][1].length; k++) {
    if (lesSeries[1][j][1][k]==undefined) txt+="Il n'y a pas d'indice de second niveau \""+aVerifier+"."+[j]+"."+k+"\".\r";
    }
    }
    }
    }

    if (aVerifier=="Verifier" || aVerifier=="Recommencer" || aVerifier=="Aide") {
    for (var j=1; j<lesSeries[1].length; j++) {
    if (lesSeries[1][j]==undefined) txt+="Il n'y a pas d'indice de premier niveau \""+aVerifier+"."+[j]+"\".\r";
    else {
    for (var k=0; k<lesSeries[1][j][1].length; k++) {
    if (lesSeries[1][j][1][k]==undefined) txt+="Il n'y a pas d'indice de second niveau \""+aVerifier+"."+[j]+"."+k+"\".\r";
    }
    }
    }
    }

    }
    }

    console.clear();
    console.show();
    console.println(txt);

     

     

     

    Il me reste quelques modifications encore à apporter :

    S’il n’y a aucun message à afficher : ne pas afficher la console
    pour tout champ nommé Verifier.a.0 faire apparaitre un message s’il n’existe pas de champ nommé Recommencer.a.0
    pour tout champ nommé Aide.a.0 faire apparaitre un message s’il n’existe pas de champ nommé Aide.a.1

    Je vais me pencher là dessus.

    Merci beaucoup en tout cas pour ce script !

    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    en réponse à : Vérification #74501
    michel c.
    Participant

    Bonjour, j’ai testé, ça ne fonctionne pas. J’ai déplacé la parenthèse mal placée à la ligne 4 : if (this.getField("R.1." + i) === null) mais j’ai une erreur à la ligne 5 : app.alert("Le champ " + this.getField("R.1." + i).name + " n'existe pas.");

    Doc:Open:5: TypeError: this.getField(...) is null

     

    Sinon, je pensais à quelque chose comme ça mais il me manque quelques lignes de code pour y arriver….

    function verif() {

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);
    }
    if (P1 == "R") {
    //code pour trouver les valeurs mini et maxi de P2→mise en variable amin et amax
    //code pour trouver les valeurs maxi de P3→mise en variable bmin et bmax
    for (var j=amin ; j<=amax ; j++) {
    if (this.getField("P1+"."+j+"."+P3) === null) {app.alert("Le champ "+"P1+"."+j+"."+P3+" n'existe pas");}
    }

    for (var k=bmin ; k<=bmax ; k++) {
    if (this.getField("P1+"."+P2+"."+k) === null) {app.alert("Le champ "+"P1+"."+P2+"."+k+" n'existe pas");}
    }
    }

    if (P1 == "Q") {
    //code pour trouver les valeurs mini et maxi de P2→mise en variable cmin et cmax
    //code pour trouver les valeurs maxi de P3→mise en variable dmin et dmax
    for (var l=cmin ; l<=cmax ; c++) {
    if (this.getField("P1+"."+l+"."+P3) === null) {app.alert("Le champ "+"P1+"."+l+"."+P3+" n'existe pas");}
    }

    for (var m=dmin ; m<=dmax ; d++) {
    if (this.getField("P1+"."+P2+"."+m) === null) {app.alert("Le champ "+"P1+"."+P2+"."+m+" n'existe pas");}
    }
    }
    }

    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74494
    michel c.
    Participant

    Pour l’algorithme, j’ai pensé à autre chose :

    A partir de la je me disait que pour un nom P1 donné, extraire l’indice P2 mini P2 maxi.

    boucle :

    for (var i=P2min ; i<=P2max ; i++) {

    Si un champ P1+”.”+i+”.”P3 n’existe pas, alors afficher un message d’alerte indiquant le nom du champ manquant

    }

     

    pour un nom P1 donné, extraire l’indice P3 mini P3 maxi.

    boucle n°2 :

    for (var i=P3min ; i<=P3max ; i++) {

    Si un champ P1+”.”+P2+”.”i n’existe pas, alors afficher un message d’alerte indiquant le nom du champ manquant

    }

    en réponse à : Vérification #74492
    michel c.
    Participant

    J’ai une petite idée de algorithme mais dans la partie codage il y a un truc qui me dépasse.

    Je pensais commencer comme cela :

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    ...code que je ne sais pas faire....}

    A partir de la je me disait que pour un nom P1 donné, extraire l’indice P2 mini P2 maxi.

    déclarer une variable i = P2max-P2min+1

    Si cette la valeur de cette variable est supérieure au nombre de champs P1+”.”+P2+”.”P3 Alors afficher un message d’alerte indiquant qu’il manque un champ dans la série P1+”.”+P2+”.”P3

    déclarer une variable j = P3max-P3min+1

    Si cette la valeur de cette variable est supérieure au nombre de champs P1+”.”+P2+”.”P3 Alors afficher un message d’alerte indiquant qu’il manque un champ dans la série P1+”.”+P2+”.”P3

    Mais il y a peut être mieux à faire…

    en réponse à : Vérification #74489
    michel c.
    Participant

    Bonjour, en fait beaucoup de scripts dépendent de la bonne numérotation des champs ; quasiment tous en fait.

    Comme à mon habitude, ce formulaire est une petite usine à gaz mais qui fonctionne si les champs sont correctement nommés et numérotés.

    Pour ne citer qu’un exemple, le script verifier va comparer la valeur du champ Q.a.b à celle du champ R.a.b.

    Si l’utilisateur oublie un champ ou le numérote mal, il faudra que je modifie ce script mais quelles valeurs dois-je prendre en compte pour la comparaison?

    Merci

     

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74485
    michel c.
    Participant

    Bonjour, comme je le disais au 1er message, j’aimerais aussi vérifier que les indices des champs qui sont sensés se suivre soient bien des nombres successifs.

    Par exemple je peux avoir des champs qui se nomment R.1.1 ; R.1.2 ; R.1.3 ; R.2.1 ; R.2.2 ; R.2.3 ; R.2.4

    J’aimerais qu’une boite de dialogue prévienne l’utilisateur s’il manque le champ R.2.3 par exemple.

    Pour ces 2 vérifications, cela dépasse mes compétences et je ne sais pas si cela est possible.

    En fait j’aimerais avoir un fichier de base que mes collègues pourront utiliser pour créer des formulaires à leur convenance, cependant lorsqu’ils vont copier et renommer certains champs, il est probable qu’ils renomment mal un champ ou qu’ils en oublient un. Ne connaissant pas le JavaScript, ils ne pourront pas interpréter correctement le message d’erreur de la console.

    Merci

    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    en réponse à : Vérification #74484
    michel c.
    Participant

    Tout est nickel.

    Merci

    en réponse à : Vérification #74475
    michel c.
    Participant

    Merci, j’ai essayé mais la console et la boite de dialogue renvoient un message curieux :

    Champs dupliqués :
    • "Aller,0,1" - 1 fois en page Doc.0.01, 1 fois en page 0 et 11.
    • "Aller,0,1" - 1 fois en page Doc.0.011, 1 fois en page 0 et 111.
    • "Aller,0,1" - 1 fois en page Doc.0.0111, 1 fois en page 0 et 1111.
    • "Aller,0,1" - 1 fois en page Doc.0.01111, 1 fois en page 0 et 11111.
    • "Aller,0,1" - 1 fois en page Doc.0.011111, 1 fois en page 0 et 111111.
    • "Aller,0,1" - 1 fois en page Doc.0.0111111, 1 fois en page 0 et 1111111.
    • "Aller,0,1" - 1 fois en page Doc.0.01111111, 1 fois en page 0 et 11111111.
    • "Aller,0,1" - 1 fois en page Doc.0.011111111, 1 fois en page 0 et 111111111.
    • "Aller,0,1" - 1 fois en page Doc.0.0111111111, 1 fois en page 0 et 1111111111.
    • "Aller,0,1" - 1 fois en page Doc.0.01111111111, 1 fois en page 0 et 11111111111.
    • "Aller,0,1" - 1 fois en page Doc.0.011111111111, 1 fois en page 0 et 111111111111.
    • "Aller,0,1" - 1 fois en page Doc.0.0111111111111, 1 fois en page 0 et 1111111111111.
    • "Aller,0,1" - 1 fois en page Doc.0.01111111111111, 1 fois en page 0 et 11111111111111.

    J’essaye de me pencher un peu dessus mais certaines lignes dépassent mes compétences…

    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Extraire un indice #74464
    michel c.
    Participant

    La parenthèse était au mauvais endroit.

    J’ai modifié ainsi :

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    var a=nomChamp.substring(0, 4);
    var b = nomChamp.split(“.”);
    console.println(“partie 0 : “+a+” ; partie 1 : “+nomChamp[1]+” ; partie 2 : “+nomChamp[2]);

    }

    Pour la partie 1 je n’ai pas de souci. Par contre pour les parties 1 et 2 la console me renvoie le 2ème et le 3ème caractère de chaque nom de champ.

     

    Edit : je viens de comprendre :

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);

    var b = nomChamp.split(".");
    var P1 = (b[0]);
    var P2 = (b[1]);
    var P3 = (b[2]);

    console.println("partie 1 : "+P1+" ; partie 2 : "+P2+" ; partie 3 : "+P3);

    }

     

    Merci beaucoup en tout cas, je n’avais jusqu’à présent pas bien saisi la fonction split.

    Grâce à tes explications je pense avoir bien compris maintenant. Ça va m’apporter beaucoup je pense.

    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    en réponse à : Extraire un indice #74460
    michel c.
    Participant

    Bonjour et merci. Je viens d’essayer avec ce code :

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);

    var b = nomChamp.split(".");
    console.println("partie 0 : "+nomChamp[0]+" ; partie 1 : "+nomChamp[1])+" ; partie 2 : "+nomChamp[2];

    }

     

    Console :

    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : A ; partie 1 : i
    partie 0 : B ; partie 1 : u

     

     

    • Cette réponse a été modifiée le il y a 6 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Champ maitre et champ esclave #74446
    michel c.
    Participant

    Salut, vois si ça te convient.

    Bonne soirée

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74438
    michel c.
    Participant

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

    en réponse à : Vérification #74433
    michel c.
    Participant

    Merci pour cette dernière version.

    Le script précédent marchait parfaitement mais pour celui-ci c’est curieux il me détecte des doublons sur des champs uniques.

    Lors de l’exécution de la fonction, il me détecte le champ RepOpi en double sur les pages 1 et 2 mais il n’y en a pas sur la page 2.

    Si j’efface ce champ, il me détecte ensuite le champ meca qui est toujours en un seul exemplaire et ainsi de suite…

    Et contrairement à l’autre script, je suis obligé de l’exécuter plusieurs fois : une détection à la fois…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Vérification #74431
    michel c.
    Participant

    Merci, c’est parfait

     

    en réponse à : Vérification #74424
    michel c.
    Participant

    Merci beaucoup. J’ai modifié légèrement le texte pour que le message soit plus clair.

    function doublons() {
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    if (typeof this.getField(nomChamp).page=="object") app.alert("Le champ \""+nomChamp+"\" n'est pas unique; il se trouve sur la(les) page(s) : "+this.getField(nomChamp).page,3);
    }
    }

    Maintenant je vais essayer de transformer la valeur this.getField(nomChamp).page pour que la numérotation commence à 1 et non pas à 0.

    Je pensais qu’il fallait convertir cette chaine en nombre avant de lui ajouter 1 mais je crois que ce n’est pas si simple.

    en réponse à : Vérification #74422
    michel c.
    Participant

    Merci, je vais essayer de voir ce que je peux faire.

    Je suppose qu’au départ, je vais devoir lister tous les noms de champs pour les inscrire dans la table.

    Je pensais commencer par quelque chose comme ça :

    function doublons() {
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    }

    var laTable=[.........];

    Je ne maitrise pas du tout les tables mais je vais chercher.

    Merci

    en réponse à : Vérification #74411
    michel c.
    Participant

    Bonjour, malheureusement à mon travail nous avons opté pour un autre logiciel qu’adobe acrobat (PDF XChange editor)

    Je ne pense pas que ce soit compatible. Je viens de regarder, on peut installer des modules supplémentaires mais seulement ceux proposés par l’éditeur.

    en réponse à : Position des champs #74405
    michel c.
    Participant

    Merci, j’avais fait cette modif mais je n’ai pas mis en lien le fichier avec cette modif. Je peux le faire dans la matinée si ça intéresse quelqu’un.

    en réponse à : Position des champs #74384
    michel c.
    Participant

    Je pensais avoir réussi, ça fonctionne parfaitement pour les chapitres 1 et 3 et ça ne marche pas pour le 2ème….J’ai une erreur à la console à la ligne 25 du script corriger : Doc:Open:25: TypeError: r.value.split is not a function

    Je ne vois pas pourquoi le script fonctionne sur les 2 autres chapitres et pourquoi il plante là ….

    Edit : je viens de comprendre : il fallait que je mette r.valueAsString au lieu de r.value.split

     

    • Cette réponse a été modifiée le il y a 6 mois et 2 semaines par michel c..
    • Cette réponse a été modifiée le il y a 6 mois et 2 semaines par michel c..
    • Cette réponse a été modifiée le il y a 6 mois et 2 semaines par michel c..
    • Cette réponse a été modifiée le il y a 6 mois et 2 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74381
    michel c.
    Participant

    Par contre, cette case, remplit sa fonction de tout cocher ou décocher mais la croix ne reste pas lorsqu’on la coche, elle disparait aussitôt, il y a un truc que j’ai du louper….

    Pfff… la couleur du texte était en blanc, voila pourquoi je ne voyais pas la croix…

    Sinon, j’ai mis le script affecté aux cases cAc.a.b en fonction (CorrQuest). Par conte, rien ne se passe si je coche la case cAc.3.0 : toutes les cases sont bel et bien cochées mais sans que cela ne déclenche l’action d’afficher les champs R.a.b en lieu et place des champs Q.a.b

    • Cette réponse a été modifiée le il y a 6 mois et 2 semaines par michel c..
    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74378
    michel c.
    Participant

    J’ai renommé la case qui sert à cocher toutes les cases cAc.a.b (initialement “Case.n” renommée en cAc.n.0) ; l’indice 0 n’étant pas utilisé ça me simplifie la tâche.

    Par contre, cette case, remplit sa fonction de tout cocher ou décocher mais la croix ne reste pas lorsqu’on la coche, elle disparait aussitôt, il y a un truc que j’ai du louper….

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74375
    michel c.
    Participant

    Bonjour et merci.

    J’ai corrigé les 2 premières erreurs que tu mentionnes. Pour la mise en fonction et faire une boucle, je cherche…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74369
    michel c.
    Participant

    Bonjour, petit à petit, j’arrive à avoir ce que je veux, cependant il y a 2 trucs que je ne comprends pas :

    Pour le chapitre 3, lorsque je coche une case uniquement, tout fonctionne comme je le souhaite : Le champ R.a.b prend la place du champ Q.a.b et lorsque je décoche cette même case l’inverse se produit.

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

    L’autre truc que je n’arrive pas à faire, c’est la mise en place de la case : “Case.3” permettant de cocher ou décocher d’un seul coup toutes les cases c.A.c….. (via le script de document : corriger) En fait elles se cochent et se décochent comme je le souhaite mais aucune action liée à leur changement d’état ne se produit…

    Attachments:
    You must be logged in to view attached files.
    en réponse à : Position des champs #74364
    michel c.
    Participant

    J’ai réussi à cocher/décocher toutes les checkboxes de la série…

     

    Attachments:
    You must be logged in to view attached files.
Affichage de 99 réponses de 1 à 99 (sur un total de 422)