Toutes mes réponses sur les forums
- 
		AuteurRéponses
- 
		
			
				
 bebarthMaître des clés bebarthMaître des clésbonsoir, 
 regarde ce post :
 https://abracadabrapdf.net/forum/index.php/topic,3092.msg17935.html#msg17935
 et si tu ne comprends pas, partage un fichier en explicant exactement ce que tu souhaiterais faire.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Ce que je ferais, c’est créer une action composée de 2 actions « Réduire la taille du fichier » et « Enregistrer » avec option « optimisation PDF », puis lorsque tu lances l’action, tu choisis soit « Ajouter des fichiers » soit « Ajouter un dossier ».
 @+
 :bonjour:19 mars 2018 à 17:17 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63656 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Si je comprend bien, c’est le document initial complet auquel tu rajoutes une couverture numérotée !
 Sur la couverture, il n’y a que les 2 zones de textes ???
 Effectivement, les syntaxes JavaScript d’Acrobat ne sont pas exactement celles que tu as utilisées.
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FJavaScript_API.htm
 J’essaye de regarder ça pour demain.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…le plus simple pour connaitre le chemin à indiquer : - Tu places un fichier à l’endroit où tu veux enregistrer tes nouveaux fichiers avec les noms des communes
- Tu ouvres ce fichier avec Acrobat
- Tu ouvres la console (cmd J sur mac, ce doit être ctrl J sur PC)
- Tu tapes « this.path; » puis la touche enter du clavier numérique
- Le chemin du fichier s’affiche dans la console
- Tu copies ce chemin, sans le nom du fichier
- Dans le script, tu modifies cette ligne
- [/list]
Code:newDoc.saveAs(repertoire+ville+ ».pdf »);en Code:newDoc.saveAs(« le chemin copié »+ville+ ».pdf »);- …en mettant les guillemets.
 
 [/list]Normalement, si tu as les droits dans le répertoire, ça devrait fonctionner. 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici en pièce jointe le fichier action que je te propose.
 Ici, j’extrais la page avant de rechercher le mot COMMUNE puis les mots qui suivent pour composer le nom de la commune. Cela implique donc que l’on doit trouver le mot « COMMUNE » sur toutes les pages. Si ce n’est pas le cas il faudra réorganiser le script.
 Si tu n’as pas de sous à dépenser et que tu es prêt à te prendre un peu la tête, essaye cette action…
 Pour ma part, je me suis effectivement un peu « pris la tête », car à force de prendre des petits bouts de scripts à droite à gauche, on arrive à prendre des variables de mêmes noms et ça ne le fait pas… Mais bon, j’ai connu des prises de têtes bien plus compliquées !!!
 Tu me dis ce que tu en penses et si le mot « COMMUNE » n’est pas obligatoirement sur toutes les pages, on fera différemment.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 A mon avis c’est faisable, mais ça demande un peu de boulot !
 A ce que je comprend les noms de communes ne sont pas des champs.
 Sur la même ligne de texte que celui du nom de la commune, peut-il y avoir d’autres textes ???? en gros, comment savoir si le nom de commune comporte un ou plusieurs mots ???
 J’essaie de voir ça lundi.
 Bon weekend.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Le propre du bouton radio est de pouvoir lui attribuer plusieurs valeurs selon le bouton coché, ce qui évite d’avoir plusieurs variables…
 Essaye d’adapter ce script de calcul (j’espère ne m’être pas trompé dans les formules) :Code:var a1 = this.getField(« rang »).value;
 var tx = this.getField(« taux »).value;
 var bt = this.getField(« bouton »).value;
 switch (bt) {
 case « boutonGauche »:
 if (a1 >> 1) {
 var res = a1*3.5;
 } else {
 var res = 3.5;
 }
 break;
 case « boutonDroit »:
 if (a1 >> 0) {
 var res = 250+(a1-2)*50;
 } else {
 var res = 250
 }
 }
 if (a1 == 0) var res = 0;
 this.event.target.value = res * tx;Pour ma part, je ne suis pas professeur de JavaScript, mais je ne suis pas favorable à supprimer le « this. » même si on ne travaille qu’avec un seul fichier ouvert et qu’il peut paraître inutile. 
 @+
 :bonjour:13 mars 2018 à 11:05 en réponse à : Enregistrement de formulaire : autoriser seulement une copie #63561 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Si le document doit être ouvert plusieurs fois, il faudrait peut-être rajouter une ligne pour supprimer le script de document :Code:app.execMenuItem(« SaveAs »);
 this.removeScript(« monScript »); // « monScript » est le nom du script de document créésinon, à chaque ouverture, on aura la fenêtre d’enregistrement sous… 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJ’avais fait ce fichier dans un post précédent. 
 Regarde si on pourrait l’adapter à ton problème.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…oui, mais le formulaire généré pour envoyer au client est fait à partir d’Acrobat Pro ou d’Adobe Reader ? 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésJe viens de m’apercevoir que je t’ai dis une bêtise… 
 en script de document, il faut écrire :Code:var ok = « OK »;sinon, plus de message ! Lorsqu’on aplati les champs, ce ne sont plus des champs (donc plus modifiables). Les valeurs des champs sont assimilées à du texte. 
 fait un essai et tu comprendras certainement mieux.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je te conseille déjà de faire des essais sur des copies de fichiers….
 Si tu enregistres et que ton fichier n’est pas aplati, tu auras ce message (cf. copie d’écran).
 Si OUI, les champs sont aplatis tu ne peux donc plus les modifier. Si NON tu peux encore les modifier.
 Lorsque les champs sont aplatis, il n’y a plus de message !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 et quelle sera l’utilisation finale ? avec Adobe Reader ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je ne sais pas ce que pensera Merlin sur le principe, mais si tu colles :Code:var ok = « pas OK »;en script de document, et ce script : Code:try {
 if (ok== »OK ») {
 var enreg = app.alert({
 cMsg: « u0041u0076u0065u007Au002Du0076u006Fu0075u0073u0020u0074u0065u0072u006Du0069u006Eu00E9u0020u0064u0065u0020u0072u0065u006Du0070u006Cu0069u0072u0020u006Cu0065u0020u0066u006Fu0072u006Du0075u006Cu0061u0069u0072u0065u0020u003Fu000Du0020u000Du0041u0054u0054u0045u004Eu0054u0049u004Fu004Eu000Du0020u000Du2022u0020u0053u0069u0020u004Fu0055u0049u0020u0076u006Fu0075u0073u0020u006Eu0065u0020u0070u006Fu0075u0072u0072u0065u007Au0020u0070u006Cu0075u0073u0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u002Eu000Du2022u0020u0053u0069u0020u004Eu004Fu004Eu0020u0076u006Fu0075u0073u0020u0070u006Fu0075u0072u0072u0065u007Au0020u006Cu0065u0020u006Du006Fu0064u0069u0066u0069u0065u0072u0020u0075u006Cu0074u00E9u0072u0069u0065u0075u0072u0065u006Du0065u006Eu0074u002E »,
 cTitle: « Formulaire rempli »,
 nIcon: 2, nType: 2
 });
 if (enreg==4) {
 this.flattenPages();
 this.removeScript(« ok »);
 this.addScript(« ok », « var ok = « pas OK »; »);
 }
 }
 } catch(e) {}en script d’action, cela devrait correspondre à ce que tu veux faire tout en permettant l’enregistrement si le formulaire n’est pas définitivement complété ! 
 Pour commentaires…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…pas mieux !!! 
 Maintenant que tu sais comment on fait, lorsqu’on indique les 2 paramètres on peut simplifier l’expression par :
 this.deletePages(5,7);
 this.deletePages(1,3);
 On est obligé de spécifier nStart ou nEnd que lorsqu’on indique un seul paramètre.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Non, impossible !
 app.newDoc() et saveAs() ne peuvent être exécutés avec un script de bouton.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…et voilà ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…et quelles sont ces pages imposées ? 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 autant j’avais cru comprendre :Exemple j’ai 40 pages mais je veux enregistrer de la 5 à la 10 par exemple. …et c’est ce que fait l’action que je t’ai proposé, autant que je n’ai absolument rien compris de ta dernière explication ! :Euuuh: 
 C’est certainement très clair quand on baigne dedans, c’est pour cela que je préfère que l’on partage un fichier exemple. C’est souvent plus compréhensible.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…attention à ne pas mettre d’espace(s) dans les noms de champs lorsqu’on utilise le JavaScript ! 
 Y’en a qu’ont essayé, ils ont eu des problèmes ! :geek:@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 A mettre en script de calcul :Code:var boutonRadio=this.getField(« RADIO1 »).value;
 var totalOption=this.getField(« total option »).value;
 switch (boutonRadio) {
 case 2 :
 var remise=5;
 break;
 case 3 :
 var remise=10;
 break;
 case 4 :
 var remise=15;
 break;
 default:
 var remise=0;
 }
 this.event.target.value= totalOption-(totalOption*remise/100);@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ma proposition qui est une action à importer (double clique sur le fichier .sequ) puis à lancer.
 Le fichier des pages extraites est enregistré dans le même répertoire.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…du coup, en script de champ désactiver, on pourrait ajouter : Code:if (this.event.value== » » || this.event.value==null) {
 app.alert({cMsg: »Vous devez obligatoirement entrer un montant. », nIcon:2});
 this.getField(« TTC »).setFocus();
 };pour ne pas laisser la cellule vide ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésOK ! J’allais proposer de mettre le script en « champ désactivé ». Code:var moyenne= this.event.value/(this.getField(« stagiaires »).value+ this.getField(« formateurs »).value);
 if (moyenne > 12) {
 app.alert({cMsg: »Le montant indiqué est supérieur au maximum autorisé de 12 €/personne. », nIcon:2});
 this.event.target.value=0;
 this.getField(« TTC »).setFocus();
 };@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clés??? pas de message pour moi !!! :Euuuh:  bebarthMaître des clés bebarthMaître des clésici le curseur retourne dans le champ, donc si l’on indique encore une mauvaise valeur on aura toujours le message d’alerte ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Voici ma proposition :Code:var moyenne= this.event.value/(this.getField(« stagiaires »).value+ this.getField(« formateurs »).value);
 if (moyenne > 12) {
 app.alert({cMsg: »Le montant indiqué est supérieur au maximum autorisé de 12 €/personne. », nIcon:2});
 this.getField(« TTC »).setFocus();
 };this.getField(« TTC »).setFocus() repositionne le curseur dans le champ si la moyenne est supérieure à 12. 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Pour le script de Merlin, tu le colles là (cf. copie d’écran) et tu changes le nom du champ !
 …et là, d’un seul coup, tu viens de passer de « boulet » à « calot » ! :bravo:
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés2 réponses simultanées…  bebarthMaître des clés bebarthMaître des clésbonjour, 
 La bonne nouvelle, c’est qu’il n’y a pas besoin de javascript pour faire ça. La mauvaise, c’est qu’à cause de ça tu va rester une bille… pour aujourd’hui ! :joker:
 Voici un fichier et une capture d’écran pour t’indiquer comment faire.
 Demande si tu n’as pas compris.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésre-bonjour, 
 Je viens de réaliser que j’ai oublier de te signaler que dans l’exemple précédent il y a un script de document pour vérifier à l’ouverture si des cases sont cochées ou non.
 Dans le nouveau fichier joint, plus de script de document et on vérifie toutes les cases à chaque action.
 Tu as le choix…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Ce qui ne va pas dans tes scripts, c’est qu’on ne peut pas indiquer comme ça (avec nPage) où il faut insérer le « template » sans tenir compte des « slides » précédents !
 Ça marche avec le premier slide parce comme l’indique « premier » il n’y en a pas d’autre avant, mais pour les autres cela fonctionne uniquement si les slides précédents sont affichés.
 Dans le fichier que je te propose, chaque slide possède une variable qui indique s’il est affiché ou pas. Ensuite, pour insérer le template on aditionne les variables des slide déjà affichés.
 Il y avait déjà eu un post similaire à ce sujet : https://abracadabrapdf.net/forum/index.php/topic,3173.msg18509.html#msg18509
 J’espère que j’ai été clair. Tu me dis.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 C’est typiquement l’exemple où il serait bon de partager un fichier pour faciliter l’explication.
 Regarde cette page :
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_spawnPageFromTemplatebc-105&rhtocid=_6_1_8_23_1_104
 @+
 :bonjour:5 mars 2018 à 17:59 en réponse à : Enregistrement de formulaire : autoriser seulement une copie #63553 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Dans les informations du document, tu as la possibilité de choisir « Modèle » ou « Verrouillé ».
 « Modèle » enregistrera automatiquement ton fichier en tant que copie dans le même répertoire (avec ajout de « copie » dans le nom du fichier).
 Avec « Verrouillé » tu auras un avertissement et on te proposera d’enregistrer ton fichier sous…
 Sinon, Alex avait proposé une solution très bien pensée (script d’action) dans ce post avec un avertissement personnalisable : https://abracadabrapdf.net/forum/index.php?topic=3232.0
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésre-bonjour, 
 Je n’avais pas regarder la copie d’écran et apparemment les cases à cocher sont bien en page 1… mais bon, maintenant tu sauras comment aller sur une autre page en javascript !
 Ce n’est peut-être pas très « prudent » de laisser un numéro de téléphone sur un post !
 Si tu cherches de l’aide pour ton projet, pose tes problèmes sur différents posts du forum. Lorsque ça devient un peu plus compliqué, il est préférable de partager un fichier exemple. C’est généralement plus simple à comprendre.
 Tu peux également me contacter par Messagerie Personnelle si tu penses ne pas pouvoir/devoir partager des informations trop confidentielles. Je verrai ce que je peux faire pour t’aider.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 …et si les cases à cocher ne son pas en page 1 mais que tu ne connais pas le numéro de la page, avant le script tu ajoutes :Code:var pg = this.pageNum;et après le script : Code:this.pageNum = pg;@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésNe pas pouvoir copier des données, c’est un peu le but des fichiers protégés ! :mur: 
 Sinon ils ne le sont pas…
 @+
 :bonjour:1 mars 2018 à 13:35 en réponse à : Précocher par défaut une case à cocher d’après un bouton radio #63523 bebarthMaître des clés bebarthMaître des clésre-bonjour, 
 Voici ma version avec de vrais boutons radio. Ce qui change dans ce cas avec les boutons radio c’est qu’il n’y a pas besoin de conditions puisqu’un seul peut être coché !
 Dans cette version, lorsque l’on change de bouton, seule la case indiquée est cochée alors qu’avec la version de Merlin les cases cochées se cumulent… mais c’est peut-être le but recherché.
 Par contre, si on change l’état d’une des cases à coché, le bouton radio ne change pas (tous pourraient redevenir non cochés).
 @+
 :bonjour:1 mars 2018 à 12:02 en réponse à : Précocher par défaut une case à cocher d’après un bouton radio #63519 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Pour cocher une case ou un bouton par défaut, il y a juste une case à cocher. Pour la suite, je pense qu’il va valloir quand même y passer…
 Dans tes instructions : « …est coché par défaut mais modifiable », cela signifie que si l’on modifie l’état de la case CC, l’état du bouton radio BR change aussi ou reste coché ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésPour moi, « …from script embedded within the document » signifie que le script doit être incorporé dans le document, donc pas d’un document à un autre ! Ou me trompè-je ? (autant la langue française est belle, autant là il y a matière à discussion). 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Pareil !!! le nombre d’heures que j’ai pu passer à cause d’une instruction male écrite…
 Lorsqu’on débute, écrire en javascript directement dans Acrobat n’est pas ce qui est le plus évident, surtout quand on commence à enchaîner les conditions…
 Je conseil d’utiliser un éditeur qui signale les erreurs de syntaxes, puis de copier/coller dans Acrobat. Moi j’utilise Dreamweaver parce que j’ai une suite Adobe, mais il y en a certainement d’autres gratuits qui font ça aussi bien. Je pense que Merlin peut nous en conseiller (Mac & PC).
 @+
 :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%2FField_methods.htm%23TOC_buttonSetIconbc-6&rhtocid=_6_1_8_31_2_5
 Ici la note qui indique que buttonSetIcon n’est permis qu’à l’intérieur d’un document ! Pourquoi ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 …essaye avec this.pageNum !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Je n’arrive pas à « copier » l’icone d’un fichier à l’autre (alors que je ne vois pas de restriction & cf. fichier swap…), j’importe donc la page, puis je vais chercher l’icone et enfin je supprime la page importée.
 Attention :- « this.disclosed = true; » n’est aps une fonction en script de document, sinon if faut appeler cette fonction.
