Toutes mes réponses sur les forums
-
AuteurRéponses
-
MerlinMaître des clés1 Il y a une erreur dans cette ligne :
if ((event.target.type == "combobox" && event.name == "Format") || (event.target.type == "listbox" && event.name == "Keystroke")) {À remplacer par :
if ((event.target.type == "combobox" && event.name == "Keystroke") || (event.target.type == "listbox" && event.name == "Keystroke")) {2 Le script devrait être placé en script de « Touche personnalisé » et non pas en script de Format (un script de Format ne modifie que l’affichage, pas la valeur elle-même. Ce qui explique que la valeur du 2e menu revienne toujours à sa valeur par défaut).
Ci-joint.
Attachments:
You must be logged in to view attached files.29 décembre 2021 à 15:32 en réponse à : Champs obligatoires (boutons radio) multipage et valeurs #70212
MerlinMaître des clésUne autre solution simple : dans le champ « résultat » afficher un message (en rouge*) expliquant qu’il faut que tout soit coché pour déclencher l’affichage du résultat.
Et y afficher le résultat à la place du message quand tout est OK.
- On peut aussi le faire clignoter si besoin 😉
29 décembre 2021 à 12:02 en réponse à : Ajouter les pages d’un document joint à partir d’un bouton d’action #70211
MerlinMaître des clésBonjour
Si par « document joints » tu entends « pièces jointes du document PDF » il y a moyen de faire autrement, on peut facilement afficher une pièce jointe, surtout si elle est en PDF.
28 décembre 2021 à 16:42 en réponse à : Champs obligatoires (boutons radio) multipage et valeurs #70207
MerlinMaître des clésOn ne peut (heureusement) pas empêcher un utilisateur d’enregistrer un document, par contre au moment où il enregistre rien n’empêche de lui afficher un message explicatif si tout n’est pas rempli.
28 décembre 2021 à 11:20 en réponse à : Champs obligatoires (boutons radio) multipage et valeurs #70194
MerlinMaître des clésBonjour
Je ne suis pas certain de bien comprendre la question.
Vu comme ça pour moi il y aurait deux solutions, soit rendre tous les boutons-radios obligatoires, soit ne déclencher le calcul final que quand tous les groupes de boutons-radio sont cochés.
Cette dernière solution étant à mon avis la plus fiable et la plus logique car elle n’afficherait pas un résultat faux ou partiel lors de la saisie utilisateur.
MerlinMaître des clésBonjour
Si tu as réussi à poster ici il n’y a pas de raison que ça ne fonctionne pas ailleurs…
En tous cas tu peux toujours poster ta question ici, il y sera répondu même si je n’arrive pas à la déplacer.
😎
MerlinMaître des clésC’est possible si et seulement si l’utilisateur utilise Firefox et le plugin Acrobat.
Autant dire qu’on perd la plus grande partie des utilisateurs avant même d’avoir commencé.
Il existe une autre méthode : forcer le téléchargement du PDF et forcer son ouverture avec Acrobat ou Foxit Reader.
Voir :
MerlinMaître des clés👍
MerlinMaître des clésBonjour
Il y a deux problèmes :
1- Dans la première ligne du script
str = event.target.value;
signifie « la valeur du champ du champ actif », c’est à dire la valeur déjà affichée par ce champ.
Alors que
str = event.value;
signifie « la valeur qui vient d’être saisie », ce qui n’est généralement pas la même chose.
Donc il faut remplacer la 1re ligne ci-dessus par la 2e.
2- L’emplacement du script n’est pas bon.
Un script de Format ne change jamais la « vraie » valeur d’un champ, il ne change que l’affichage de cette valeur (il faut penser aux formats de Date : la date ne change pas, c’est seulement sa présentation qui change).
Donc dans ce cas il faut utiliser un script de Validation, qui modifie vraiment la valeur saisie.
Ce tuto devrait t’aider à y voir plus clair dans l’ordre d’enchainement des évènements :
L’ordre d’exécution des événements dans les champs de formulaire PDF
-
Cette réponse a été modifiée le il y a 3 années et 10 mois par
Merlin.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésCeci pourrait peut être aider à répondre à ta dernière question (dont je ne connais pas la réponse) :
MerlinMaître des clésLe problème c’est la boucle :
for (var i = 0; i < this.numFields; i++) {
this.numFields ça veut dire : nombre de champs contenus dans le document (199 dans ce document).
Les champs à calculer sont nommés avec des suffixes qui vont de xxxxx.0 à xxxxx.52
Comme il y a plus que 52 champs dans le document quand « i » arrive à la valeur 53 ça provoque une erreur puisque ces champs n’existent pas (en JavaScript « null » ça veut dire : n’existe pas).
Donc il faut remplacer la ligne ci-dessus par celle-ci, qui indique zéro comme valeur de départ et 52 comme valeur à ne pas dépasser :
for (var i = 0; i < 53; i++) {
-
Cette réponse a été modifiée le il y a 3 années et 10 mois par
Merlin.
MerlinMaître des clésBonjour
« Le champ n’existe pas » parce-que tu fais faire une boucle au script alors qu’il n’y a que des champs « .0« , donc pas besoin de boucle ni de « +i« .
if (this.getField("CheckBox.0").value == "A" & this.getField("TheckBox.0").value != "D") {
app.alert({cMsg:"Attention, les apprentis ne peuvent pas être au lycée quand les élèves sont en PFMP ou en vacances", nIcon:2});
this.getField("CheckBox.0").value = "Off"
}Attachments:
You must be logged in to view attached files.
MerlinMaître des clésSi jamais tu avais peur de t’ennuyer pendant les fêtes il y a d’autres ressources listées ici :
🤓
MerlinMaître des clésTu as raison de préciser qu’il est inutile d’exécuter les 53 scripts; J’avais remarqué que lorsque j’ai un pdf dans lesquels trop de champs contiennent des scripts
C’est pour ça que mon exemple n’utilise qu’un seul script de calcul dans un seul champ.
😎
Ce que tu appelle script de touche personnalisée
Voir capture jointe et voir aussi ce tuto, mais je ne connais pas les équivalences avec PDF XChange Editor Plus :
L’ordre d’exécution des événements dans les champs de formulaire PDF
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour
- C’est parce-que les couleurs ne sont pas référencées correctement il manque /255, voir le script ci-dessous. Si la 1re fonctionnait c’est parce qu’elle n’utilisait que 255 et 0, si la dernière fonctionne c’est parce-que c’est une couleur nommée.
2. Il faut placer le script à la suite du calcul existant dans le bouton CALCUL, voir le ci-joint.
for (var j = 0; j < 53; j++) {if (this.getField("diff."+j).value === 0) {
this.getField("diff."+j).fillColor = color.transparent;}else if (this.getField("diff." +j).value === 1) {
this.getField("diff."+j ).fillColor = ["RGB", 0/255, 255/255, 0/255];}else if (this.getField("diff." +j).value === 2) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 205/255, 0/255];}else if (this.getField("diff." +j).value === 3) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 180/255, 0/255];}else if (this.getField("diff." +j).value === 4) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 149/255, 0/255];}else if (this.getField("diff." +j).value === 5) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 122/255, 0/255];}else if (this.getField("diff." +j).value === 6) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 102/255, 0/255];}else if (this.getField("diff." +j).value === 7) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 77/255, 0/255];}else if (this.getField("diff." +j).value === 8) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 54/255, 0/255];}else if (this.getField("diff." +j).value === 9) {
this.getField("diff."+j ).fillColor = ["RGB", 255/255, 37/255, 0/255];}else if (this.getField("diff." +j).value === 10) {
this.getField("diff."+j ).fillColor = color.red;}else {this.getField("diff."+j ).fillColor = color.transparent;}}Attachments:
You must be logged in to view attached files.
MerlinMaître des clésJe crois que le script est plus logique et plus compréhensible ainsi, j’ai changé le nom des variables :
var comptA = 0;
var comptB = 0;
var comptC = 0;// Itération de tous les champs du document
for (var i = 0; i < this.numFields; i++) {var oFld = this.getField(this.getNthFieldName(i));
// si le champ est de type "checkbox" et si son nom contient "CheckBox" et si sa valeur n'est pas nulle
if ((oFld.type == "checkbox") && (/CheckBox/.test(oFld.name)) && (oFld.value != "Off")) {if (oFld.value == "A") {comptA += 1;}
if (oFld.value == "B") {comptB += 1;}
if (oFld.value == "C") {comptC += 1;}
}
}this.getField("LT").value = comptA;
this.getField("ET").value = comptB;
this.getField("VT").value = comptC;
MerlinMaître des clésvar compt0 = 0;
var compt1 = 0;
var compt2 = 0;// Itération de tous les champs du document
for (var i = 0; i < this.numFields; i++) {var oFld = this.getField(this.getNthFieldName(i));
// si le champ est de type "checkbox" et si son nom contient "CheckBox" et si sa valeur n'est pas nulle
if ((oFld.type == "checkbox") && (/CheckBox/.test(oFld.name)) && (oFld.value != "Off")) {if (oFld.value == "A") {compt0 += 1;}
if (oFld.value == "B") {compt1 += 1;}
if (oFld.value == "C") {compt2 += 1;}
}
}this.getField("LT").value = compt0;
this.getField("ET").value = compt1;
this.getField("VT").value = compt2;
MerlinMaître des clésCi-joint, le script se trouve dans le champ masqué « CALCUL ».
Pour que des cases à cocher fonctionnent comme des boutons-radios il faut que chaque rangée (par exemple) de cases ait le même nom et une valeur d’exportation différente, comme dans le ci-joint.
Le script fait les totaux en fonction de la valeur d’exportation de chaque coche, s’il y en a une (valeur).
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésDans mon premier message, le fichier est attaché, je suis le seul à le voir ?
OTAN pour moi, je m’étais concentré sur le 2e message. 😵
Ton document à l’air bien inutilement compliqué, je répondrai plus longuement demain.
MerlinMaître des clésSinon tu peux utiliser JavaScript, en modifiant un tout petit peu cet exemple ça devrait le faire :
Script pour ajouter un bouton avec action Page suivante sur fichiers pdf
MerlinMaître des clésBonjour
En fait il faut prendre le problème à l’envers, c’est très rapide.
Pour commencer il faut supprimer tous les boutons déjà créés, sauf un. Ça se fait en tournemain dans la liste des champs du panneau « Préparer le formulaire » d’Acrobat Pro.
Ensuite il faut soigneusement paramétrer le bouton restant en lui attribuant tous les paramètres (position, aspect, action, etc) nécessaires.
Et pour finir, clic-droit sur le bouton : Dupliquer sur toutes les pages.
C’est terminé.
Pour les autres documents il suffit de copier-coller un bouton et de le dupliquer de la même manière sur toutes pages.
MerlinMaître des clés🤗
MerlinMaître des clésBonjour
C’est une propriété du document, pas un réglage du logiciel.
Tu étais à deux doigts de la solution : menu Fichier : Propriétés : Vue initiale
La suite en image :
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour
Est-ce que ce sont des cases à cocher indépendantes ou bien est-ce qu’elles fonctionnent avec un choix unique pour chaque ligne (comme des boutons-radio) ?
Peux tu partager ton document ou un exemple ?
11 décembre 2021 à 23:06 en réponse à : Générer un numéro unique non aléatoire dans un champ texte #70106
MerlinMaître des clés👍
J’ajoute juste qu’avec le script de bebarth le champ COMPTEUR ne doit surtout pas être au format « nombre », ce qui supprimerait les zéros directeurs de toute façon.
Par principe, un champ dont le contenu est issu d’un calcul ou d’un script, donc non modifiable par l’utilisateur, n’a pas besoin d’avoir un « format », puisque la valeur obtenue a déjà ce format.
10 décembre 2021 à 17:11 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70103
MerlinMaître des clés😎
9 décembre 2021 à 22:34 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70100
MerlinMaître des clésPour avoir un bouton avec « texte sur icône » (à ajouter avant la dernière ligne) :
f.buttonPosition = position.overlay; // texte sur icônePour ne pas avoir le texte (les flèches) il faut supprimer ou désactiver cette ligne :
f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite9 décembre 2021 à 17:08 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70098
MerlinMaître des clésAjoute cette ligne juste avant la dernière accolade , il faut indiquer le chemin d’accès au fichier icône (qui peut aussi être en PNG ou JPG) :
f.buttonImportIcon("/F/pdfs/monIcone.pdf");9 décembre 2021 à 13:52 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70096
MerlinMaître des clésCette fois j’ai testé avec un Acrobat tout juste ouvert et donc débarrassé de toute variable fantôme, il y en avait deux autres 😱
// POSITION BOUTON "PAGE SUIVANTE"
var nPosBt6 = 1.5; // multiplicateur
var inch = 28.3; // unité de base, ce qui fait 1 inch = 1 centimètre// CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
for (var p = 0; p < this.numPages; p++) {
// Position du rectangle
var aRect = this.getPageBox( {nPage: p} );
aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
aRect[1] -= .5*inch; // 0,5 cm from the top of page
aRect[3] = aRect[1] - 15; // and 15 points high
var f = this.addField("btPageSuiv", "button", p, aRect)
f.setAction("MouseUp", "this.pageNum++");
f.userName = "Page suivante"; // infobulle
f.display = display.noPrint;
f.borderStyle = border.s;
f.highlight = "none";
f.textSize = 0; // 0 = corps automatique
f.textColor = color.black;
f.fillColor = color.white;
f.strokeColor = color.black;
f.textFont = font.Helv; // Helvetica
f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
}9 décembre 2021 à 13:33 en réponse à : Générer un numéro unique non aléatoire dans un champ texte #70095
MerlinMaître des clésIl faut créer un champ texte qu’on va nommer COMPTEUR dans le document, initialisé à zéro.
Et ajouter cette ligne juste avant le script de réinitialisation :
this.getField("COMPTEUR").defaultValue = Number(this.getField("COMPTEUR").value) +1;
MerlinMaître des clésOublie tout ce qui a été écrit précédemment et ce vieux script inutilement compliqué.
Je viens justement de croiser un script beaucoup plus simple sur un autre forum.
Ci-dessous et dans le document ci-joint en script de calcul du champ qui indique le nombre de jours :
if (this.getField("DateDeb").value != "" && this.getField("DateFin").value != "") {
var dd = this.getField("DateDeb").value;
var rd = this.getField("DateFin").value;
var d1 = util.scand("dd/mm/yyyy", dd);
var d2 = util.scand("dd/mm/yyyy", rd);
var diff = (d2.valueOf() - d1.valueOf()) / 1000;
event.value = (Math.round((diff / 60 / 60) / 24)+1) + " jour(s)";
}
else {event.value = "";}Attachments:
You must be logged in to view attached files.8 décembre 2021 à 12:35 en réponse à : Générer un numéro unique non aléatoire dans un champ texte #70086
MerlinMaître des clésBonjour
Qu’appelles tu un « numéro unique » ? Est-ce qu’il doit être vraiment unique universellement parmi tous les documents du monde ou bien est-ce qu’il doit n’être unique que pour toi ?
À quoi devrait ressembler cette numérotation ?
MerlinMaître des clésC’est parce-que tu n’as pas intégré la fonction qui se trouve en script de document dans l’exemple fourni :
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour
Met ce code en script de Format Personnalisé dans le champ « texte2 » :
if (event.value == 1) {event.value = ""};7 décembre 2021 à 13:28 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #70076
MerlinMaître des clésEn fait il manquait la première ligne, qui défini la variable « nPosBt6 ».
Du coup j’ai testé et j’ai remplacé les « >>> » par leur équivalent Unicode car ça buggait (en dernière ligne).
// POSITION BOUTON "PAGE SUIVANTE"
var nPosBt6 = 1.5; // cm à partir du bord DROIT de la page, ce bt fait 1 cm de large// CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
for (var p = 0; p < this.numPages; p++) {
// Position du rectangle
var aRect = this.getPageBox( {nPage: p} );
// aRect[0] = zéro car on est dans la CROP box
aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
aRect[1] -= .5*inch; // 0,5 cm from the top of page
// aRect[3] = zéro car on est dans la CROP box
aRect[3] = aRect[1] - 15; // and 15 points high
var f = this.addField("btPageSuiv", "button", p, aRect)
f.setAction("MouseUp", "pageSuiv()");
f.userName = "Page suivante"; // infobulle
f.display = display.noPrint;
f.borderStyle = border.s;
f.highlight = "none";
f.textSize = 0; // 0 = corps automatique
f.textColor = color.black;
f.fillColor = color.white;
f.strokeColor = color.black;
f.textFont = font.Helv; // Helvetica
f.buttonSetCaption("\u003E\u003E\u003E"); // flèche vers la droite
}
MerlinMaître des clésPar-contre il est possible d’insérer un document en pièce jointe, y compris avec Acrobat Reader.
4 décembre 2021 à 22:30 en réponse à : Case à cocher qui active les choix multiple d’autres cases à cocher #70071
MerlinMaître des clés👍
4 décembre 2021 à 10:33 en réponse à : Case à cocher qui active les choix multiple d’autres cases à cocher #70066
MerlinMaître des clésSi je comprend bien tu voudrais qu’une case à cocher active ou désactive un autre groupe de cases ?
3 décembre 2021 à 00:15 en réponse à : Modifier un script de champ vers un script de document. #70057
MerlinMaître des clésIl faut mettre les instructions à exécuter à la suite entre les accolades, on peut ajouter des lignes à loisir :
if (event.value == "")
{
this.getField("o.box." + nSuffix).value= "Off";
this.getField("o.date." + nSuffix).value= "";
}else
{
this.getField("o.box." + nSuffix).value= "Oui";
this.getField("o.date." + nSuffix).value= "Exemple";
}
MerlinMaître des clésBonjour
Pour moi c’est NON aussi.
Acrobat Reader ne peut pas importer ni ajouter des pages dans un document PDF.
2 décembre 2021 à 21:44 en réponse à : Modifier un script de champ vers un script de document. #70053
MerlinMaître des clésJe mettrais ça en script de Validation :
gereLeMachin();Après avoir mis ça en script de document :
function gereLeMachin() {
// mise en variable du nom du champ actif
var cName = event.target.name;
// récupération du suffixe
var nSuffix = cName.substring(cName.lastIndexOf('.')+1);
if (event.value==""){this.getField("o.box." + nSuffix).value="Off"}
else {this.getField("o.box." + nSuffix).value="Yes"}
}En fait j’ai remplacé le numéro de suffixe de ton script par une variable contenant le numéro de suffixe du champ actif/cliqué.
(Non testé)
MerlinMaître des clésLe script modifié ci-dessus n’est pas au format « Code » pour qu’on puisse voir ce qui est en orange, mais du coup les guillemets droits qu’on utilise en JavaScript ont été transformé en guillemets à chevron avec une espace à l’intérieur.
MerlinMaître des clésJe m’en doutais car ça me paraissait plus logique mais je m’en suis tenu aux instructions.
Script modifié (en orange) :
oSaisie1 = this.getField(« texte3 »);
oSaisie2 = this.getField(« Classe de précision »);
oResult1 = this.getField(« texte4 »);
oResult2 = this.getField(« texte5 »);// si les deux champs sont remplis
if (oSaisie2.value != « Off » && oSaisie1.value != oSaisie1.defaultValue) {
// soustraction des valeurs
var nResult1 = oSaisie1.value – oSaisie2.value;
// si résultat = zéro
if (nResult1 == 0) {nResult1 = « »;}
// affectation du résultat
oResult1.value = nResult1;// calcul des valeurs
var nResult2 = oSaisie1 + (oSaisie1.value /2) + oSaisie2.value;
// si résultat = zéro
if (nResult2 == 0) {nResult2 = « »;}
// affectation du résultat
oResult2.value = nResult2;}
// sinon
else {
oResult1.value = oResult1.defaultValue;
oResult2.value = oResult2.defaultValue;
}
MerlinMaître des clésCe script de calcul est dans « texte3 » mais il pourrait être dans n’importe quel autre champ, le document est là :
https://documentcloud.adobe.com/link/track?uri=urn:aaid:scds:US:e47d558a-eb52-449a-ab0f-893cb7b7dee4
oSaisie1 = this.getField("texte3");
oSaisie2 = this.getField("Classe de précision");
oResult1 = this.getField("texte4");
oResult2 = this.getField("texte5");// si les deux champs sont remplis
if (oSaisie2.value != "Off" && oSaisie1.value != oSaisie1.defaultValue) {
// soustraction des valeurs
var nResult1 = oSaisie1.value - oSaisie2.value;
// si résultat = zéro
if (nResult1 == 0) {nResult1 = "";}
// affectation du résultat
oResult1.value = nResult1;// calcul des valeurs
var nResult2 = (oSaisie1.value /2) + oSaisie2.value;
// si résultat = zéro
if (nResult2 == 0) {nResult2 = "";}
// affectation du résultat
oResult2.value = nResult2;}
// sinon
else {
oResult1.value = oResult1.defaultValue;
oResult2.value = oResult2.defaultValue;
}
MerlinMaître des clésLa réponse est OUI si on utilise ce script gratuit dont j’ignorais l’existence :
https://creativepro.com/files/kahrel/indesign/price_adjuster.html

