Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarthMaître des clésbonjour,
Il ne suffit pas de réfléchir, après il faut écrire et il y a des jours où c’est plus difficile que d’autres… on écrit « tagret » au lieu de « target » et on se relit 10 fois sans trouver l’erreur ! …ou on écrit une fonction en script de document et on oublie de l’appeler dans un script…
Enfin ! Voici où j’en suis arrivé.
https://we.tl/whMOriUBJp
J’espère donc que j’ai tout compris l’énoncé du problème. :geek:
Il y a donc une fonction en script de document qui est rappelée à chaque fois que l’on clique sur une case.
J’ai redéfini également l’ordre de calcul car in y avait encore un petit souci.
@+
:bonjour:
bebarthMaître des clésbonjour,
Je ne pense pas avoir le temps de regarder ton fichier ce week-end mais j’y ai déjà réfléchi….
Je regarde ça lundi.
Bon week-end
@+:bonjour:
bebarthMaître des clésbonjour,
…et on peut faire le 1er stage à Pâques, le 2ème en février et le 3ème à Noël ???
Je suppose qu’ils doivent être exécutés dans l’ordre, non ?
@+
:bonjour:
bebarthMaître des clésbonjour Merlin,
Je pensais également que cela venait de Firefox que j’utilise, mais j’ai voulu te répondre avec Safari, et… :Euuuh:@+
:bonjour:
bebarthMaître des clésbonsoir,
Si les tarifs risquent d’être modifiés « fréquemment », il serait peut-être judicieux de les placer dans une table, et de les rappeler lorsqu’on en a besoin dans un script. Ça évite de les re-taper plusieurs fois et évite donc des sources d’erreurs…Je n’avais pas encore pu regarder ton travail.C’est fabuleux. :bravo: C’est exactement ce que je souhaitaisUn grand MerciiiiiiiiBonne soirée
Merlin,
Je modifierai le post plus tard, mais pour te montrer, il n’y a apparemment pas que moi qui est des soucis avec les retours lignes… Pour qu’ils fonctionnent je suis obligé de taper Majuscule-Retour ligne, sinon on dirait que c’est bon dans la fenêtre de texte, mais une fois le post publié, tout est sur la même ligne ! As-tu le même souci ?@+
:bonjour:
bebarthMaître des clésbonjour,
Voici un fichier où j’ai mis des boutons radio et fait les calculs pour la cotisation glace.
Regarde un peu les scripts des champs dont j’ai mis les textes en rouge.
Je pense que si ça te convient, tu sauras les adapter pour les autres champs.
@+
:bonjour:
bebarthMaître des clésMoi j’opterais pour des boutons radio !
En plus, ça simplifierait fortement le script car avec la commande switch tu pourrais juste indiquer le texte en fonction de la valeur du bouton… plus de boucles imbriquées les unes dans les autres.
Si ce n’est pas clair, je te ferai un exemple demain matin.
@+
:bonjour:
bebarthMaître des clésbonjour,
Je pense qu’il faut un peu mieux écrire les boucles, même si c’est un peu fastidieux quand beaucoup sont imbriquées… genre :Code:if (this.getField(« TJS_1h »).value != « Off ») {
event.value = « 1 Heure De Sol »;
} else {
if (this.getField(« TJS_2h »).value != « Off ») {
event.value = « 2 Heures De Sol »;
} else {
if (this.getField(« TJS_3h »).value != « Off ») {
event.value = « 3 Heures De Sol »;
} else {
if (this.getField(« TJS_4h »).value != « Off ») {
event.value = « 4 Heures De Sol »;
} else {
event.target.value = « »;
}
}
}
}Il y a également une erreur sur la console, mais pour l’instant je n’ai pas beaucoup de temps pour regarder !
TypeError: f is null
1051:byteCodeToolEst-il normal que l’on puisse cocher plusieurs cases ???
@+
:bonjour:
bebarthMaître des clésEnregistrer n’est disponible que via l’interface.
Pas tout à fait vrai avec un script d’application.@+ :bonjour:
bebarthMaître des clésJe ne pense pas directement !
A mon avis, tu dois d’abord enregistrer sous… le document puis l’envoyer par mail avec le nouveau nom, mais ce n’est possible qu’avec une version Acrobat Pro !
@+
:bonjour:
bebarthMaître des clésMerlin a raison d’être précis, même si la plupart du temps .value fonctionne pour la concaténation valeurs et de chaînes de caractères, et est même préférable si on ne veut pas indiquer dans un texte des 0 inutiles.
@+
:bonjour:
bebarthMaître des clésbonjour,
On écrit :Code:…
cSubject: this.getField(« date_auto »).value + « ici je veux du texte » + this.getField(« autreChamp »).value + maVariable + « je finis par un autre texte. »,
…On est souvent obligé de combiner valeurs et textes pour ajouter des espaces ou la ponctuation !
@+
:bonjour:
bebarthMaître des clésOn met des guillemets lorsqu’on indique un texte. Par exemple, pour cMsg : « Si vous voulez ne plus faire parti de… » est le texte que l’on veut faire apparaître.
Lorsqu’on veut indiquer la valeur d’une variable ou d’un champ, pas de guillemets ! Ici, pour cSubject, on veut indiquer la valeur du champ this.getField(« date_auto », donc (this.getField(« date_auto »).value sans guillemets.
@+
:bonjour:PS : par mesure de sûreté, il vaut mieux ne pas indiquer de vrai adresses mail (ou numéro de téléphone) sur le forum. J’ai corrigé en toto@hotmail.com
bebarthMaître des clésil faut écrire :
cSubject: this.getField(« date_auto »).value,
sans le premier guillemet !
@+
:bonjour:
bebarthMaître des clésCode:…
cSubject: this.getField(« leChamp »).value,
…@+
:bonjour:
bebarthMaître des clésbonjour,
Voici l’adresse où tu trouveras toutes les informations et paramètres nécessaires pour la commande mailDoc :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_mailDocbc-74&rhtocid=_6_1_8_23_1_73
Il faudra donc que tu écrives :Code:this.mailDoc({
bUI: true,
cTo: monadressemail,
cSubject: « Sujet du message »,
cMsg: « Si vous voulez ne plus faire parti de la liste de diffusion, veuillez envoyer un mail à… »
});@+
:bonjour:
bebarthMaître des clésbonsoir,
Voici ma proposition. Ici le point n’est retiré qu’une seule fois, même si on appuie plusieurs fois sur le bouton !Code:// si les 2 champs sont masqués, initialisation de la variable « moinsun »
if (this.getField(« TxrKO »).display == display.hidden && this.getField(« TxrOK »).display == display.hidden) var moinsun = 0;if (this.getField(« T5 »).value == this.getField(« T5b »).value) {
this.getField(« TxrOK »).display = display.visible;
this.getField(« TxrKO »).display = display.hidden;
}
else {
this.getField(« TxrKO »).display = display.visible;
this.getField(« TxrOK »).display = display.hidden;
// pour ne retirer qu’une fois le point, même si on appuie plusieurs fois sur le bouton
if (moinsun == 0) {
var moinsun=1;
this.getField(« Note 3 4 4 »).value= this.getField(« Note 3 4 4 »).value-1;
}
}@+
:bonjour:
bebarthMaître des clésDans ton ordre de calcul, « MONTANTTOTAL » est avant « MONTANTLICENCE ». Il faut inverser l’ordre :
Outils -> Formulaires -> Modifier -> Autres tâches -> Définir l’ordre de calcul
et là tu sélectionnes « MONTANTTOTAL » que tu descends sous « MONTANTLICENCE » avec le bouton « Descendre »
C’est peut-être un peu différent suivant la Version Acrobat et l’OS. Ici c’est avec Acrobat XI Mac.
@+
:bonjour:
bebarthMaître des clésbonjour,
Dans ta liste déroulante, as-tu coché “calculer immédiatement…” ?
Peux-tu partager ton fichier ?
Merci.@+
:bonjour:
bebarthMaître des clésbonjour,
Il faut juste que les noms des champs soient différents !
Exemple « P1_Case3 » et « P1_Case3bis ».
@+
:bonjour:
bebarthMaître des clésbonjour,
il faut écrire :Code:if (this.getField(« Jeune »).isBoxChecked(0) && this.getField(« FFCT »).isBoxChecked(0) && this.getField(« F »).isBoxChecked(0)) {this.event.value = this.getField(« Montant3 »).value;
} else {
this.event.value=0;
}@+
:bonjour:
bebarthMaître des clésbonjour,
A ce moment là, tu prends la version sans modifier le format du champ, et dans la condition tu rajoutes :
… || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==-Infinity
Ce qui donne une nouvelle version compliquée mais expliquée :
Script légèrement modifié/simplifié par rapport à celui posté ce matin -> Fichier correspondant.Code:// si le résultat de la division n’est pas un nombre ou est ± l’infini
if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==-Infinity) {
this.event.target.value = « »; // alors le champ est vide
} else { // sinon, division
var nombre = this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
var arrondi = nombre.toFixed(2); // 2 pour arrondir à 2 décimales
var nombre = arrondi;
var chaine = nombre.toString(); // conversion du nombre en chaine de caractères
var resultat = chaine.replace(« . », « , »); // remplace le point par une virgule
this.event.target.value = resultat; // valeur de ce champ
}Merci pour le « JavaScript » ! :bravo:
@+
:bonjour:
bebarthMaître des clésre-bonjour,
Après réflexion, il suffit simplement de modifier le format du champ (cf. copie d’écran) !!!Mais pourquoi faire simple quand on peut faire compliqué ?
Tu peux laisser le format du champ tel quel et modifier le script :Code:if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity) {
this.event.target.value = « »;
} else {
var num = this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
var n = num.toFixed(2);
var num = n;
var n = num.toString();
var str = n;
var res = str.replace(« . », « , »);
this.event.target.value =res;
}@+
:bonjour:PS : …et ici on parle JavaScript et non Java. Alors un petit effort !
bebarthMaître des clésbonjour,
quelque chose comme ça (à adapter) :Code:if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity) {
this.event.target.value = « »;
} else {
var num=this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
var entier=Math.floor(num);
var plus = num-entier;
switch(plus==0) {
case false:
if(((plus*10)-5)<=0) {var decimale=5
} else {
var decimale=0;
var entier = entier+1}
break;
case true:
var decimale=0;
break;
}
this.event.target.value =entier+ », »+decimale;
}je reviens plus tard…
…le script indiqué arrondit la décimale à 0 ou 5.
@+
:bonjour:
bebarthMaître des clésbonjour,
J’ai besoin de votre aide rapidement, si quelqu’un peut me donner un coup de main pour le Java ça serait vraiment apprécié !
Comme le ferait le merveilleux et non moins enchanteur Merlin, je commencerai par te conseiller de ne pas confondre Java et JavaScript :
https://abracadabrapdf.net/forum/index.php/topic,2160.0.htmlEn ce qui concerne ton problème, il y a déjà une division en champ P2_Texte46 dont tu ne parles pas. Est-ce normal ???
Pour le calcul du champ P2_Texte50, voici ce que j’écriraisCode:if (isNaN(this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value) || (this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value)==Infinity) {
this.event.target.value = « »;
} else {
this.event.target.value = this.getField(« P2_Texte47 »).value / this.getField(« P2_Texte48 »).value;
}Sur le fichier joint j’ai retiré le calcul du champ P2_Texte46.
@+
:bonjour:
bebarthMaître des clésEn pièce jointe, l’endroit où je suis bloquée.
j’ai beau chercher… :geek:
@+
:bonjour:
bebarthMaître des clésbonjour,
Peux-tu partager un fichier avec tes différentes cases ?
Merci.
@+
:bonjour:5 juin 2018 à 12:24 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63945
bebarthMaître des clésÇa marche, mais… ça manque d’homomorphisme !
Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
A mon avis, tu devrais écrire :
Code://…pour un icône à l’échelle 1/2
r[2] = r[0]+(r[2]-r[0])/2;
r[3] = r[1]+(r[3]-r[1])/2;@+
:bonjour:5 juin 2018 à 10:08 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63943
bebarthMaître des clésbonjour,
Il faut mettre tes lignes en fin de script, sauf qu’avant il faut « re-scanner » les annotations.
Sauf qu’avec r[2]=r[2]-5 et r[3]=r[3]-5, l’icône est diminué à chaque fois qu’on en rajoute un autre…
Il faudrait donc lui donner directement sa taille avec r[2]=r[0]+largeur et r[3]=r[1]+hauteur (ici c’est bien un plus, car…)Les coordonnées r[0], r[1], r[2], r[3] pour l’icône sont semblables à celles indiquées pour le champ.
…ça c’est faut ! Les coordonnées des l’icônes sont définis par le point inférieur gauche et le point supérieur droit (les champs sont définis par le point supérieur gauche et le point inférieur droit… il doit bien y avoir une explication mais je ne la connais pas).
J’ai vérifié les tailles des icônes et elles ne sont effectivement pas identiques :
Tombone = 7 x 17 pts
Punaise = 20 x 16 pts
Graphique = 20 x 20 pts
Etiquette = 20 x 16 pts
Attention donc de redéfinir les tailles proportionnellement par exemple r[2]=r[0]+10 et r[3]=r[1]+8 pour une punaise de moitié de taille originale.
Ci-joint le dernier fichier avec affichage dans la console des dimensions.
Dans ce fichier il faudra évidemment retirer les barres obliques et indiquer la largeur et la hauteur souhaitées.Code://r[2] = r[0]+largeurSouhaitee;
//r[3] = r[1]+hauteurSouhaitee;@+
:bonjour:4 juin 2018 à 12:31 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63941
bebarthMaître des clésbonjour,
C’est tout à fait exact. Les coordonnées r[0], r[1], r[2], r[3] pour l’icône sont semblables à celles indiquées pour le champ.
Pour avoir la largeur de l’icône il faut donc faire r[2]-r[0] et pour avoir la hauteur r[1]-r[3] (le 0 est en bas à gauche).
De tête, je ne connais pas exactement la largeur des icônes (il me semble qu’elle n’est pas identique pour tous), il faut donc faire attention de ne pas trop réduire !Si l’on veut placer l’icône à une position exacte par rapport au champ, j’avais écris un petit script dont je joint l’action pour connaitre exactement les coordonnées d’un champ.
@+
:bonjour:
bebarthMaître des clésLe script de calcul est déclenché par le changement d’état d’un champ (celui-ci ou un autre). Merlin… des commentaires ?
https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/lordre-dexecution-des-evenements-dans-les-champs-de-formulaire-pdf/
Lorsque le script est lancé il s’exécute entièrement. Donc si le script de calcul de ta liste est lancé, il va voir la valeur du bouton BR2 qui ne changera pas d’état pendant tout le script !
Pour faire un peu plus court, tu peux écrire une formule en script de document et lancer cette formule sur chaque bouton.
Par exemple, en script de document tu écris :Code:function maFormule()
{
if (this.getField(« BR2 »).value==2) {
this.getField(« BR2 »).value=1;
} else {
this.getField(« BR2 »).value=2;
}
this.getField(« Liste »).value= » « ;
}…et en script d’action du bouton radio tu écris juste :
Code:maFormule();S’il y a des modifications ou du supplément de script, il n’y a juste à l’écrire dans le script de document. Si tu as 30 boutons, ça réduit pas mal le temps !
@+
:bonjour:
bebarthMaître des clésbonjour,
Dans le fichier joint, j’ai mis un script de calcul sur le bouton droit BR1.Code:if (this.getField(« BR2 »).value==2) {
this.getField(« BR2 »).value=1;
} else {
this.getField(« BR2 »).value=2;
}
this.getField(« Liste »).value= » « ;Donc, dans l’exemple uniquement lorsqu’on clique le bouton BR1 droit, le bouton BR2 change et la liste est remise sur » « .
J’ai remis les champs A, B et C sinon il y avait erreur…
@+
:bonjour:
bebarthMaître des clésbonjour,
Est-il possible de cacher 1 seul bouton-radio sur 3 (par exemple) sans que les 2 autres se cachent ?
ça Merlin a répondu !
Si, à chaque que je change la valeur du bouton radio1
Alors, la Liste1 revient à sa valeur initial (et on peut encore changer la valeur de la Liste1 à la main)…et ça, ce serait bien que tu reformules et si possible que tu partages un fichier, car je ne suis pas certain de comprendre !
A quoi servent les boutons radio ?
@+
:bonjour:
bebarthMaître des clésnon,mais on peut écrire :
Code:switch (event.value < 55) {
case true:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.A »).display = display.visible;
break;
default:
this.getField(« Phot »).display = display.hidden;
}…je reviens plus tard pour les autres questions !
@+
:bonjour:
bebarthMaître des clésbonjour,
Ce n’est pas très évident à comprendre, car event.value représente la nouvelle valeur du champ, tandis que event.target.value représente la valeur actuelle du champ.
https://forums.adobe.com/thread/2302153
« Savoir quand utiliser l’un ou l’autre est compliqué… » c’est dit dans le texte !
@+
:bonjour:
bebarthMaître des clésJe n’ai jamais eu de PC ! :extra:
Apple II en 1980 et Mac depuis le 128k en 1984… et en 110 V. J’avais un transfo presque aussi gros que le Mac.Il y a eu des moments très durs début des années 90 ou le service informatique voulait supprimer mon mac. Grâce à mes collègues américains qui m’ont toujours soutenu, j’ai pu rester le seul Mac en France. Quel bonheur… comme ils n’y connaissent rien, j’ai tous les droits admin sur mes Mac’s. Je fais ce que je veux et je les sollicite uniquement pour l’achat de matériel ou logiciel. Et à chaque fois j’entends « Mac, c’est de la m…. ». Au début ça m’énervais mais ça fait déjà un moment que ça glisse et que je pense « cause toujours, le principale c’est que j’ai mon Mac ». J’en ai d’ailleurs 3 sur mon bureau maintenant !
@+
:bonjour:
bebarthMaître des clés??? je n’ai pas compris !
:doute:
bebarthMaître des clésbonjour,
moi quand il y a plein de if/else, je préfère l’expression switch qui pour moi me semble plus claire.Code:switch (event.value) {
case « A »:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.A »).display = display.visible;
break;
case « B »:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.B »).display = display.visible;
break;
case « C »:
this.getField(« Phot »).display = display.hidden;
this.getField(« Phot.C »).display = display.visible;
break;
default:
this.getField(« Phot »).display = display.hidden;
}Mais ce n’est que mon opinion !
@+
:bonjour:28 mai 2018 à 13:58 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64014
bebarthMaître des clésbonjour,
Voici ma proposition avec cases à cocher.
J’entends déjà Merlin dire qu’il n’aime pas cette fonction…
@+
:bonjour:25 mai 2018 à 21:13 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64009
bebarthMaître des clésCe ne serait pas un lien ???
@+
:bonjour:25 mai 2018 à 17:44 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64008
bebarthMaître des clésPour moi aussi, c’est ce qu’il y a de plus simple, mais :
c’est bien ce que je pensais faire mais dans les propriétés de mon masque je n’ai pas script de calcul…