- ici, les champs du fichier « Fichier_LIER » ont été renommés pour ne pas avoir les mêmes noms que ceux des champs importés
 [/list]Tu me dis si ça te vas ! Merlin, 
 Vois-tu une explication sur le fait que je n’arrive pas à aller chercher directement l’icone dans l’autre fichier ?@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clés…j’ai oublié de mettre le bouton radio en lecture seule ! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 A première vue je ne pense pas que ce soit réalisable, mais je vais regarder car je n’ai jamais fait ça !
 si l’image a un nom « Image-2 » c’est une pièce jointe ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 pourquoi 4 noms de bouton radio ? un seul suffit avec des valeurs différentes puisqu’il ne peut y avoir qu’une seule condition requise…
 J’ai ajouté un script de touches personnalisé pour être sur de ne rentrer que des chiffres entiers !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésAprès avoir lu la page indiquée par Merlin, voici pour t’aider… 
 Pour charger l’action, tu double-cliques le fichier .sequ
 Tu pourras ensuite regarder le script et voir si tu peux l’adapter !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Premièrement, Il faut que tes fichiers 1 & 2 possèdent un script de document :Code:this.disclosed = true;https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_properties.htm%23TOC_disclosedbc-12&rhtocid=_6_1_8_23_0_11 
 Ensuite, pour des raisons de sécurité, le script ci-dessous ne sera réalisable qu’à partir d’une action :Code:var Chemin = this.path;
 var Dossier = Chemin.substring(0,Chemin.length-this.documentFileName.length);
 var otherDoc = app.openDoc({
 cPath: Dossier+ »Fichier_1.pdf »,
 });
 var champA= otherDoc.getField(« A »).value;
 otherDoc.closeDoc();
 var otherDoc = app.openDoc({
 cPath: Dossier+ »Fichier_2.pdf »,
 });
 var champB= otherDoc.getField(« B »).value;
 otherDoc.closeDoc();
 this.getField(« C »).value= champA+champB;…script à adapter, of course !!! 
 Dans ce script, tous les fichiers sont dans le même répertoire.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…il manque un else ! Code:for (var i=0; ivar oFld = this.getField(this.getNthFieldName(i)); 
 if((oFld.type == « text ») && (oFld.valueAsString == oFld.defaultValue)) {
 oFld.textColor = color.white;
 } else {
 oFld.textColor = color.black;
 }
 }
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 de tête, comme ça, je ne pense pas que l’on puisse récupérer le script d’un champ afin de le modifier !
 Mais vu que l’on récupère et affiche les valeurs des formulaires, il ne devrait pas y avoir besoin de calculs. :doute:
 peut-être je n’ai pas compris quelque chose !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 personnellement je ne pense jamais à utiliser les scripts des actions du document ! :bravo:
 J’aurais fait une usine à gaz pour arriver à ce résultat !!!
 Si les champs ont un fond, il faudra utiliser « oFld.textColor = color.transparent » plutôt que « oFld.textColor = color.white » !
 Et si les textes ont des couleurs différentes, il faudra stocker les stocker dans une table avant de les récupérer.
 Je dis ça au cas ou car cela m’arrive fréquemment d’avoir des fonds de champs et des couleurs de textes différents mais on ne m’a jamais demandé de cacher les valeurs à l’impression…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 …et merci pour tes remerciements que je réitère moi-même à Merlin vu le nombre d’heures qu’il consacre à son forum ! :bravo:
 Je dis toujours que lorsque l’on donne ce n’est pas pour recevoir, mais ça fait quand même plaisir de recevoir de temps en temps…
 Certaines fois on a aucun retour alors que l’on s’est creusé la tête pour trouvé une solution. Même pas : « ça marche pas ! » ou « ça marche ! ».En ce qui concerne la duplication des champs, je te conseille de lire cette page : 
 https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
 Tu comprendras certainement mieux l’indexation des champs et la facilité des calculs sur ces champs dupliqués.
 Dans ton cas, il faut donner des valeurs d’exportation à chaque élément de la première liste et cocher « Valider la valeur sélectionnée immédiatement ». Ensuite il n’y a plus qu’à dupliquer….
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…voici ! 
 j’ai mis le champ « moyenne » sur la première page.
 Regarde un peu la différence avec ton fichier original.
 j’espère que tu comprendras sinon dis-moi, j’expliquerai !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, Code://pour passer le texte en blanc
 this.getField(« myField »).textColor = color.white;
 //pour passer le texte en noir
 this.getField(« myField »).textColor = color.black;Pour plus d’informations sur les couleurs : 
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2Fcolor_properties.htm
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 c’est effectivement possible en javascript, mais la façon de faire dépend un peu de comment sont identifiés les champs…
 Si tu avais un fichier exemple à partager on pourrait adapter le script !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 on va commencer par ajouter un script de document à ton fichier formulaire original.
 Tu ouvres ce fichier puis la console Acrobat (« cmd j » sur Mac et je présume « ctrl j » sur PC).
 Dans la fenêtre de la console tu va taper (ou coller) ce code :Code:this.addScript(« Disclosed », « this.disclosed = true; »);puis la touche ENTREE (et non RETOUR LIGNE). Le script de document a bien été créé. 
 Tu enregistres ton fichier original (ça c’est fait !).
 Tu fais une copie de ce fichier que tu renommes comme tu veux (le miens, c’était « Fusion de Formulaires.pdf »).
 Ensuite, outil : Traitement du document -> Modèles de page.
 Tu crées un modèle nommé « vide » (c’est le nom que j’ai donné dans mon script),-> Ajouter, …le template « vide » est créé, tu ferme la fenêtre.
 Retour à la console, tu tappes (ou colles) :Code:this.spawnPageFromTemplate(« vide », this.numPages, false, false);puis la touche ENTREE. 
 Retour à la fenêtre de Modèles de page où tu vas cliquer sur l’oeil à gauche de manière à le faire disparaitre.
 Tu fermes la fenêtre et tu enregistres. C’est fini ! tu peux maintenant utiliser l’action avec tes formulaires…
 J’espère avoir été clair et ne rien avoir oublié !
 Tu me dis…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésBonjour, 
 Il faut créer le template du fichier à partir d’un fichier final et définitif !!! Sais-tu faire ça ???
 Sinon on pourra voir ça demain.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…la suite. 
 Tu essayes comme ça et on verra après si on peut adapter à tes besoins !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 voici vite fait quelques copies d’écrans pour t’aider à démarrer :- tu décompresses le fichier .zip