MerlinMaître des clés« CRMP1-.pdf: File exceeds allowed file size. »
Fais un « Enregistrer sous » de ton fichier.
S’il est encore trop gros pour passer en pièce jointe de ce forum tu peux utiliser une des nombreuses méthodes indiquées ici :
MerlinMaître des clésPeux tu partager ton document ou un exemple en PDF ?
Je veux bien te montrer comment faire les calculs dans un document existant mais je n’ai pas le temps de créer un formulaire et des champs juste pour ça.
MerlinMaître des clésBonjour
Peux tu partager ton document ou un exemple ?
Ce sera plus facile que d’expliquer et tu comprendras aussi bien.
MerlinMaître des clés🙏
MerlinMaître des clésOui, supprime ces deux actions.
C’est l’action Champ Activé qui déclenche le remplissage du champ, si et seulement s’il est vide.
MerlinMaître des clésJe confirme que le lien ne fonctionne pas.
Voir ce sujet : https://www.abracadabrapdf.net/forums/topic/envoyer-partager-poster-une-piece-jointe-volumineuse/
MerlinMaître des clésJe t’invite également à lire ou relire cet article : https://www.abracadabrapdf.net/?p=4736
😉
MerlinMaître des clésBonjour
La réponse est non.Dans InDesign il y a deux façons d’utiliser le GREP :
- en « style GREP », qui ne permet pas de remplacer car ça n’applique que des formatages.
- en « Rechercher-remplacer GREP », mais il faut saisir le texte de remplacement. Il n’y a ni calcul ni automatisme possible.
-
Cette réponse a été modifiée le il y a 3 années et 11 mois par
Merlin.
MerlinMaître des clésBonjour
Je le verrais mieux ainsi :
if (event.value >= 10) {
this.getField("AG").checkThisBox(0, true);
this.getField("AG TEXT").value ="Écart d'âge est plus de 10 ans";
}
else {
this.getField("AG").checkThisBox(0, false);
this.getField("AG TEXT").value ="";
}
MerlinMaître des clés🙌🙌🙌
👏👏
👍
MerlinMaître des clésJe viens de re-regarder le document : je trouve que dissocier les noms de jour (en dur, dans le fond de page) et les dates (dans des champs de formulaire) est source d’erreur car rien ne vérifie la concordance entre date et jour.
À mon avis il vaudrait mieux n’utiliser que des dates longues (avec le nom du jour) dans les champs.
😎
MerlinMaître des clésComme c’est un script de calcul on peut le placer dans n’importe quel champ, mais je reconnais que c’est étrange, comme le nom des champs qui est à l’envers.
Je ne sais plus pourquoi ce document avait été fait ainsi, ça fait trop longtemps.
😇
MerlinMaître des clésBonjour et bienvenue
J’ai placé ce script en script de validation dans le champ de départ (en orange dans le ci-joint).
(Le format de date du champ de départ doit correspondre à celui de la 3e ligne du script)
var daDate = event.value;
if(daDate !== "") {
var aDate = util.scand("dd/mm/yyyy", daDate);
if(aDate) {
for (var i=1; i<42; i++) {
var Dday = i * 24 * 60 * 60 * 1000;
oNewDate = new Date(Dday + aDate.getTime());
this.getField("date." + i).value = util.printd("dd/mm/yyyy", oNewDate);
}}
}else {
for (var i=1; i<42; i++) {
this.getField("date." + i).value = "";
}
}Attachments:
You must be logged in to view attached files.
MerlinMaître des clés
MerlinMaître des clésTu peux copier-coller les champs de l’exemple ci-joint.
Attention, il y a une fonction en script de document.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésÇa ne peut pas fonctionner, ce sont des champs Date.
On ne peut pas soustraire des dates simplement, il faut préalablement convertir chaque date en millisecondes à partir de la date EPOCH, faire la soustraction, et re-convertir le résultat en date intelligible pour un humain.
On en a déjà parlé sur le forum, tu devrais faire une recherche (date, epoch, …).
Beaucoup de pièces jointes ont disparu lors du changement de forum alors n’hésites pas à revenir si tu as des questions ou besoin d’exemples.
MerlinMaître des clésBonjour
A priori le script est bon, ce qui coince ce sont les guillemets à chevron (et les espaces qui vont avec), en JavaScript on n’utilise que les guillemets droits
"(et donc sans espace entre le nom du champ et le guillemet).C’est notamment pour éviter ce genre de problèmes qu’en programmation on n’utilise pas de logiciels de traitement de texte (Word, TextEdit, Bloc-Notes…) mais des logiciels « Editeur de texte », comme les logiciels gratuits Notepad++ (Windows) ou BBedit (Mac).
-
Cette réponse a été modifiée le il y a 3 années et 11 mois par
Merlin.
MerlinMaître des clés👍
MerlinMaître des clés1000 mercis.
Si tout le monde faisait comme vous…
🙏
MerlinMaître des clésEn fait il n’y a pas besoin de JavaScript ni de calculs compliqués, il faut juste bien nommer les champs et éventuellement utiliser un champ masqué. J’ai aussi modifié la valeur d’exportation des coches Parution.
Ce tuto explique pourquoi j’ai renommé les champs avec des points et pourquoi ça simplifie les calculs : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/duplication-rapide-de-champs-de-formulaire/
😎
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésCe que je voulais dire, et bebarth aussi je suppose, c’est qu’avec un menu déroulant on ne peut commander qu’un seul article, ou alors il faut remplir un bon de commande pour chaque article, ce qui n’est pas ergonomique ni très logique.
S’il y avait une case à cocher devant chaque article on pourrait en commander plusieurs avec un seul bon de commande.
Quel que soit ton choix on peut facilement remplir le champ tarif automatiquement.
Si tu choisis les cases à cocher il faut mettre le prix de l’article en « valeur d’exportation » dans chaque case.
Si tu choisis de conserver le menu déroulant il faut que tu le refasses en ajoutant pour chaque article le tarif en « valeur d’exportation », mais comme Acrobat ne permet de modifier les articles existants il faut tous les supprimer et recommencer.
Attention : en « valeur d’exportation » il ne faut mettre que le chiffre, pas d’espace ni de symbole monétaire.
Une fois que tu auras fait ça, poste ton document et bebarth ou moi pourra t’ajouter le bout de script qui va bien.
Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour
Exemple ci-joint, qui n’utilise pas de JavaScript, seulement les fonctions de calculs intégrées à Acrobat.
Pour moi le défaut de ce bon de commande c’est qu’on ne peut commander qu’un seul article (à moins que ce soit exprès ?).
Un jeu de coches à gauche ou à droite de la liste des articles permettrait d’en sélectionner plusieurs.
Attachments:
You must be logged in to view attached files.9 novembre 2021 à 20:31 en réponse à : Mise à jour automatique d’un champ suite à un changement de chiffre #69922
MerlinMaître des clésBonjour
A priori ça ressemble plutôt à un problème d’ordre de calcul mais avec juste le script hors contexte il n’est pas facile de répondre. 🤔
Ce serait plus simple si tu pouvais partager tout ou partie de ton document.
MerlinMaître des clésBonjour
Mauvaise nouvelle, Flash Player n’existe plus et Acrobat XI ne sera jamais mis à jour.
Il faut utiliser Acrobat Pro DC ou Acrobat Pro 2020 (sans abonnement) pour créer des porte-documents sans Flash Player.
Bonne nouvelle quand même, les porte-documents créés avec Acrobat XI (ou autre) avec Flash Player sont lisibles avec les versions actuelles (en mode « classeur », sans l’interface Flash).
-
Cette réponse a été modifiée le il y a 3 années et 12 mois par
Merlin.
MerlinMaître des clés👍
MerlinMaître des clésPrincipe de base de tout éditeur de logiciel : laisser l’utilisateur croire que c’est de sa faute…
😉
MerlinMaître des clésÇa fonctionne bien mais effectivement il faut valider 2 fois.
Bravo.
MerlinMaître des clésMerci !
MerlinMaître des clésS’il y a « export en PDF » ça concerne le format PDF et ça peut nous intéresser.
😎
MerlinMaître des clésJe n’ai jamais essayé ça.
MerlinMaître des clésJe trouve ça très inquiétant, on livre nos administrations aux multinationales américaines qui planquent la plupart de leurs bénéfices dans les paradis fiscaux…
😮
MerlinMaître des clés.
MerlinMaître des clésÀ moins que l’Éducation Nationale ait déjà son propre système de signature numérique pour s’éviter de payer des abonnements à des multinationales américaines et protéger la confidentialité des échanges.
Mais je suis certainement en plein rêve. 😀
MerlinMaître des clés- Le gestionnaire raisonne à l’ancienne, il devrait refaire les comptes parce-que les abonnements sont généralement calculés pour être (un peu) moins chers que l’achat.
- De toute façon il n’y a pas besoin de logiciel payant, Acrobat Reader suffit. On peut aussi utiliser les signatures depuis Word ou d’autres logiciels.
Ce qu’il faut payer dans ce cas c’est juste un abonnement à Adobe Sign, pour un ou plusieurs utilisateurs. Il y a plusieurs formules avec plusieurs options. L’essai est gratuit : https://www.adobe.com/fr/sign/free-trial-global.htmlIl y a aussi des concurrents qui proposent des offres et des prix différents, DocuSign étant le principal. Là aussi l’essai est gratuit : https://go.docusign.com/trial/productshot-france/
MerlinMaître des clés
MerlinMaître des clésBonjour
Le mieux c’est d’oublier tout de suite les signatures avec certificat et tous les trucs compliqués qui demandent à l’utilisateur d’avoir un logiciel spécifique et de faire des manipulations complexes.
L’ultra simple c’est de les « Envoyer pour signature », c’est une fonction disponible dans Acrobat Pro et Standard (avec Acrobat Reader il faut payer un abonnement AdobeSign).
Les destinataires reçoivent un email avec un lien qui les invite à se connecter, ils remplissent le formulaire en ligne directement dans le navigateur web et ils signent, le tout en étant guidés par de grosses flèches.
Ensuite, expéditeur et destinataire(s) reçoivent un lien pour télécharger le PDF signé numériquement avec une vraie signature certifiée.
Avec en prime un gestionnaire qui permet de savoir qui a/n’a pas répondu, quand, etc.
Le seul inconvénient c’est qu’on ne peut pas utiliser de formulaires avec des calculs, des actions JavaScript ou des formats compliqués, mais dans ton cas ça devrait le faire.
Voir ce tuto : https://helpx.adobe.com/fr/acrobat/using/send-for-signature.html
MerlinMaître des clés😀
MerlinMaître des clésPour le champ de code postal, j’ai implémenté la contrainte d’un nombre de caractères requis (5) en action de validation et j’ai également implémenté le format nombre avec zéro directeur (à gauche) en action de frappe. Ces 2 scripts sont dans les scripts fournis et fonctionnent très bien
Pourquoi ne pas utiliser directement le format « Code Postal » ?
Attachments:
You must be logged in to view attached files.
MerlinMaître des clés👍
MerlinMaître des clésEssaie de faire comme indiqué dans la réponse correcte de ce sujet (il y a un bouton « Traduire » sous chaque message) :
MerlinMaître des clésMise à jour 4 ans et demi après : l’application mobile n’existe plus.
Maintenant il y a un site web normal et accessible avec n’importe quel appareil :
https://avignonguidehistorique.fr/