Dans les propriétés j’ai juste « général, aspect, position, option, action »…ce n’est donc pas un champ !
Ce n’est pas non plus une annotation.
@+
:bonjour:25 mai 2018 à 17:03 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64006
bebarthMaître des clésbonjour,
Qu’est-ce que le « masque c » pour toi ?
Tu peux partager un exemple ?
@+
:bonjour:22 mai 2018 à 11:16 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63936
bebarthMaître des clésbonjour,
Voilà, j’ai un peu peaufiné le sujet avec un maximum de 5 pièces jointes !
On pourrait encore l’améliorer et vérifier que les icônes ne soient pas hors pages…
@+
:bonjour:
bebarthMaître des clésTu remplaces la dernière ligne par celles-ci :
Code:if (this.getField(« laDate1″).value != » » && this.getField(« laDate2″).value != » ») {
this.event.target.value= »La différence est de « +Math.abs(mois)+ » mois. »;
} else {
this.event.target.value= » »;
}@+
:bonjour:
bebarthMaître des clésbonjour,
Voici un script à placer en script de calcul du champ texte.Code:var str=this.getField(« laDate1 »).valueAsString;
var res = str.split(« / »);
mois1=parseInt(res[1]);
annee1=parseInt(res[2]);
var str=this.getField(« laDate2 »).valueAsString;
var res = str.split(« / »);
mois2=parseInt(res[1]);
annee2=parseInt(res[2]);
var mois= Math.abs(annee2-annee1)*12;
if (annee2>annee1) {
var mois = mois-12+(12-mois1)+mois2;
} else {
var mois = mois-12+(12-mois2)+mois1;
}
this.event.target.value= »La différence est de « +Math.abs(mois)+ » mois. »@+
:bonjour:20 mai 2018 à 16:54 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63932
bebarthMaître des clésbonjour,Une petite variante pour choisir l’icône et sa couleur.@+ :bonjour:
20 mai 2018 à 13:56 en réponse à : Condition à appliquer dans le cas du "cochage" de deux cases #64001
bebarthMaître des clésboujour,Voici une rapide réponse pour un script de calcul du champ texte.N’hésite pas à me dire si tu ne comprends pas.@+ :bonjour:
18 mai 2018 à 09:22 en réponse à : Personnalisation d’un bouton permettant d’importer une pièce jointe #63928
bebarthMaître des clésbonjour,
Voici un exemple pour faire apparaitre l’épingle (ou autre) à la gauche du bouton.
Attention, le point à indiquer pour la position de l’icône est le supérieur gauche, et la taille de l’icône ne varie pas en fonction de l’affichage.
Il faudra certainement ajuster la position Y en fonction de la hauteur du bouton.
@+
:bonjour:
bebarthMaître des clésc’est un peu plus compliqué parce qu’il faut imbriquer des boucles…
Code:var nbExportListe1=this.getField(« ListeNiveau1 »).value;
var nbExportListe2=this.getField(« ListeNiveau2 »).value;
switch (nbExportListe1) {
case 0: //Afrique
switch (nbExportListe2) {
case 0: //Algérie
var nbAindiquer = 150;
break;
case 1: //Maroc
var nbAindiquer = 125;
break;
//etc.
}
break;
case 1: //Europe
switch (nbExportListe2) {
case 0: //France
var nbAindiquer = 1000;
break;
case 1: //Allemagne
var nbAindiquer = 500;
break;
case 2: //Italie
var nbAindiquer = 750;
break;
case 3: //Espagne
var nbAindiquer = 300;
break;
//etc.
}
break;
case 2: //Amérique du nord
switch (nbExportListe2) {
case 0: //USA
var nbAindiquer = 10;
break;
case 1: //Canada
var nbAindiquer = 50;
break;
//etc.
}
break;
//etc.
}
this.event.target.value= nbAindiquer;mais avec un bon éditeur de JavaScript ça se fait !
@+
:bonjour:
bebarthMaître des clés…il faut lire :
Code:…
default:
…et non « delault: », ce qui ne veut rien dire :geek:
Merlin,
il m’est maintenant impossible de modifier une de mes réponse (je crois après un certain temps), même s’il n’y a pas eu d’autres réponses…@+
:bonjour:
bebarthMaître des clésbonjour,
Tu écris un petit script de calcul pour ton champ texteCode:var nbExportListe=this.getField(« ListeNiveau2 »).value;
switch (nbExportListe) {
case 0: //France
var nbAindiquer = 1000;
break;
case 3: //Espagne
var nbAindiquer = 300;
break;
delault:
var nbAindiquer = 0;
}
this.event.target.value= nbAindiquer;…et tu n’oublies pas de cocher « Valider les valeurs sélectionnées immédiatement » en option de la liste déroulante.
@+
:bonjour:7 mai 2018 à 20:53 en réponse à : Ajouter un champ de formulaire dans la fonction "enregistrer sous" #63908
bebarthMaître des clésbonjour,
Dans un premier temps je te propose de regarder ce post :Dans l’exemple joint il y a un bouton « Enregistrer » …qui enregistre et un bouton « Enregistrer sous » qui enregistre avec les nouvelles valeurs des champs « ref » et « Horodatage ». J’espère que tu sauras l’adapter pour ton fichier.
@+
:bonjour:…et de voir si tu peux l’adapter à ton problème (ouverture d’une fenêtre qui demande le nom avec lequel tu veux enregistrer ton fichier sous…).
@+
:bonjour:
bebarthMaître des clésbonjour,
…du coup, je partage quand même l’exemple avec un script que j’avais écris si ça peut servir à quelqu’un !
@+
:bonjour:
bebarthMaître des clésbonjour,
Lorsque l’on masque une page, le signet correspondant perd sont action. Avec un script, il faut donc recréer cette action lorsque l’on fait réapparaitre la page.
Sinon tu pourrais renommer le signet (avec un tiret par exemple) lorsque tu masques la page, ou mettre la couleur du signet en blanc… ou les deux !!!
Je crois qu’il faudrait trouver la couleur exacte, car lorsqu’on met le texte du signet en blanc on arrive à le lire ! le fond ne doit pas être tout à fait blanc, parce que plus blanc que blanc, je ne vois pas…
@+
:bonjour:
bebarthMaître des clésbonjour,
un petit screeshot vaut mieux qu’un long discours !
@+
:bonjour:3 mai 2018 à 21:29 en réponse à : [Adobe ACROBAT] : permettre des textes de couleurs et des tableaux dans un champ #63870
bebarthMaître des clésbonjour,
Voici une proposition où l’on peut choisir la couleur du texte avec un bouton radio.
Est-ce de cette manière que tu voulais pouvoir modifier la couleur ?
@+
:bonjour:
bebarthMaître des clésbonjour,
Il ne peut pas être incorporé au fichier pdf ?
si, tu pourrais le mettre en action d’un signet par exemple !
@+
:bonjour:
bebarthMaître des clésbonjour,
Apparemment non, je ne crois pas que le fichier ait un souci ! C’est un fichier action (zippé).
Il faut le décompresser et double-cliquer pour l’installer.
Si tu l’utilises avec le fichier joint (par exemple), tu lances l’action et ça fonctionne bien !
@+
:bonjour:
bebarthMaître des clésPour commentaires !
bonjour,
Pas de commentaires ??? :doute:
On oubli et on passe à autre chose alors !
@+
:bonjour:
bebarthMaître des clés…dans le principe c’est ça qu’il faut faire ! mais au lieu coller x fois le script, tu créé un script de document « calcul » par exemple, ensuite tu le rappelles uniquement avec calcul();
c’est plus pratique lorsqu’il y a des modifications à faire. ça évite de les recoller partout…
@+
:bonjour:
bebarthMaître des clésbonjour,
As-tu compris le principe ?
@+
:bonjour:
bebarthMaître des clésbonjour,
Voici un petit script pour te permettre de compter les différentes options choisies :Code:var totalA=0;
var totalB=0;
var totalC=0;
for ( var i=0; ivar fname = this.getNthFieldName(i);
if (this.getField(fname).type == « radiobutton » ) {
var valeur = this.getField(fname).value;
switch (valeur) {
case « A »:
totalA++;
break;
case « B »:
totalB++;
break;
case « C »:
totalC++;
}
}
}
app.alert(« Boutons radio trouvés :u0020u000Du0020″+ totalA + » option(s) A.u0020u000Du0020″+ totalB + » option(s) B.u0020u000Du0020″+ totalC + » option(s) C. »,1)@+
:bonjour:
bebarthMaître des clésbonjour,
Comme ça je ne vois pas ! il faudrait voir le fichier… sur le dernier fichier que j’avais joint (exemple-test_BB1.pdf) ça fonctionne, non ???
@+
:bonjour:
bebarthMaître des clésbonjour,
Avez-vous une idée de comment mettre en pratique ?
J’ai écris un petit script qui supprime les pages qui possèdent un champ dont le nom contient « ACC_FR ».
Code:var test = « ZERO »;
var pagesAsupprimer = new Array();
// On teste tous les noms des champs
for (var i = 0; i < this.numFields; i++) {
var fname = this.getNthFieldName(i);
// Page relative au champ
var fpage = this.getField(fname).page;
// Ici on teste si le nom du champ con tient ACC_FR
var str = fname;
var n = str.indexOf(« ACC_FR »);
// Si ACC_FR a été trouvé et la page n’est pas identique à la précédente trouvée
if (n > -1 && fpage != test) {
pagesAsupprimer.unshift(fpage);
var test = fpage;
}
}
// On remet les numéros de pages dans l’ordre décroissant
pagesAsupprimer.sort(function(a, b){return b-a});
// On supprime les pages trouvées dans l’ordre de la table (sens inverss)
for (var i = 0; i < pagesAsupprimer.length; i++) {
this.deletePages({nStart: pagesAsupprimer});
}Il faudra adapter le script selon le nom des champs à tester !
@+
:bonjour:
bebarthMaître des clésbonjour,
Si je veux afficher à l’ouverture du fichier une des 2ème, 3ème, 4ème page cachées dès le départ il ne se passe rien tant que je n’ai pas affiché la première !?!
Je ne suis pas certain de comprendre !
Tu veux afficher directement la page cochée ???
Si c’est cela, tu retiresCode:this.pageNum=pg;en fin de chaque script de checkbox.
@+
:bonjour:
bebarthMaître des clésbonjour,
Tu peux sélectionner uniquement le texte compris entre l’underscore « _ » et le point « . »Code:…
var str = fname;
var n = str.indexOf(« _ »);
var nn = str.indexOf(« . »);
var Pays = str.slice(n+1,nn);
……et là il peut y avoir autant de chiffres qu’il est possible !
@+
:bonjour:
bebarthMaître des clésbonjour,
Comme tu as pu le constater, le JavaScript ne fonctionne pas pour les formulaires ouverts dans un navigateur…
Il faut les importer en local.
@+
:bonjour:
bebarthMaître des clés…en vacances, sans ordi ni wifi !!!
@+:bonjour:
bebarthMaître des clésSi c’est possible je souhaite que ça soit pas une case texte mais une deuxième liste déroulante afin de choisir directement DT ou TM si l’on veux, mais qu’il mettent automatiquement DT ou TM en fonction de A B C .
…je n’ai donc pas bien compris !
:geek:
bebarthMaître des clésbonjour,
Si j’ai bien compris, il faut que tu fasses une recherche sur le forum sur « liste mère fille ».Je sais pas si c’est possible ça me parait compliqué x)
…je te confirme, ce n’est pas par le plus simple que tu commences !
@+
:bonjour:
bebarthMaître des clésbonjour,
…sinon, on peut tester les pages qui possèdent au moins un champ comprenant « .ACC_ » (par exemple), et on supprime ces pages !
@+
:bonjour:
bebarthMaître des clésbonjour,
c’est un bouton radio qu’il te faut pour choisir soit le choix 1 soit le choix 2 !
En script du bouton radio du choix 1 tu écris :Code:this.getField(« Nom »).display=display.visible;
this.getField(« Prenom »).display=display.visible;
this.getField(« Adresse1 »).display=display.visible;
this.getField(« Societe »).display=display.hidden;
this.getField(« Representant »).display=display.hidden;
this.getField(« Adresse2 »).display=display.hidden;…et en script du bouton radio du choix 2 tu écris… l’inverse !
@+
:bonjour:
bebarthMaître des clésbonsoir,
Voici ma proposition.
Tu places les 3 dossiers inclus dans « monDossier » où tu veux, mais dans le même répertoire (ENV, ECO et Compteurs).
Tu places le fichier « Save_NumAuto.js » en script d’application.
Tu installes l’action « Nume?rotation Automatique.sequ ».
Lorsque tu lances l’action à partir d’un fichier inclus dans ENV ou ECO, tu devrais avoir ce que tu recherchais…
Pour commentaires !
@+
:bonjour:
bebarthMaître des clés…je n’avais pas vu « en français » !
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp
@+
:bonjour:
bebarthMaître des clés…pour en savoir un peu plus :
https://www.w3schools.com/jsref/jsref_obj_regexp.asp
@+
:bonjour:
bebarthMaître des clésbonjour,
En script de calcul de ton champ « nombre de bouteilles » tu écris :Code:if (this.event.target.value <= 18) {
this.getField(« P_Tr »).value = (this.event.target.value*2)+ »,00 € »;
} else {
this.getField(« P_Tr »).value = « OFFERT »;
}En script de touche (toujours pour ce champs) tu écris :
Code:var regxp=/^[0-9]$/;
if(!event.willCommit) {
if(event.change.length>0 && regxp.test(event.change)==false)
{
app.beep(0);
event.rc=false;
}
}…pour ne tenir compte des nombres positifs !
@+
:bonjour:
bebarthMaître des clésbonjour,
Le numéro d’incrémentation est-il commun pour les 2 répertoires ENV et ECO.
Quel sera le logiciel de l’utilisateur ? Acrobat pro ou Adobe Reader ?
Je regarde ça un peu plus tard…
@+
:bonjour:
bebarthMaître des clésbonjour,
S’il n’y a pas d’autres réponses avant, ce ne sera que demain pour t’aider…
On est d’accord que tous les utilisateurs on les droits d’écritures dans les répertoires !
La zone « Num_Doc » dont tu parles est un champ je suppose.…
Le premier dossier s’appel « ENV ».
Le second s’appel « ECO ».
…
J’aimerais également que lorsqu’il enregistre le formulaire, le formulaire soit enregistré sous avec pour titre le Num_Doc.
…Les fichiers sont enregistrés dans le même répertoire ???
Ce sera au moins un script d’action pour pouvoir enregistrer les documents !
@+
:bonjour:
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: -
AuteurRéponses
