Toutes mes réponses sur les forums
- 
		AuteurRéponses
- 
		
			
				
 bebarthMaître des clés bebarthMaître des clés…Il faut réfléchir un peu plus quand on n’écrit pas des expressions régulières tous les jours, mais bon !!! 
 Voilà ce que j’ai fait :Code:var str = this.event.target.value;
 var leTest=/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/;
 var res = leTest.test(str);
 try {
 var n = str.indexOf(« : »);
 if (n>-1) {
 var Hr=str.substring(0, n);
 if (Hr.length==1) Hr= »0″+Hr;
 var Mn=str.substring(n+1,str.length);
 if (res) {
 this.getField(« Heure »).value=Hr+ »h »+Mn;
 } else {
 this.getField(« Heure »).value= » »;
 app.alert({cMsg: »Le format d’heures n’est pas valide. », nIcon:2});
 }
 }
 } catch(e) {
 this.getField(« Heure »).value= » »;
 app.alert({cMsg: »N’oubliez pas les deux points (:) lorsque vous entrez l’heure.nEx : 5:37 ou 21:48. », nIcon:2});
 }Peut être certainement amélioré… 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ma version en utilisant l’instruction switch plutôt que de rajouter des if…else.
 Ça me parait plus clair personnellement, et on peut rajouter des « cas » sans rendre le script plus complexe.
 De plus on place le script en script de document, ce qui évite de le modifier x fois si nécessaire.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Pareil, alors que l’exemple donné dans la fenêtre donne le bon format !
 Comme ça je ne vois pas pourquoi, mais je te propose une alternative : Format « Spéciale » avec un masque arbitraire 99h99.
 L’embêtant c’est qu’il faudrait un script pour vérifier que le dernier nombre est inférieur à 60 !
 On va donc attendre de voir si Merlin a une réponse.
 @+
 :bonjour:16 janvier 2019 à 18:29 en réponse à : Ajout d’une fourchette de validation à un champs de format personnalisé #65108 bebarthMaître des clés bebarthMaître des clésIl faut le modifier légèrement : Code:var g = this.event.target.name;
 var j=0;
 var chaine=this.event.target.valueAsString;
 var zero=parseFloat(chaine.replace(/,/g, « . »));
 if (zero !=0 && this.event.target.value != » ») {
 for (var i=0; i<= chaine.length-1; i++) {
 if ((chaine.substring(i,i+1)== », ») || (chaine.substring(i,i+1)== ». »)) var j=j+1;
 }
 switch (j>1) {
 case true:
 app.alert(« Le format de nombre n’est pas correct. »,3);
 this.resetForm(g);
 this.getField(g).setFocus();
 break;
 default:
 var str = chaine;
 var chaine =str.replace(/ /g, « »);
 var str = chaine;
 var n = str.indexOf(« , »);
 if (n == -1) {var n = str.indexOf(« . »)} ;
 if (n>-1) {
 var entier = chaine.substring(0,n);
 decimales=chaine.substring(n+1);
 } else {
 var entier = chaine;
 decimales= »00″;
 }
 //pour être certain d’avoir 2 décimales
 var decimales= decimales+ »00″;
 var decimales= decimales.substring(0,2);
 var nombre= entier+ », »+decimales;
 var leNombre=(entier*1)+(decimales*1/100);
 }
 if (leNombre>=1 && leNombre<=100) {
 this.event.target.value=nombre;
 } else {
 app.alert(« Le pourcentage doit être compris entre 1,00 et 100,00. »,3);
 this.resetForm(g);
 this.getField(g).setFocus();
 }
 } else {
 this.event.target.value= » »;
 }@+ 
 :bonjour:16 janvier 2019 à 15:30 en réponse à : Ajout d’une fourchette de validation à un champs de format personnalisé #65106 bebarthMaître des clés bebarthMaître des clésbonjour, 
 …et qu’est-ce que ça veut dire alors :…et que le résultat soit un nombre avec les espaces aux décimales et aux centièmes… où sont les espaces dans 75,50 et 25,87 ??? 
 @+
 :bonjour:16 janvier 2019 à 07:27 en réponse à : Ajout d’une fourchette de validation à un champs de format personnalisé #65104 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je n’avais pas vu que tu avais déjà utilisé le script de ce post !… et que le résultat soit un nombre avec les espaces aux décimales et aux centièmes avec une virgule Tu peux donner un exemple de ce que doit être le résultat ? 
 @+
 :bonjour:15 janvier 2019 à 20:06 en réponse à : Ajout d’une fourchette de validation à un champs de format personnalisé #65103 bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Jette un oeil sur ce post dans un premier temps :
 https://abracadabrapdf.net/forum/index.php/topic,3510.0.html
 Sinon, je regarde ça demain.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Il suffit de donner une valeur d’exportation différente par colonne aux boutons, par exemple « A » pour la colonne 1, « B » pour la colonne 2 et « C » pour la colonne 3 puis de compter le nombre de A, de B et de C…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 …après, il y a plusieurs possibilités : soit le numéro aléatoire disparait lorsqu’on décoche la case, soit il reste et n’est généré que lorsque le champ est vide !
 @+
 :bonjour:12 janvier 2019 à 14:04 en réponse à : Transposer avec une condition, une valeur d’un champ à un autre #65096 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Uniquement un script de calcul sur le champ NS :Code:if (this.getField(« Check Box2″).value!= »Off ») {
 this.event.target.value=this.getField(« Nsalle »).value;
 } else {
 this.event.target.value= » »;
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésetc…Donc dans la case » Nombre de pages » le chiffre s’il est entre 1 et 5 pages c’est 15.00$, par contre plus de 5 pages, donc 6, 7, 8 pages etc… c’est 1.00$ la page additionnelle. ??? c’est ce que donne le fichier que je t’ai envoyé !!! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Essaie avec try {} catch(e) {}
 https://www.w3schools.com/js/js_errors.aspCode:try {
 …tu remplis les champs…
 } catch(e) {
 …tu réinitialises les camps en cas d’erreur…
 }Tu peux partager ton fichier si tu veux ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, Exemples : 1. Document de 1 à 5 pages = 15 $ 2. Document de 8 pages = 15 + 3 $ (3 pages supplémentaires) = 18 $ Ce que j’avais compris ici, c’est que si tu indiques la quantité 3, le total doit être de 15$ et non 18$. C’est également ce que je comprends en relisant le document… 
 Sinon, si tu veux 18$ lorsque tu indiques une quantité de 3, il faut écrire :Code:var qty=this.getField(« qt.1 »).value;
 if (qty>0) {
 this.event.target.value=qty+15;
 } else {
 this.event.target.value=0;
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Voici pour le premier champ. A adapter pour l’ensemble !Code:var qty=this.getField(« qt.1 »).value;
 if (qty>5) {
 this.event.target.value=(qty-5)+15;
 } else if (qty>0) {
 this.event.target.value=15;
 } else {
 this.event.target.value=0;
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésdocument vierge ? Pour la version avec un document vierge, tu places le fichier « Vierge.pdf » quelque part ou tu as les droits d’accès, et dans le script il faudra indiquer le chemin de ce fichier (que tu peux connaitre si tu tapes this.path dans la console). 
 Avec cette version, il n’y a plus de boite de dialogue pour fermer le fichier temporaire.
 Tu peux également faire cette version en script d’application.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, script d ‘application , la je décroche… Pour exactement le même résultat que l’action d’hier, ci-joint un fichier .js (une fois dézippé) à placer dans le répertoire Javascript de ton Acrobat. 
 Si tu ne sais pas ou il se trouve, tu peux utiliser cet utilitaire : https://www.abracadabrapdf.net/utilitaires/utilitaires-pdf/show_me_the_path/
 Une fois que tu auras relancer Acrobat, tu trouveras la commande « Imprimer Contrats » en fin de menu Edition.
 Il faudra ensuite te trouver un utilitaire pour créer un raccourcis clavier. Je connais QuicKeys et Keyboard Maestro pour Mac, mais il doit exister la même chose pour PC.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésCa marche nickel je vais l’adapter à mes documents mais si j’ai bien compris on ne peut créer un raccourci clavier. …le but étant d’écrire un seul script pour tous les types de fichier évidemment !! 
 A mon avis, tu devrais te créer un document vierge, ce qui éviterait la boite de dialogue.On pourrait faire un script d’application pour rajouter une commande de menu, mais ensuite il faudra un utilitaire pour lancer cette commande ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésVoici une action qui imprime les pages 3 à 5, 17 et 20 à 24 des fichiers qui comprennent « auto » dans leur nom. 
 Il faudrait adapter cette action avec tous les noms de contrat et les pages correspondantes.
 Ici le script crée un fichier temporaire que l’on doit fermer « manuellement » avec une boite de dialogue sans l’enregistrer. On ne peut pas faire autrement avec cette méthode.
 L’autre méthode qui éviterait cela serait de créer un fichier « vierge » placé n’importe où (mais avec des droits accès) que l’on viendrait ouvrir puis refermer automatiquement sans la boite de dialogue !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…je pense que petit à petit, en posant les bonnes questions on devrait y arriver ! 
 Pour un même type de contrat, les pages à imprimer sont-elles toujours les mêmes ? Sont-elles consécutives ? Veux-tu faire du recto/verso même avec des pages non-consécutives ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésOK ! 
 Est-ce que l’on pourrait dire par exemple, si le nom du fichier contient « auto » on imprime les pages… et s’il contient « habitation » les pages…. ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésBonne Année Merlin ! on ne sait pas forcément combien il y a de chiffres dans le numéro de membre. …sauf celui qui connait son numéro d’adhérent ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour et Bonne Année, 
 Tu pourrais mettre un masque arbitraire pour vérifier déjà le format du numéro d’adhérent !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour & Bonne Année ! 
 Oui c’est possible si l’on parle bien d’Acrobat Pro, pas d’Adobe Reader.
 Après, il faudrait en savoir un peu plus sur le nom des fichiers, leur emplacement, doit-on imprimer tout le temps les mêmes pages sur les mêmes documents… On verra ensuite ce qui est le plus judicieux.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, Désolé j’ai un message d’erreur sur le script. C’est bien de le savoir, mais c’est mieux de le connaître ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Désolé pour ma réactivité qui est à peu près la même que la vitesse de mon wifi en ce moment… ça devrait revenir après les fêtes !
 Si on ne veut pas intégrer les numéros au fichier, on pourrait déjà vérifier le format de ce numéro !
 Je suppose que le numéro d’adhérent possède un format qui lui est propre (ABC-9876-DEF par exemple). 9a éviterait déjà que l’utilisateur n’entre n’importe quoi dans ce champ.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 bien sûr que c’est possible, mais le plus simple serait de partager ton fichier afin d’écrire directement le script avec les noms des champs !
 Par contre, l’utilisateur pourrait rentrer n’importe quoi comme numéro d’adhérent ? Comment vérifier que ce numéro est valide ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ce qu’il faut écrire :Code:if (this.event.target.value != « ») {
 this.event.target.display = display.visible;
 } else {
 this.event.target.display = display.noPrint;
 }…en gros, si le champ n’est pas vide on l’imprime, sinon on ne l’imprime pas ! 
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_properties.htm%23TOC_displaybc-19&rhtocid=_6_1_8_31_1_18
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Merlin a énumérer tous les problèmes auxquels je pensais.
 Voici donc ma suggestion qui ne tient compte que de cases à cocher du questionnaires et qui indique l’ordre des réponses avec modifications possibles des réponses.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésy’a t’il un moyen d’exporter les données meme si un champs n’est pas remplis? Afin de respecter a chaque fois le meme format d’exportation des donnes pour que ça corresponde aux titres du fichier excel? Code:for (var j=0; jif (otherDoc.getField(lesChamps[j]).value== » ») { 
 var lesDonnees=lesDonnees+ »–t »;
 } else {
 var lesDonnees=lesDonnees+otherDoc.getField(lesChamps[j]).value+ »t »;
 }
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je ne vais pas pouvoir regarder aujourd’hui, mais j’essaye ce weekend !
 Limiter le nombre de choix, ce n’est pas le plus compliqué. Il faut pouvoir garder et indiquer l’ordre de sélection avec des modifications possibles…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Dans mon exemple j’ai créé un fichier sous Excel enregistré au format .xls (j’avais fait un teste au format .xlsx pour vérifier si ça fonctionnait aussi, mais non…).
 Peut-être qu’une fois attaché au formulaire, Acrobat le transforme en .csv !!!
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésOui, il faut remplacer 2 fois le nom de fichier Data.xls par le nom de ton fichier Excel. 
 Attention, ça ne foctionne pas avec l’extension .xlsxCode:…
 var oFile=this.getDataObjectContents(« Data.xls »); // <- ICI
 var lesDonnees=util.stringFromStream(oFile);
 var lesDonnees=lesDonnees+ »rn »;
 for (var j=0; jvar oFile=util.streamFromString(lesDonnees); 
 this.setDataObjectContents(« Data.xls », oFile); // <- ICI
 …@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésJ’ai pas compris la partie « si tu ne veux pas supprimer les lignes » Ce sont les lignes du script qu »il faut modifier comme ceci : Code:…
 // Initialisation du fichier Data.xls
 // for (var j=0; j// var oFile=util.streamFromString(lesDonnees); 
 // this.setDataObjectContents(« Data.xls », oFile);
 …ou les supprimer complètement. Une autre question (décidément :siffle: ) comment je change le fiichier excel qui répertorie mes données? A chaque fois ça va dans le fichier data je n’arrive pas à exporter les données dans un fichier déjà existant. Regarde les icônes au dessus du fichier, tu peux ouvrir le fichier, l’enregistrer, l’exporter ou le supprimer et en importer un autre !!! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, y’a t’il moyen d’enregistrer ça dans un fichier excel déjà existant à la suite d’autre enregistrement ? Pour Enregistrer à la suite du documen Excel, Tu enlèves ces 4 lignes : 
 Si tu ne veux pas supprimer les lignes, tu places 2 slash en début de ligne (comme avant Initialisation…).Code:…
 // Initialisation du fichier Data.xls
 for (var j=0; jvar oFile=util.streamFromString(lesDonnees); 
 this.setDataObjectContents(« Data.xls », oFile);
 …Mais tu n’auras plus les titres des colonnes automatiquement. Tu peux les créer lorsque ton fichier Excel est vierge, ils seront conservés. 
 Par contre, ce sera toujours le même fichier attaché au document. Si les champs à extraire varient, les colonnes ne seront plus correctes.
 Tu peux extraire ce fichier Excel.Et enfin je comprends pas trop l’intérêt du fichier sequ tu peux m’expliquer ça de façon plus explicite? Si tu double-cliques sur le fichier .sequ, tu vas importer une action dans Acrobat Pro. 
 Ensuite, au lieu d’appuyer sur le bouton « EXPORTER », tu lances l’action (outil Assistant d’actions). Ça fait exactement la même chose, et en plus ça t’enregistre ton document sous le nom « Données Formulaires du « +jour+ »-« +mois+ »-« +annee+ ».pdf »
 Ce document est enregistré au même niveau que ton document d’origine. Si la prochaine fois tu reparts de ce nouveau document, les données seront enregistrées à la suite du document Excel (à condition de supprimer les 4 lignes) et un nouveau document sera re-créé avec une nouvelle date… A tester !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJ’ai une erreur qui me dit « au moins un nom de fichier doit être renseigné », alors que la liste est remplis. Et une autre erreur « le champ « undefined » n’a pas été trouvé. 
 C’est parce que j’avais laissé le script d’enregistrement dans le bouton alors qu’il ne peut fonctionner qu’avec une action.
 Remplace ce fichier, ça devrait mieux marcher.
 Essaye aussi l’action (fichier .sequ) qui fonctionne avec en plus un enregistrement avec la date.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJ’ai oublié de préciser, pour que l’on puisse copier les valeurs des champs des formulaires, il faut que les formulaires aient tous un script de document : Code:this.disclosed = true;C’est obligatoire pour copier d’un document à un autre ! Et dernière question si cette méthode fonctionne comment je fais pour augmenter la liste du nombre de champs? Pour augmenter le nombre de champs, tu créés des champs supplémentaires nommés champ.10, champ.11, champ.12, etc. 
 et tu modifies le script :Code:…
 for (var i=0; i<=9; i++) {
 …
 Ici 9 était le numéro du dernier champ. Tu le remplaces par le numéro de ton dernier champ.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Avec les fichiers exemples?
 Peux-tu faire les 2 mêmes copies d’écrans que j’ai faites, juste pour voir.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésce post ? 
 https://abracadabrapdf.net/forum/index.php/topic,3406.msg20057.html#msg20057
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ce que je te propose :
 Tu places tes formulaires à traiter dans un même dossier « Formulaires » qui se trouve dans le même répertoire que « Exporter les champs vers Excel_BB.pdf ».
 Tu lances ce fichier, tu renseignes les noms de champs à extraire (j’en ai mis jusqu’à dix mais on peut modifier).
 Tu copies/colles les noms de fichiers dans le champ approprié (comme tu es sur Mac, ça se fait tout seul… je crois que ce n’est pas possible sur PC sans un utilitaire).Et tu appuies sur le bouton. Toutes les données seront copiées dans le fichier Excel attaché.
 Si tu veux une sauvegarde automatique de ce fichier pdf, il faudra passer par une action (fichier .sequ joint) ou ajouter un script d’application si tu veux absolument resté avec le bouton.
 Tu testes et tu me dis…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ce que je te propose pour ajouter un élément soit en début, soit en fin de liste.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésTu as une liste déroulante. 
 Tu as un bouton pour rajouter un article, mais où se trouve l’article à rajouter ? dans un champ texte ?
 Tu veux créer une autre liste ? Pourquoi pas modifier la première ?
 Tu veux uniquement ajouter un article, pas en retirer ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je pense que ça demande une petite explication…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésoui, c’est ça ! 
 Mais maintenant il faut intégrer tous les formulaires à ce script, et ça dépend complètement de ce que tu peux/veux faire…
 Ou se trouvent les fichiers ? Peut-on les déplacer ?
 Comment sont-il nommés ? Peut-on trouver un algorithme pour appeler les fichiers ou doit-on copier/coller les noms quelque part ?
 …en découlera la faisabilité et la complexité du script !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_getDataObjectContentsbc-43&rhtocid=_6_1_8_23_1_42
 A cette adresse, tu trouveras l’exemple qui me semble le plus approprié à ce que tu veux faire.
 Tu regardes et tu demandes si tu veux de l’aide…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 En fin de compte, dans mon fichier j’ai rajouté une case à cocher Opt8. et quelques lignes en fin de fonction « lesOptions » :Code:…
 }
 prixOptions=prixOptions+opt7;
 if (this.getField(« Opt8. »+indice).value!= »Off ») {
 opt8=this.getField(« Prix. »+indice).value*0.015;
 } else {
 opt8=0;
 }
 prixOptions=prixOptions+opt8;
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Il faudrait que je me replonge dans le fichier que je t’avais proposé et je ne sais pas si tu l’as utilisé tel quel !
 D’après ce que je me souviens il y avait une case invisible avec le prix sans options. Il faudrait donc rajouter une case à cocher et si elle est cochée (!= »Off »), tu rajoutes les 1,5%.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Le plus simple serait que tu partage ton document, mais ne serait-ce pas la variable en script de document qu’il faudrait modifier…
 @+
 :bonjour:12 décembre 2018 à 13:18 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64528 bebarthMaître des clés bebarthMaître des clésbonjour, Le fichier/dossier est introuvable » ou quelque chose du genre… D’après ce que je comprend, il faudrait modifier la ligne ci-dessous pour avoir : Code:…
 cPath: Dossier+ »Imprimer ces Fichiers\ »+chaine…J’ai l’habitude d’écrire pour des Mac où les chemins s’écrivent avec des « / » alors que sur PC ce sont des « « . 
 Tu me dis…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Il faut écrire :
 var regxp=/^[0-9DJ]$/;
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je t’ai fait un nouveau ficher avec lequel tu peux retirer les numéros aléatoires.
 Petit plus qui n’était pas obligatoire, je reclasse les numéro dans l’ordre dans le champ « Invisible » même si ça ne sert à rien vu qu’il l’est…
 J’ai mis les scripts en fonctions, ce qui évite de les copier/coller dans tous les champs à chaque modification. Ici il n’y a que 8 patients, mais imagine si tu veux adapter ton fichier pour 200 !!! :geek:
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Pour vider le champ « Invisible », tu modifies la fin du script :Code:…
 } catch(e) {
 this.getField(« Number. »+indice).value=this.getField(« Invisible »).value;
 this.getField(« Invisible »).value= » »;
 }
 this.event.target.readonly=true;Il y a plusieurs solutions pour re-remplir ce champ, je t’en soumettrai une demain ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici le (enfin) résultat !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…encore mieux, juste un script de touches personnalisé : Code:var regxp=/^[0-B]$/;
 if(!event.willCommit) {
 if(event.change.length>0 && regxp.test(event.change)==false) {
 app.beep(0); // Le bip n’est pas obligatoire…
 event.rc=false;
 } else {
 var aRslt = event.value.split(« »);
 aRslt.splice(event.selStart, event.selEnd – event.selStart, event.change);
 var strTest = aRslt.join(« »);
 var rpat = /^w{0,1}(d{0,5}?)?$/; // 5 = nb de chiffres
 event.rc = rpat.test(strTest);
 }
 } else {
 var rpat = /^(w{1}d{5})?$/; // 5 = nb de chiffres
 event.rc = rpat.test(event.value);
 }Il faut indiquer (2 fois) le nombre de chiffres que tu désires (ici c’est 5). 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Tu pourrais mettre en script de format personnalisé :Code:event.value = util.printx(« A99999 », event.value);avec autant de « 9 » que de chiffres que tu veux indiquer, et en script de touches personnalisé : Code:var regxp=/^[0-B]$/;
 if(!event.willCommit) {
 if(event.change.length>0 && regxp.test(event.change)==false)
 {
 app.beep(0);
 event.rc=false;
 }
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, C’est la dernière demande concernant les montants promis !! :Ooops: :siffle: Il n’y a pas de soucis, le problème est que je ne suis pas certain de comprendre ce que tu veux que je fasse. 
 Dans ton fichier il n’y a pas de champ ni au format français ni au format US. Est-ce que tu veux que je modifie le texte ?
 Dans ce cas il faut refaire des pavés car les texte sont des images.
 Tu me dis…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, Avant: 1 111.11 
 Ils doivent maintenant s’inscrire: 1,111.11D’après ce que je lis, ce n’est pas l’inverse ??? 
 La différence entre les champs français et anglais ne serait donc que le symbole de séparation des décimales (, ou .).
 Correct ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voila ! Dans le fichier joint il y a un champ « Invisible » qui est… invisible et qui, une fois réinitialisé, est égale à « 1,2,3,4,5,6,7,8 ».
 Puis le script dans chaque bouton (qui pourrait être en script de document) :Code:var str = this.event.target.name;
 var n = str.indexOf(« . »);
 var indice = parseInt(str.substring(n+1));
 var str = this.getField(« Invisible »).value;
 try {
 var laTable = str.split(« , »);
 var n=Math.floor(Math.random()*laTable.length);
 var nb=laTable[n];
 this.getField(« Number. »+indice).value=nb;
 laTable.splice(n, 1);
 this.getField(« Invisible »).value=laTable.toString();
 } catch(e) {this.getField(« Number. »+indice).value=this.getField(« Invisible »).value}
 this.event.target.readonly=true;Ici, j’ai mis les boutons en lecture seule une fois que l’on a appuyé dessus, et un bouton de réinitialisation de tous les champs. 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, …Ils doivent maintenant s’inscrire: 1,111.11 Ce n’est pas ce que j’ai fait ? 
 @+
 :bonjour:29 novembre 2018 à 21:49 en réponse à : Formules de calcul qui disparaissent quand on change de champs #64967 bebarthMaître des clés bebarthMaître des clésbonsoir, … lorsque je reviens un ou deux champs, pas toujours les mêmes, disparaissent. Ils disparaissent comment ? Ils sont cachés ou effacés ? 
 Pour comprendre un problème aléatoire, il vaudrait mieux que tu partage ton fichier.
 As-tu essayé plusieurs ordinateurs ou plusieurs versions d’Acrobat ? Toujours le même résultat ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je ne pense pas que se soit la meilleure solution…
 Je ne pourrai pas regarder ce soir, mais pour comprendre :
 Il y a donc un bouton devant chaque champ. Lorsqu’on appuie sur le bouton, cela tire un nombre aléatoire de 1 à 8. Que se passe-t-il si on appuie une deuxième fois ??? Ne devrais-tu pas mettre des boutons radio ou des cases à cocher ???Y a-t-il uniquement 8 patients, ou plus et seulement 8 peuvent recevoir un numéro ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Voici ma proposition.Code:var laTable=[1,2,3,4,5,6,7,8];
 for (var i=1; i<=8; i++) {
 var n=Math.floor(Math.random()*laTable.length);
 var nb=laTable[n];
 this.getField(« Number. »+i).value=nb;
 laTable.splice(n, 1);
 }J’ai rajouté un point dans le nom des champs car c’est plus simple lorsqu’on duplique… 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Je t’ai fait une version où tu n’auras plus qu’à copier/coller les champs pour les dupliquer, sans te préoccuper du script. Il faudra juste renommer ces champs.
 Les champs français doivent se nommer FR. plus un nombre, les champs anglais EN. plus un nombre.Ces nombres ne sont pas nécessairement successifs (1, 5, 99, 52, 12…).
 Les champs « TOTAL » se nomment TOTAL_EN et TOTAL_FR et ne doivent pas être renommer (ou il faut modifier le script).
 Tu me dis si cela s’il y aurait des adaptations à faire.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésPour ce que j’ai en tête, tu n’auras qu’à copier/coller les champs sans te préoccuper du reste. 
 Il faudra juste nommer FR.1, FR.2, etc les champs français et EN.1, EN.2, etc les champs anglais (et sans limite du nombre de champs).
 Le reste devrait se faire tout seul. Il y aura quand même un ou deux scripts de document, mais tu ne devrais avoir besoin d’y toucher.
 J’essaye pour la fin de semaine !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 C’est surtout le temps qui me manque…
 J’essaye de te faire ça rapidement.
 @+ :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici donc ce que je te propose. J’aurais pu optimiser un peu plus le script, mais bon !
 Je te laisse le soin de le faire si tu le désires…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Arrivé un moment, il faut choisir entre « complexité » et « compréhension »… surtout en fonction du temps à consacrer !
 Je dis ça car il aurait été encore possible de « réduire » la table (sans le premier élément, mais ça compliquait le script) ou mettre les prix des options en table (mais je n’ai pas eu le temps de peaufiner).
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je pensais avoir le temps de regarder aujourd’hui mais ce ne sera pas le cas.
 J’essaie demain…
 @+
 :bonjour:26 novembre 2018 à 11:54 en réponse à : Messages d’alerte + vérification des champs pendant enregistrement #64885 bebarthMaître des clés bebarthMaître des clésJ’ai trouvé la solution depuis ! Bonjour, 
 Commentaire très intéressant qui aidera certainement d’autres personnes à résoudre leur problème !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ce que je t’ai fait.
 Je n’ai pas eu le temps de tout tester car je pars en week-end.
 Je te laisse étudier et on en reparle lundi.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 N’est-ce pas le même sujet que l’on avait traité ensemble au mois de juin dernier ?
 https://abracadabrapdf.net/forum/index.php/topic,3510.msg21111.html#msg21111
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Il faut que je trouve un moment ( :priere: ), et je regarde !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour,Utilise « valueAsString » plutôt que « value », ça évitera que le script prenne les traits d’union pour des signes « moins ».Quant à renommer les champs, il faudrait pouvoir mettre un index correspondant au numéro de ligne par exemple. On pourrait alors construire des boucles avec les scripts, ce qui éviterait de retaper x fois la même chose ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, cela implique que peut importe la version d’acrobat, une image pourra être chargé? …du moins les versions depuis pas mal d’années !!! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Voici ce que j’ai fait. Je te laisse étudier ça.
 J’ai essayé d’adapter un script par rapport aux éléments que j’avais, mais personnellement j’aurais fait ça différemment. Par contre il aurait fallut renommer les champs et ré-écrire certains scripts !
 https://we.tl/t-qHozUizRCT
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJ’essaye de te faire un exemple sur la copie que j’ai ce soir ou demain matin ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 …et désolé pour cette réponse un peu tardive.
 Il faudrait faire juste une table de correspondance avec le référence SKU et son prix.
 En ce qui concerne les options, si telle case est cochée la variable correspondante est le prix, sinon elle est à 0. Ensuite tu additionnes le prix de la référence avec toutes les variables option (même celles à zéro) et ça te donne le prix total.
 Je vois que ton formulaire commence à être un peu complexe, et je pense que certaine opérations devrait passer en « fonction », ce qui t’éviterait d’écrire x fois la même chose, mais cela demande de revoir un peu le nom des champs…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Quelle est la version Reader utilisée ??? DC également ???
 J’ai fait un essai avec Adobe Reader DC et il ne semble pas y avoir de problème.
 J’ai pu importer des images .jpg ou .png
 Pas de soucis apparent non plus avec le texte.
 Avec Adober Reader XI en revanche je n’ai pas de problème de texte mais effectivement il est impossible d’importer des images .jpg ou .png
 D’après moi cela vient du type de champ « Champ Image » qui n’existai pas dans les version précédentes.
 A mon avis tu devrais remplacer ces champs par des boutons, cela devrait fonctionner.Merlin, une autre solution ??? @+ :bonjour:  bebarthMaître des clés bebarthMaître des clésbonjour, 
 J’espère que tu ne vas pas t’amuser à écrire à chaque fois les case qui doivent ête encadrée pour chaque cas !!!Voici don un script qui va t’éviter cette tâche :Code:var nb=5; //Nombre d’images
 function effacer() {for (var i=1; i<=nb; i++) this.getField("Image"+i).strokeColor=color.transparent;}
 effacer();
 var lesImages = new Array();
 switch (event.value) {
 case « 1 »:
 var lesImages = [1,3,5];
 break;
 case « 2 »:
 var lesImages = [2,3,4,5];
 break;
 case « 3 »:
 var lesImages = [1];
 break; //Normalement, pas besoin de break pour le dernier cas
 }
 if (lesImages.length!=0) {
 for (var i=0; ithis.getField(« Image »+ lesImages).strokeColor=color.red; 
 }
 } else {
 effacer();
 }Tu n’a plus qu’à définir les différent cas ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 Désolé, j’ai été un peu pris cet après-midi. Du coup je viens de faire une adaptation spécifique à ton formulaire.
 J’essaierai de faire une version « générale » prochainement.
 Donc, ci-joint une action qui renomme tes 2 champs.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJe regarde dans l’après midi ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJe ne vois pas le champ « Etat de fonctionnement » !!! Est-ce le champ « Statut » ??? 
 Je te propose de renommer ces champs avec le numéro du contrat en suffixe. Ça te va ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Il n’est pas possible de renommer un champ via JavaScript, par contre il y a une solution.
 J’ai écris un script pour une utilisation perso qui va chercher tous les paramètres d’un champ, qui efface ce champ et qui créé un nouveau champ avec toutes les propriétés du champ supprimé mais avec un nouveau nom.
 Je n’ai pas suivi ce post depuis le début, mais si ça t’intéresse je pourrais adapter mon script à ton formulaire. Il faudrait me faire passer un fichier et me dire quels champs et comment les renommer…
 Ensuite, je t’enverrai une action.
 Tu me dis…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je crois que j’ai oublié de répondre… désolé !Dans la « table » que j’ai présentée (message précédent plus haut), est-ce possible d’ajouter un prix pour chacun des items et de l’afficher dans une autre zone texte? Ici, dans les tables, on définit chaque élément d’une liste avec 1 ou 2 valeurs. Si on indique une seule valeur, c’est la valeur de l’élément (qui est affichée dans la liste), s’il y a 2 valeurs, la première représente la valeur de l’élément et la seconde la valeur d’exportation (celle qui sera utilisée pour un éventuel « calcul »). 
 Dans le premier cas il n’est pas nécessaire de mettre des crochets (« Faire un choix » suffit au lieu de [« Faire un choix », » »]) alors que dans le deuxième cas les crochet sont impératifs pour séparer les différents éléments ([« Cabinet bout ouvert (sans panneau Bout – E1) », »HROK-STOC-8XXXXX »]).
 Si tu indiques un intitulé et une référence pour chaque élément de ta liste, tu ne pourras donc pas indiquer une troisième valeur. Soit tu indiques le prix avec la référence, soit il faut créer une autre table avec les références/prix. Dans ce cas, il serait préférable que les listes ailles chercher les référence dans cette même table, ce qui évite d’avoir 2 fois à taper la même référence. C’est plus sûr en cas de modifications… Par contre cela demande à réécrire le script, et c’est un peu de boulot !
 J’espère avoir été clair.
 @+
 :bonjour:14 novembre 2018 à 14:57 en réponse à : Exporter les données de plusieurs formulaires vers excel #64910 bebarthMaître des clés bebarthMaître des clésbonjour, Je possède la version pro DC d’acrobat. Moi j’ai une version Mac, mais je suppose que c’est au même endroit… 
 Outils : Préparer le formulaire, puis « Autres » !
 @+
 :bonjour: bebarthMaître des clésCode:if (this.getField(« CET perenne 2017 ouv/ali »).value!= »Off » && this.getField(« congés annuels »).value!= » » && this.getField(« jours de RTT »).value!= » » && this.getField(« Total »).value!= » ») { bebarthMaître des clésCode:if (this.getField(« CET perenne 2017 ouv/ali »).value!= »Off » && this.getField(« congés annuels »).value!= » » && this.getField(« jours de RTT »).value!= » » && this.getField(« Total »).value!= » ») {
 this.event.target.value = this.getField(« solde CET »).value – 20;
 } else {
 this.event.target.value = « »;
 }@+ 
 :bonjour: bebarthMaître des clésCode:{this.event.value = this.getField(« solde »).value = this.getField(« solde CET »).value – 20;} bebarthMaître des clésCode:{this.event.value = this.getField(« solde »).value = this.getField(« solde CET »).value – 20;}Ça ne veut rien dire… Il y a deux égalités dont une avec la valeur de la case à cocher qui est « Oui » ! 
 Il faudrait écrire :Code:{this.getField(« solde »).value = this.getField(« solde CET »).value – 20;}De plus, il faudrait plutôt mettre un script en calcul de ton champ solde, car ici le script n’est lancé que lorsque l’on coche/décoche la case. Si on change une autre valeur le script ne sera pas lancé et le solde sera donc faux !!! 
 @+
 :bonjour:14 novembre 2018 à 12:01 en réponse à : Messages d’alerte + vérification des champs pendant enregistrement #64879 bebarthMaître des clés bebarthMaître des clésbonjour, J’ai essayé de créer des lignes de code en regardant les différents sujets du forum, j’avais un début, mais après ça devenait difficile avec les conditions à ajouter. Est-ce qu’il t’est possible de partager le formulaire avec ce que tu as déjà écris ? 
 Tu ne commence pas par le plus simple… pour enregistrer avec un bouton, il va falloir ajouter un plug-in sur tous les postes qui vont traiter ce formulaire. C’est envisageable ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Ne pourrais-tu pas partager ton fichier ou au moins un fichier avec les champs concernés. Ce serait plus pratique car je n’ai pas beaucoup de temps aujourd’hui…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésEncore une fois, je ne peux que te conseiller de simplifier le nom des champs ! 
 En plus, ça simplifie beaucoup la lecture du script.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…c’est au tout début : 
 If (this.getField(« CET perenne 2017 ouv/ali« ).value!= »Off »…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 D’après ce que je comprends, essaie ça :Code:If (this.getField(« CET perenne 2017 ouv/ali).value!= »Off » && this.getField(« congés annuels »).value!= » » && this.getField(« jours de RTT »).value!= » » && this.getField(« Total »).value!= » ») {
 this.getField(« solde »).value=this.getField(« solde CET »).value – 20;
 } else {
 this.getField(« solde »).value= » »;
 }Par contre, les noms des champs ne doivent contenir ni espaces, ni caractères accentués, ni caractères spéciaux… 
 @+
 :bonjour:13 novembre 2018 à 13:32 en réponse à : Messages d’alerte + vérification des champs pendant enregistrement #64874 bebarthMaître des clés bebarthMaître des clésbonjour, Le logiciel sera PDF. J’aimerais que dès que la personne appuie sur le bouton « enregistrement »… Je présume que tu veux dire Adobe Reader ou Acrobat Pro… 
 Lorsque tu appuies sur le bouton, tu souhaiterais uniquement enregistrer le fichier ou l’envoyer par e-mail ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJ’avais également pensé à cette solution, mais pour moi les images étaient plus masquées que grisées… 
 En fait, tout dépend du résultat final que l’on veut : voir ou ne pas voir, telle est la question (to see or not to see, that is the question) :geek:
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je pense qu’il faudra plutôt penser à encadrer les images.
 Je ne vois pas comment les griser !
 Voici un exemple.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Peux-tu partager un fichier ?
 @+
 :bonjour:12 novembre 2018 à 07:35 en réponse à : Messages d’alerte + vérification des champs pendant enregistrement #64872 bebarthMaître des clés bebarthMaître des clésbonjour, …vérification des champs pendant l’enregistrement…. 
 …un message d’alerte se déclenche à l’enregistrement : Nom, prénom, date de naissance, service.Tu parles d’enregistrement, mais quel sera le logiciel de l’utilisateur ? 
 On peut afficher un message si les champs ne sont pas remplis, mais cela n’empêchera pas l’enregistrement via la commande de menu « Enregistrer » !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésMerlin, 
 C’est quoi des « named icon objects », parce que j’ai essayé de mettre des images dans des boutons et le résultat est toujours null !!!
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, en fait j’ecris un mail qui recupere des donnees Je ne sais pas comment tu fais, désolé ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 je n’ai pas compris s’il y avait une question ! :geek:
 @+
 :bonjour:
- 
		AuteurRéponses