MerlinMaître des clésBonjour et bienvenue
Dans le format PDF on peut :
- animer/faire défiler des images ou des champs de formulaires avec JavaScript, mais ce n’est pas simple.
- intégrer une vidéo au format MP4.
- importer un fichier 3D (simple) et lui ajouter des actions via JavaScript (pas simple).
Voir ces PDF de démo :
- https://www.abracadabrapdf.net/pdf-de-demo/multimedia-pdfs-de-demo/pdf-anime/
- https://www.abracadabrapdf.net/pdf-de-demo/3d-pdf/pdf-3d-douille/
- https://www.abracadabrapdf.net/pdf-de-demo/pdf-parlant/abecedaire-des-lettres-animees/
- https://www.abracadabrapdf.net/category/pdf-de-demo/
Le résultat dépend du logiciel utilisé, les logiciels lecteurs de PDF « par défaut » (Aperçu et Edge principalement) sont catastrophiques car ils ne supportent que peu des fonctionnalités du format PDF 1.7, alias norme ISO 32000.
Contrairement à des logiciels comme Acrobat ou Foxit (dont les versions Reader sont gratuites).
Voir comment pallier à ce problème : https://www.abracadabrapdf.net/ressources-et-tutos/js-et-formulaires-ressources/forcer-utilisation-pdf-avec-acrobat-reader/
MerlinMaître des clés
MerlinMaître des clés
MerlinMaître des clésMerci ca marche bien pour afficher le champ mais, lorsque j’enlève la donnée du champ1, le champ2 ne disparait pas
Dans l’exemple ci-joint ça fonctionne.
PS ou est ce que vous avez appris tout ca?
Tout est là :

