Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarthMaître des clésbon ben voilà,
J’ai mis une fonction en script de document que j’appelle en script d’ouverture de page :Code:function symbol()
{
var laPage = this.pageNum;
var fpage = -1;
var Pays= » »;
var i = 0;
try {
while (fpage != laPage) {
var fname = this.getNthFieldName(i);
var fpage = this.getField(fname).page;
i++;
}
var str = fname;
var n = str.indexOf(« _ »);
var Pays = str.slice(n+1,n+3);
app.alert({cMsg: »Le code pays est « +Pays+ ». », nIcon:2});
} catch(e) {
app.alert({cMsg: »Il n’y a pas de code pays en page « +(laPage+1)+ ». », nIcon:2});
};
}Si tu colle le script d’ouverture de page sur chaque template, il sera présent pour chaque nouvelle page créée.
Ici il y a un message d’alerte, Il faudra adapter à ce que tu veux faire…
@+
:bonjour:
bebarthMaître des clésdernier point : FR, US, BE… sont des pays je présume.
Y a-t-il toujours uniquement 2 lettres ??? sont-elles toujours situées au même endroit : en fin du nom de champs ou après l’underscore « _ » par exemple ???
@+
:bonjour:
bebarthMaître des clésben, on va dire que c’est moyen clair pour moi !
Est-ce que tu veux récupérer l’info à chaque fois que tu ajoutes une page ou sur un document entier ?
Ou ajoutes-tu cette page ? en première page, en dernière page, n’importe où ???
@+
:bonjour:
bebarthMaître des clésbonjour,
Est-ce que c’est possible de récupérer le FR qui se trouve dans le nom du template ?
Qu’entends-tu par là ??? Normalement, si tu rajoutes une page via un template, tu connais son nom, non !!!
Comment rajoutes-tu la page ?
@+
:bonjour:
bebarthMaître des clés…pas besoin de script de document !
Tu écris ceci directement soit en action champ activé/désactivé soit en souris entrée/sortie :Code:if (this.event.target.fillColor == « RGB,1,0,0 ») {
this.event.target.fillColor = [« RGB », 1,1,0];
} else {
this.event.target.fillColor = [« RGB », 1,0,0];
}Ici, ton erreur est que lorsque l’on lit la couleur du champ, la valeur retournée est « RGB,1,0,0 » et non « [RGB »,1,0,0] ». Ça c’est la syntaxe pour écrire la couleur du fond.
@+
:bonjour:
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%2Fcolor_properties.htm
…je pense que tu vas trouver !!!
@+
:bonjour:1 avril 2018 à 08:37 en réponse à : Formulaire dynamique Livecycle Designer : champs qui s’effacent #63728
bebarthMaître des clésbonjour,
Je voudrais bien essayer de t’aider, mais je ne connais pas LiveCycle Designer et ton fichier est protégé donc impossible de lire les scripts, les noms de champs et le template (je suppose) et de voir ce qui se passe…
N’est-il pas possible d’écrire un script d’ouverture de page qui reprendrait le numéro de facture et la date pour les afficher dans la nouvelle page ! C’est ce que j’avais fait pour un autre formulaire.
@+
:bonjour:30 mars 2018 à 12:35 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63680
bebarthMaître des clés…voici le script commenté.
J’ai rajouté une boucle while pour être certain de n’indiquer qu’un nombre positif !Code://On met les instruments et les valeurs par défaut dans une table
var Instruments = [« Violon I », « 8 », « Violon II », « 7 », »Alto », « 6 », « Violoncelle », « 5 », « Contrebasse », « 4 »];
//On créé le template
var t = this.createTemplate ({nPage:0, cName: »Couv »});
//On commence la boucle avec modulo i+2 car les instruments sont tous les 2 éléments dans la table
for (var i = 0; i < Instruments.length; i = i+2) {
//Instruments est le nom de l’instrument dans la table
var Inst = Instruments;
//Instruments est le nombre de copies par défaut dans la table
var nb = Instruments;
//J’ai rajouté une boucle pour être certain de ne prendre en compte que des nombres, et positifs
while (bb<1 | isNaN(bb)) {
var bb = app.response({
cQuestion: « Combien souhaitez-vous générer de parties de « +Inst+ » ? »,
cTitle: « Nombre de parties »,
cDefault: nb
});
//On conertit le chaine en nombre
var nbreCopies = parseFloat(bb);
}
//On remet le nombre à 0 pour pouvoir recommencer la boucle while pour le prochain instrument
var bb = 0;
//Boucle pour ajouter le nombre de pages indiqué
for (var a = 1; a <= nbreCopies; a++) {
//On ajoute une page
this.spawnPageFromTemplate (« Couv », « », true, false);
//Premier champ nommé avec le nom de l’instrument
//Si le nom était commun pour tous les instruments, la valeur (donc le nom de l’instrument) changerait à chaque boucle
var f = this.addField(Inst, »text »,0,[0,50,594,100]);
f.value = Inst;
f.alignment = « center »;
f.textSize = 40;
f.textColor = color.black;
f.textFont = font.Helv;
//Deuxième champ nommé différemment pour chaque page
//idem que pour le nom des champs Instruments
var f = this.addField(Inst+ »ZoneCopies »+a, »text »,0,[525,800,585,830]);
f.value = a + « / » + nbreCopies;
f.alignment = « right »;
f.textSize = 20;
f.textColor = color.black;
f.textFont = font.Helv;
}
}
//On supprime la page qui a servi de template et qui se trouve en dernière page
this.deletePages(this.numPages-1);
//On inverse l’ordre des pages
for (i = this.numPages-1; i >= 0; i–) this.movePage(i);
//On affiche la première page
this.pageNum = 0;
//…et on enregistre sous !
this.saveAs({cPath: »/C/Users/…/Desktop/CouvCordes.pdf »});
//Fini !!!@+
:bonjour:30 mars 2018 à 06:58 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63677
bebarthMaître des clésbonjour,
Dis-moi si tu veux que je commente le script !
@+
:bonjour:
bebarthMaître des clésPourquoi ???
Il ne fonctionne pas bien ?
@+
:bonjour:
bebarthMaître des clésbonjour,
si tu essayes d’écrire « this/getField… » tu auras vite fait la réponse !!!Sinon, pour la case à cocher, on peut aussi écrire :
Code:if (event.target.isBoxChecked(0)) {
// script à exécuter;
} else {
// script à exécuter;
}@+
:bonjour:29 mars 2018 à 13:08 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63675
bebarthMaître des clésbonjour,
…la boucle ! (sans être désobligeant :geek: ).Code:var Instruments = [« Violon I », « 8 », « Violon II », « 7 », »Alto », « 6 », « Violoncelle », « 5 », « Contrebasse », « 4 »];
var t = this.createTemplate ({nPage:0, cName: »Couv »});
for (var i = 0; i < Instruments.length; i = i+2) {
var Inst = Instruments;
var nb = Instruments;
var nbreCopies = app.response({
cQuestion: « Combien souhaitez-vous générer de parties de « +Inst+ » ? »,
cTitle: « Nombre de parties »,
cDefault: nb
});
for (var a = 1; a <= nbreCopies; a++){
this.spawnPageFromTemplate (« Couv », « », true, false);
var f = this.addField(Inst, »text »,0,[0,50,594,100]);
f.value = Inst;
f.alignment = « center »;
f.textSize = 40;
f.textColor = color.black;
f.textFont = font.Helv;
var f = this.addField(Inst+ »ZoneCopies »+a, »text »,0,[525,800,585,830]);
f.value = a + « / » + nbreCopies;
f.alignment = « right »;
f.textSize = 20;
f.textColor = color.black;
f.textFont = font.Helv;
}
}
this.deletePages(this.numPages-1);
for (i = this.numPages-1; i >= 0; i–) this.movePage(i);
this.pageNum=0;
this.saveAs({cPath: »/C/Users/…/Desktop/CouvCordes.pdf »});@+
:bonjour:
bebarthMaître des clésBonjour,
Regarde si on ne t’a pas installé une version Acrobat Standard au lieu d’une version Pro…
@+
:bonjour:27 mars 2018 à 15:43 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63672
bebarthMaître des clésJe n’ai pas beaucoup de temps en ce moment, mais j’essaierai de t’écrire le script dans les prochains jours.
@+
:bonjour:27 mars 2018 à 15:02 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63670
bebarthMaître des clésbonjour,
Pour moi, dans ton script, tu rajoutes le template au dessus de la dernière page. Essaye :Code:this.spawnPageFromTemplate (« Couv », 0, false, false)…et une petite boucle avec le nom des instruments dans une table éviterait d’écrire 5 fois la même chose, non !!!
@+
:bonjour:
bebarthMaître des clésvous êtes un dieu!!!!….
Faut pas exagérer !!! Etre Grand Magicien me convient plus qu’honorablement.
@+
:bonjour:22 mars 2018 à 18:07 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63667
bebarthMaître des clés« ON » n’est pas forcément Merlin !!!
:Smiley00:
22 mars 2018 à 11:45 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63665
bebarthMaître des clésOn pourrait les rajouter…
22 mars 2018 à 11:29 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63663
bebarthMaître des clésbonjour,
Avant de me relancer dans un script qui ne correspondrait pas à ce que tu veux, pourrais-tu me donner quelques précisions.
Tu as donc un fichier partition et un fichier couverture que tu voudrais imprimer en « X » exemplaires avec la couverture personnalisée.
As-tu réellement besoin d’un fichier final compilant toutes ces versions, ou juste d’une action qui permette d’imprimer les différentes versions ?
Veux-tu comme le propose Merlin insérer cette couverture en « template » qui te permettrait de l’afficher ou pas selon les besoins ???@+
:bonjour:
bebarthMaître des clésbonjour Merlin,
Le tuto que tu indiques répondrait plus à un autre post où j’avais répondu car il extrait les pages contenant un même mot et enregistre ce mot comme nom de fichier.
https://abracadabrapdf.net/forum/index.php/topic,3410.msg20094.html#msg20094Ici, le problème est un peu différent. On teste les mots qui sont après et sur la même ligne que le mot COMMUNE ou SECTEUR et on prend tous ces mots pour former un nom (de ville et de fichier). C’est pourquoi j’avais demandé s’il n’y avait pas d’autres mots sur la même ligne, sinon impossible de savoir ou s’arrête le nom de la ville.
@+
:bonjour:
bebarthMaître des clésbonjour Merlin,
Pareil pour moi, c’est pourquoi j’ai fourni des fichiers .docx et .rtf ne sachant ce que disposait bendesarts comme logiciel(s).
@+
:bonjour:
bebarthMaître des clésbonjour,
Voici ce que j’ai en adaptant le script qui était dans le post indiqué.
Si le JavaScript est du charabia pour toi, j’espère que tu sauras te dépatouiller avec ça car je n’ai pas beaucoup de temps pour expliquer en ce moment… et les opérations de temps ne sont pas ce qui est de plus simple pour débuter !
Mais s’il doit y avoir quelques adaptations c’est faisable quand même !
@+
:bonjour:
bebarthMaître des clésbonjour,
Comment remplis-tu les heures ? Ce sont des champs j’espère ???
Je suppose qu’il faut remplir les heures d’arrivée et de départ !
Le total heures semaines est le total de toutes les lignes ???
@+
:bonjour:
bebarthMaître des clésbonjour,
je n’ai pas eu de problème, mais mieux vaudrait « Enregistrer sous un autre… » ton fichier !
Je te joins les fichiers docx et rtf.
@+
:bonjour:
bebarthMaître des clésbonsoir,
Là, ça devrait marcher qu’il y ait ou pas des mots sur la page et qu’il y ait COMMUNE/SECTEUR ou pas !Code:console.show();
console.clear();
//Début durée
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0);
console.println(« Début process: »+debut);
//Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nomDocument = this.documentFileName;
var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
for (var p = 0; p < this.numPages; p++) {
var ville = « »;
var ckWord = « »;
var i = 0;
//recherche du mot COMMUNE
var numWords = this.getPageNumWords(p);
console.println(« La page: »+(p+1)+ » comporte « + numWords + » mots »);
if (numWords > 0) {
try {
while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posVert = r[3];
i=i+1;
}
var posMot = posVert;
while (posMot == posVert) {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posMot = r[3];
i=i+1;
if (posMot == posVert) {var ville = ville + » » + ckWord;}
}
var str = ville;
var debutVille = ville.substring(0,1);
if (debutVille == » « ) {
var res = str.slice(2);
} else {
var res = str.slice(1);
}
var ville = res;
if (ckWord == « COMMUNE ») {
console.println(« Commune : « +ville);
} else {
console.println(« Secteur : « +ville);
}
if (ville != « ») {
this.extractPages({
nStart: p,
cPath: repertoire+ville+ ».pdf »
});
}
} catch(e) {
app.alert({cMsg: »La page « + (p+1) + » ne contient ni COMMUNE ni SECTEUR. », nIcon:2});
}
}
}
//Fin durée
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df);
console.println(« Fin process: »+fin);
delta=(df.valueOf()-d0.valueOf())/1000/60;
console.println(« Duree process: »+delta+ » minutes »);Si tu ne veux pas le message d’alerte, tu enlève la ligne
Code:app.alert({cMsg: »La page « + (p+1) + » ne contient ni COMMUNE ni SECTEUR. », nIcon:2});@+
:bonjour:
bebarthMaître des clés…pas d’erreur de mon côté avec le fichier que tu avais fourni, mais je n’ai pas pris en compte la possibilité par exemple qu’une page soit vierge.
Cette possibilité est-elle envisageable ??? Il faudrait peut-être rajouter des fonctions « try » !!!
Je ne sais pas si je pourrai regarder ça ce soir… trop de boulot (je suis sur une vidéo Adobe Première très urgente -> pour samedi).
Sinon demain matin !
@+
:bonjour:
bebarthMaître des clésBon ben on va prendre le problème différemment.
On cherche COMMUNE ou SECTEUR sur l’original et on extrait la page.Code:console.show();
console.clear();
//Début durée
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0)
console.println(« Debut process: »+debut)
//Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nomDocument = this.documentFileName;
var repertoire = Chemin.substring(0,Chemin.length-nomDocument.length);
for (var p = 0; p < this.numPages; p++) {
var ville = « »;
var ckWord = « »;
var i = 0;
//recherche du mot COMMUNE
var numWords = this.getPageNumWords(p);
while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posVert = r[3];
i=i+1;
}
var posMot = posVert;
while (posMot == posVert) {
var ckWord = this.getPageNthWord(p, i, true);
//Coordonnées du mot
var q = this.getPageNthWordQuads(p, i);
// convert quads in default user space to rotated
// user space used by Links.
m = (new Matrix2D).fromRotated(this,p);
mInv = m.invert()
r = mInv.transform(q) //Coordonnées champ du mot trouvé
r=r.toString() //Conversion en chaîne
r = r.split(« , »); //Séparation de la chaîne à chaque virgule « , »
//Position verticale du mot
var posMot = r[3];
i=i+1;
if (posMot == posVert) {var ville = ville + » » + ckWord;}
}
var str = ville;
var debutVille = ville.substring(0,1);
if (debutVille == » « ) {
var res = str.slice(2);
} else {
var res = str.slice(1);
}
var ville = res;
console.println(« Commune : « +ville);
if (ville != « ») {
this.extractPages({
nStart: p,
cPath: repertoire+ville+ ».pdf »
});
}
}
//fin duree
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df)
console.println(« Fin process: »+fin)
delta=(df.valueOf()-d0.valueOf())/1000/60
console.println(« Duree process: »+delta+ » minutes »)@+
:bonjour:
bebarthMaître des clés…parce que j’ai essayé :
Code:var d = app.activeDocs;
for( var i in d )
if( d != this ) d.closeDoc();et ça ne fonctionne pas non plus !!! enfin les fichiers se ferments tous à la fin… :mur:
@+
:bonjour:
bebarthMaître des clésbonjour,
J’avais effectivement remarqué que tous les fichiers se fermaient en fin de script alors que closeDoc(); est en fin de boucle, mais je ne savais pas que tu avais autant de documents…
Comme ça, je ne sais pas comment faire, mais je vais regarder !Pour rechercher soit COMMUNE soit SECTEUR, tu modifies cette ligne :
Code:while (ckWord != « COMMUNE » && ckWord != « SECTEUR ») {ça devrait fonctionner ! et pas besoin de rajouter « 2 » car un simple caractère n’est pas considéré comme un mot !
Je te tiens au courant si je trouve pour fermer les fenêtre une à une.
@+
:bonjour:20 mars 2018 à 10:18 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63660
bebarthMaître des clésbonjour,
…me génère autant de fichiers que de couvertures…
c’est ce que j’avais cru comprendre !
là je ne comprend plus bien. Les partitions des instruments à cordes sont différentes et proviennent de fichiers différents ? ou d’un seul ficher ?
A quoi correspond la question « Combien voulez-vous générer de parties ? » est-ce « …de copies ? »@+
:bonjour:20 mars 2018 à 08:02 en réponse à : Script JS – Duplication de pages et incrémentation sur chaque. #63658
bebarthMaître des clésbonjour,
Voici le script que je te propose et qui reprend les indications que j’ai trouvées dans ton script. La position des champs créés est à définir plus précisément. J’ai mis de l’Helvetica en police car je ne connais pas le nom à indiquer pour Garamond…Je pense que l’idée proposée par Merlin est plus logique car tu peux définir les champs que tu veux où tu veux et faire une mise en page un peu plus sophistiquée…
Sinon, on peu aussi créer un fichier « couverture » que l’on vient insérer en première page à la place de cette page blanche qui ne comporte que 2 blocs de textes !Je te joins également l’action Acrobat.
Code://Initialisation des variables
var Chemin = this.path;
var PathSansExt = Chemin.substring(0,Chemin.length-4);
var nbreParties = 0;
//Questions
var nomInstrument = app.response({
cQuestion: « Saisissez le nom de l’instrument : »,
cTitle: « Instrument »,
cDefault: « Violon »
});
while (nbreParties<1 | isNaN(nbreParties)) {
var nbreParties = app.response({
cQuestion: « Combien voulez-vous générer de parties ? »,
cTitle: « Nombre de parties »,
cDefault: « 1 »
});
var a = parseFloat(nbreParties);
}
for (i=1; i<=a; i++) {
// Nouveau document
var newDoc = app.newDoc();
//Pages insérées
newDoc.insertPages( {
nPage: newDoc.numPages-1,
cPath: this.path,
nStart: 0,
nEnd: this.numPages-1
});
// Construction des champs texte
var f = newDoc.addField(« Zone_Num », « text », 0, [200,250,250,400] )
f.value = i + « / » + nbreParties; // Texte du bas de page
f.alignment = « center »; // Alignement du texte
f.textSize = 20; // Corps du texte
f.textColor = color.black; // Couleur du texte
f.textFont = font.Helv; // Police du texte
var f = newDoc.addField(« Zone_Instrument », « text », 0, [400,400,300,300] )
f.value = nomInstrument; // Texte du bas de page
f.alignment = « center »; // Alignement du texte
f.textSize = 20; // Corps du texte
f.textColor = color.black; // Couleur du texte
f.textFont = font.Helv; // Police du texte
//Enregistrement
newDoc.saveAs(PathSansExt+ » (« +nomInstrument+ » « +i+ » sur « +nbreParties+ »).pdf »);
newDoc.closeDoc();
}@+
:bonjour:
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é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é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…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é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é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é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é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é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…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é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é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ésbonjour,
et quelle sera l’utilisation finale ? avec Adobe Reader ???
@+
:bonjour:
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…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ésbonjour,
Non, impossible !
app.newDoc() et saveAs() ne peuvent être exécutés avec un script de bouton.
@+
:bonjour:
bebarthMaître des clés…et voilà !
@+
:bonjour:
bebarthMaître des clés…et quelles sont ces pages imposées ?
@+
:bonjour:
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…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é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é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…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é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??? pas de message pour moi !!! :Euuuh:
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é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é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és2 réponses simultanées…
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é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é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é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é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é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é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é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é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é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é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é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é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ésbonjour,
…essaye avec this.pageNum !
@+
:bonjour:
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…j’ai oublié de mettre le bouton radio en lecture seule !
@+
:bonjour:
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é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é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é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…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é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é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é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…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é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é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é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é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…la suite.
Tu essayes comme ça et on verra après si on peut adapter à tes besoins !
@+
:bonjour:
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…j’ai toujours dis UN icone !
Il est vrai que ce n’est pas très clair.
@+
:bonjour:
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é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…et pourquoi 2 boutons ?
@+
:bonjour:
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ésbonjour,
si ça marche comme ça, c’est plus simple !!!
@+
:bonjour:
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: -
AuteurRéponses