- tu double-cliques le fichier .sequ pour installer l’action (donc uniquement la première fois).
- tu lances le fichier « Fusion de Formulaires.pdf »
- tu lances l’action
- tu remplis les champs (ici « fichier 1 » et « fichier 2 » comme dans le répertoire, mais tu peux indiquer d’autres noms…)
- tu termine avec un champ vide
- c’est fini, les formulaires sont compilés en un seul
 [/list]@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clés…j’ai toujours dis UN icone ! 
 Il est vrai que ce n’est pas très clair.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, Sur MacOS X c’est entre 0 , 1 et 2 qu’il n’y a pas de différence pour le paramètre nIcon. Petite correction : Sur MacOS X c’est entre 1 , 2 et 3 qu’il n’y a pas de différence pour le paramètre nIcon. 
 La valeur 0 du paramètre donne une icône différente.
 Je viens de vérifier et je ne sais pas comment sont les autres icônes sur PC, ni pourquoi y a-t-il une différence Mac/PC ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésSi tu veux regarder les copies d’ecran De ce post, c’est exactement le même principe : 
 https://abracadabrapdf.net/forum/index.php?topic=3410.0
 Sinon je te ferai des copies d’ecran Plus tard !@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clés…et pourquoi 2 boutons ? 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés bebarthMaître des clés bebarthMaître des clésre-bonjour, 
 moi je n’y connais pas grand chose en porte document alors j’ai créé une action avec un script qui (je crois) correspond à ce que tu voulais faire.
 Il faudra bien sur importer l’action la première fois puis on ouvre le fichier « Fusion de Formulaires » et on lance l’action.
 Ici ça fonctionne avec les 2 fichiers joints mais if faudra adapter le script en fonction du formulaire final !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 si ça marche comme ça, c’est plus simple !!!
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésUne action qui importerait chaque formulaire en indexant les champs qui n’auraien Donc plus les mêmes noms ! 
 Les noms des fichiers ont-ils une base commune ?
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésje pense que comme ça il n’y a pas grand chose à faire… alors que peut-être avec un script !  bebarthMaître des clés bebarthMaître des clésA mon avis lorsqu’on insère une page à partir d’un template, cela devient une page et n’a plus de lien avec le template (c’est clair ??? :doute: ). 
 il faudrait donc vérifier par exemple le nom d’un champ de la dernière page et voir ce champ est également sur le template…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clés…ça j’ai bien compris, mais comment procèdes-tu ??? 
 Tu ouvres un formulaire, puis avec le menu « Insérer des pages » tu importes l’autre ? ou avec un script ?
 Comment se nomment et où se trouvent ces formulaires ? dans le même répertoire ?
 Uniquement 2 formulaires à combiner ?
 Ça demande un peu plus de précision…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 on a le droit de voir le fichier ?
 Sur le dernier que tu as posté il n’y a pas de bouton reset ni le template indiqué.- 3 fois delete… https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_deletePagesbc-20&rhtocid=_6_1_8_23_1_19