Attachments:
You must be logged in to view attached files.
MerlinMaître des clésBonjour
Il faut placer ce script en script de validation dans le champ 1, après avoir ajusté le nom du champ n°2 :
if (event.value.toString().length > 0) {this.getField(« CHAMP2 »).display = display.visible;}
else {this.getField(« CHAMP2 »).display = display.hidden;}
MerlinMaître des clésS'il est KO, je le mettrai en ligne ici mais le souci est qu'il utilise pas mal de la charte graphique de l'entreprise et donc cela m'ennuie un peu de le publier tel que……!!!!
Tu traces des grands rectangles sur les zones à supprimer et tu nous laisse juste l'essentiel :
https://helpx.adobe.com/fr/acrobat/using/removing-sensitive-content-pdfs.html
MerlinMaître des clésBonjour et bienvenue
On peut forcer l'affichage de certains caractères en capitale après la saisie, qu'ils soient accentués ou non.
On peut aussi le faire à la volée lors de la saisie pour tous les caractères avec une simple ligne de JavaScript.Si j'ai bien compris ta demande, il faudrait développer un script qui détecte les sauts de ligne, les poins et autres ponctuations de fin de phrase, mais ça c'est a priori une autre paire de manches.
J'ai pensé à activer le correcteur orthographique dans le champ de saisie en question mais ça ne fonctionne que pour les noms propres, il ne détecte pas les débuts de phrase (merci Adobe !).
Quelqu'un aura peut être une autre idée ?Se as pas vis l'Ordecho, as d'jamal ràn vis!
MerlinMaître des clésBonjour
Le script à l'air OK… Peux tu partager ce document (après avoir biffé son contenu si besoin) ?
MerlinMaître des clésBonjour et bienvenue
Ça requiert un bon niveau en JavaScript.
Ready ?15 octobre 2021 à 09:47 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #69701
MerlinMaître des clésDans ce cas le plus simple est d’utiliser ce script dans une Action, après l’avoir personnalisé, ensuite on peut appliquer l’Action sur un lot de fichiers.
// CRÉER BOUTON PAGE SUIVANTE SUR TOUTES LES PAGES
for (var p = 0; p < this.numPages; p++) {
// Position du rectangle
var aRect = this.getPageBox( {nPage: p} );
// aRect[0] = zéro car on est dans la CROP box
aRect[0] = aRect[2] - nPosBt6*inch; // from right of page
aRect[2] = aRect[0]+1*inch; // Make it 1 cm wide
aRect[1] -= .5*inch; // 0,5 cm from the top of page
// aRect[3] = zéro car on est dans la CROP box
aRect[3] = aRect[1] - 15; // and 15 points high
var f = this.addField("btPageSuiv", "button", p, aRect )
f.setAction("MouseUp", "pageSuiv()");
f.userName = "Page suivante"; // infobulle
f.display = display.noPrint;
f.borderStyle = border.s;
f.highlight = "none";
f.textSize = 0; // 0 = corps automatique
f.textColor = color.black;
f.fillColor = color.white;
f.strokeColor = color.transparent;
f.textFont = font.Helv; // Helvetica
f.buttonSetCaption(">>>"); // flèche vers la droite
}-
Cette réponse a été modifiée le il y a 4 années par
JR Boulay.
14 octobre 2021 à 20:26 en réponse à : Script pour ajouter un bouton avec action Page suivante sur fichiers pdf #69699
MerlinMaître des clésBonjour
Je crois que c'est typiquement un bouton qui ne sert pas à grand-chose car il existe déjà par défaut au-dessus de tous les documents.
Il y a aussi un raccourci-clavier.
MerlinMaître des clésAs-tu essayé de jouer avec les réglages d'éclairage ?
Sinon partage ton fichier qu'on puisse voir ce que ça donne sur d'autres écrans.
MerlinMaître des clésSi un formulaire est destiné à être imprimé ça n'a pas de sens d'interdire l'impression. :tutut:
L'utilisateur peut avoir plein de bonnes raisons pour vouloir imprimer un formulaire partiellement rempli et finir de le compléter à la main.Je suis donc à fond avec la proposition de bebarth.
-
AuteurRéponses