- A mon avis tu devrais plutôt écrire :
 this.spawnPageFromTemplate(« signatairesentrant », this.numPages, false, false);
 Pourquoi nPage:16 si c’est pour insérer en dernière page ?
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_spawnPageFromTemplatebc-105&rhtocid=_6_1_8_23_1_104
 [/list]@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 comment les fusionnes-tu ? tu en importes un à la suite de l’autre… ou à partir d’un troisième document ?
 Il faudrait indexer les champs importés ! aucun champ ne reste commun ???
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 dans ce cas, tu supprimes les lignes :Code://Créer un rectangle sur le mot trouvé
 var q = this.getPageNthWordQuads(p, i);
 …
 // Epaisseur des bords
 l.borderWidth = 2;@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonsoir, 
 pourquoi ne charges-tu pas l’action ??? juste un double clique sur le fichier .sequ puis tu la lances (cf. copies d’écrans).
 Je viens de chercher le mot « document » et extraire les pages dans l’api reference (779 pages) sans aucun problème en un peu plus de 5 minutes !!!
 @+
 :bonjour:13 février 2018 à 17:21 en réponse à : Assistant d’action / lancement d’une action depuis un script #63370 bebarthMaître des clés bebarthMaître des clés…j’ai encore un peu de mémoire ! :geek:  bebarthMaître des clés bebarthMaître des clésbonjour, 
 … je vais regarder cela.??? je ne sais pas ce que tu vas regarder car tu ne m’as pas dis quels champs devaient être réinitialisés ! 
 … Cependant, la signature reste alors que je voudrais l’enlever.Comment veux-tu l’enlever et comment reste-t-elle ??? Aurais-tu un fichier à partager ? …par contre, je ne vais pas être dispo aujourd’hui !!! 
 bonne journée.
 @+
 :bonjour:13 février 2018 à 06:58 en réponse à : Assistant d’action / lancement d’une action depuis un script #63367 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Il me semble que tu as déjà eu une réponse il n’y a pas si longtemps que ça ! :Smiley03:
 https://abracadabrapdf.net/forum/index.php/topic,3345.msg19643.html#msg19643
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 quels sont les champs à ne pas réinitialiser ou ceux à réinitialiser, selon…
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 essaie plutôt comme ça :Code:switch (this.getField(« Text5 »).value) {
 case « Essai-1 »:
 this.getField(« Donnees-1 »).display = display.visible;
 this.getField(« Donnees-2 »).display = display.hidden;
 this.getField(« Donnees-3 »).display = display.hidden;
 this.getField(« Donnees-4 »).display = display.hidden;
 break;
 case « Essai-2 »:
 this.getField(« Donnees-1 »).display = display.hidden;
 this.getField(« Donnees-2 »).display = display.visible;
 this.getField(« Donnees-3 »).display = display.hidden;
 this.getField(« Donnees-4 »).display = display.hidden;
 break;
 case « Essai-3 »:
 this.getField(« Donnees-1 »).display = display.hidden;
 this.getField(« Donnees-2 »).display = display.hidden;
 this.getField(« Donnees-3 »).display = display.visible;
 this.getField(« Donnees-4 »).display = display.hidden;
 break;
 default:
 this.getField(« Donnees-1 »).display = display.hidden;
 this.getField(« Donnees-2 »).display = display.hidden;
 this.getField(« Donnees-3 »).display = display.hidden;
 this.getField(« Donnees-4 »).display = display.visible;
 }@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 voici donc une action que j’ai créé à partir de 2-3 scripts déjà réalisés (il reste peut être quelques variables inutiles…).
 Ici, pour accélérer le processus, je ne vérifie qu’une fois si le mot est présent sur la page, puis passe à la page suivante.
 J’ai fait quelques vérifications et cela fonctionne. J’espère n’avoir rien oublié, sinon merci de me signaler le/les problèmes(s).
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 je pense que je devrais avoir quelque chose pour toi !
 Je n’aurais pas le temps de regarder ce weekend, mais promis dès lundi.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Ce n’ai pas du « tout simple » mais j’ai déjà fait quelque chose comme ça…
 Même question que Merlin : au final tu veux des fichiers individuels ou un seul fichier final ?
 @+
 :bonjour:6 février 2018 à 15:23 en réponse à : Rendre le PDF non modifiable au moment de l’envoi par mail #58296 bebarthMaître des clés bebarthMaître des clésbonjour, 
 si l’on crée le bouton sur Acrobat Pro avec une action « Envoyer un formulaire », ça fonctionne également sur iPhone/iPdad !
 Le souci c’est le javascript qui n’est pas totalement compris par ces téléphones et tablettes.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésVoici une proposition qui devrait te permettre de voir ce que l’on peut faire. 
 J’espère que tu comprendra comment faire, sinon il faut te plonger dans ces 2 pages :
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_addField1bc-2&rhtocid=_6_1_8_23_1_1
 et
 https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_properties.htmJe ne sais pas s’il est possible de récupérer d’un seul coup TOUTES les propriétés d’un champ. Peut-être Merlin peut nous dire… @+ 
 :bonjour:5 février 2018 à 09:20 en réponse à : Rendre le PDF non modifiable au moment de l’envoi par mail #58289 bebarthMaître des clés bebarthMaître des clésbonjour, 
 Désolé mais je ne suis pas très au courant des problèmes rencontrés avec les tablettes… à par qu’il y a des soucis avec le javascript.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour Merlin, …dupliquer des rangées de champs ce n’est possible qu’avec LiveCycle Designer. …disons que c’est assez compliqué avec Acrobat Pro ! Mais on peux créer des champs et en déplacer d’autres. 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Personnellement je n’ai pas bien compris !
 Tu veux rajouter des champs en décalant les autres ou une page de formulaire ?
 @+
 :bonjour:3 février 2018 à 14:48 en réponse à : Rendre le PDF non modifiable au moment de l’envoi par mail #58287 bebarthMaître des clés bebarthMaître des clés…je viens d’essayer et ça fonctionne. 
 Ne pas oublier de sauvegarder avant d’envoyer si tu veux garder le document non aplati en local…
 @+
 :bonjour:3 février 2018 à 11:03 en réponse à : Rendre le PDF non modifiable au moment de l’envoi par mail #58286 bebarthMaître des clés bebarthMaître des clésbonjour, 
 à mon avis il faut que ton bouton d’envoi exécute les 2 actions.
 D’abord l’envoi de la version non aplatie puis aplatir et renvoyer le formulaire:Code:this.mailDoc({
 bUI: false,
 cTo: « toto@free.fr »,
 cSubject: « Sujet du message »,
 cMsg: « Texte du message. »
 });
 this.flattenPages();
 this.mailDoc({
 bUI: false,
 cTo: « autretoto@free.fr »,
 cSubject: « Sujet du message »,
 cMsg: « Texte du message. »
 });
 closeDoc(true);…à tester !!! 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésc’est normal, même nom de champ -> mêmes valeurs !!! 
 Il faut donc juste changer un false par un true…Code:this.spawnPageFromTemplate(« NomDuTemplate », this.numPages-4, true, false);@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 selon si l’on utilise Acrobat et que l’on a les bonnes autorisations d’accès, on peut avoir 2 fichiers distincts !
 dans l’exemple joint, les deux fichiers doivent être dans le même répertoire.
 Ne pas oublier « this.disclosed = true; » en script d’ouverture des fichiers.
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 il faut écrire :Code:this.spawnPageFromTemplate(« NomDuTemplate », this.numPages-4, false, false);@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 Ça ne fonctionnait pas dans ton fichier…
 Ici, j’ai aussi rajouté un calendrier pour le champ date !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des cléstu peux rajouter un calendrier si tu va voir sur cette page : 
 http://www.formrouter.com/tools/index.html
 mais ça n’a rien à voir avec celui de Merlin !
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésOù y a-t-il un calendrier dans ton fichier ? 
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 si tu cherche sur le web tu devrais en trouver, mais le meilleur c’est quand même celui-ci :
 https://www.abracadabrapdf.net/utilitaires/utilitaires-pdf/magicdate-selecteur/
 @+
 :bonjour: bebarthMaître des clés bebarthMaître des clésbonjour, 
 il suffit juste de récupérer l’année pour chaque champ « date », et cela selon le format des champs, et de faire une soustraction !
 En gros, pour un format de date à la française, ça donnerait :Code:var dd1=this.getField(« champdate1 »).value;
 var annee1=dd1.slice(dd1.length-4);
 var dd2=this.getField(« champdate2 »).value;
 var annee2=dd2.slice(dd2.length-4);
 this.event.target.value=annee2-annee1;@+ 
 :bonjour: bebarthMaître des clés bebarthMaître des clés…et pour mieux comprendre qu’on prend le jour à la position « lejour » dans la table, on peut écrire la dernière ligne : Code:…
 this.event.target.value=tableaujour[lejour];:bonjour: 
- 
		AuteurRéponses

