Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarthMaître des clés
bonjour,
Voici quelques réponses :nbPlaces=17; // Nombre de places
posEleve=new Array(nbPlaces+1); // Définition d'une table à 18 éléments (de 0 à 17)
function noPlace() {
// S'il n'y a qu'une seule ligne pour une boucle "for" ou une condition "if else"
// il n'y a pas besoin d'accolades qui définissent l'ensemble des lignes à exécuter
for (var i=1; i<=nbPlaces; i++) posEleve=[this.getField("El."+i).value,this.getField("place."+i).value];
// posEleve=[this.getField("El."+i).value,this.getField("place."+i).value];
// L'élément i de la table posEleve est une table [] de 2 éléments et la virgule indique la séparation des éléments
}
noPlace();
// Fonction "placement" selon 2 paramètres "ind" -> indice et "pos" -> position
function placement(ind,pos) {
// Boucle pour vérifier toutes les positions
for (var i=1; i<=nbPlaces; i++) {
// So la position indiquée est identique à la position dans la table posEleve
// mais que l'indice du champs est différent de l'indice de la table posEleve
if (pos==posEleve[1] && ind!=i) {
// Message d'alerte
app.alert(posEleve[ind][0]+" et "+posEleve[0]+" ont le même numéro de place : "+posEleve[1],3);
break;
} else if (ind==i) {
posEleve[ind][1]=pos;
}
}
}
Les tables et les boucles permettent de réduire beaucoup les lignes de scripts.
Les expressions régulières sont assez compliquées à comprendre, mais sont très efficaces !@+
😎14 avril 2022 à 20:04 en réponse à : Insertion obligatoirement différentes de valeurs. – RÉSOLU #70978bebarthMaître des clésbonjour,
Ça devrait ressembler à une adaptation de la fonction “placement” de ce fichier :
https://www.abracadabrapdf.net/wp-content/uploads/2022/04/script_simplifie_BB.pdf@+
bebarthMaître des clésbonjour,
S’il n’est pas permis d’entrer un numéro <1 et >17, ce n’est plus la peine de vérifier ce numéro !
Je te propose donc un script de touches personnalisé avec une expression régulière. Les plus curieux essayeront de comprendre, et peuvent demander s’ils ne comprennent pas.
Voici une version de ton fichier avec quelques modifications de scripts.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Il suffit de permuter également l’action sur champ.
https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_methods.htm%23TOC_setAction2bc-17&rhtocid=_6_1_8_31_2_16Attention : on ne peut pas lire les actions des champs (avec un “get” par exemple) mais uniquement les écrire avec la méthode setAction. Mais lorsqu’on connait l’action qu’on veut définir, c’est tout à fait faisable !
@+
😎bebarthMaître des clésbonjour,
Je ne comprends pas pourquoi déplacer la position des champs plutôt que permuter les valeurs !@+
😎bebarthMaître des clésbonsoir,
Voilà pour la permutation.
function permutation(x,y) {
var lesChamps=["eleve","observations"];
for (var i=0; i<lesChamps.length; i++) {
var temp=this.getField(lesChamps+"."+x).value;
this.getField(lesChamps+"."+x).value=this.getField(lesChamps+"."+y).value;
this.getField(lesChamps+"."+y).value=temp;
}
}
permutation(this.getField("place1").value,this.getField("place2").value);
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Tu peux écrire :
var liste=[];
for (var i=1; i<=16; i++) liste.push(this.getField("eleve."+i).value);
liste.sort();
this.getField("liste00").value=liste.toString().replace(/,/g,"\r");
Attention, avec la fonction “.sort()”, tu tries selon l’ordre des caractères acsii.
Si tu tries des nombres, il faut utiliser la fonction “.sort(function(a, b){return a-b})” si tu veux obtenir un ordre croissant.@+
😎6 avril 2022 à 08:03 en réponse à : GREP Indesign – Mettre parenthèses et chiffre en exposant #70940bebarthMaître des clésbonjour,
\((\d)\)|\((\d\d)\)|\((\d\d\d)\)
En simplifié, l’expression s’écrit :
/\(\d+\)/
@+
😎5 avril 2022 à 15:52 en réponse à : GREP Indesign – Mettre parenthèses et chiffre en exposant #70932bebarthMaître des clésMerlin est LE spécialiste en GREP !
As-tu regardé cette page ?
https://helpx.adobe.com/fr/indesign/using/find-change.html#search_using_grep_expressions@+
😎5 avril 2022 à 14:43 en réponse à : GREP Indesign – Mettre parenthèses et chiffre en exposant #70930bebarthMaître des clésbonjour,
Que veux-tu dire par “…en exposant dans du texte courant…” ?
Est-ce un texte dans une page Acrobat ou dans un champ ? Si c’est dans un champ, veux-tu le faire manuellement ou par un script ?@+
😎bebarthMaître des clésbonjour,
pourrais tu me dire ou je peux me renseigner pour que je puisse améliorer mon document et moi même ??
ici :
https://www.abracadabrapdf.net/category/le-pdf-parfait/
et ici aussi :
https://www.abracadabrapdf.net/category/ressources-et-tutos/js-et-formulaires-ressources/@+
😎bebarthMaître des clésPour le champ DTF il faut écrire :
event.value=Math.pow(this.getField("DTM").value, 1.3);
Pour le champ Text1 il faut écrire :
event.value=this.getField("DTF").value*this.getField("PDT50Row1").value;
@+
😎bebarthMaître des clés…et où doit se faire le calcul et quels champs pour dtm et prad doivent-ils être utilisés ?
@+
😎bebarthMaître des clésPeux-tu partager ton fichier ou juste les champs nécessaires !
@+
😎bebarthMaître des clésbonjour,
Certainement parce dans un calcul JavaScript c’est le point qui est le séparateur décimal. Il faut donc écrire 1.3 et non 1,3.
Cela devrait donner :Math.pow(dtm, 1.3*prad);
@+
😎bebarthMaître des clésbonjour,
Voici pour additionner plusieurs champs, ici 6.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésJe te laisse étudier les 2 scripts.
N’hésite pas à demander si tu ne comprends pas quelque chose !@+
😎bebarthMaître des clésbonjour,
Voilà pour ce que tu veux faire !
Tu peux utiliser conjointement le point ou la virgule comme séparateur décimal.@+
😎PS : Je n’avais pas remarqué que tu avais partagé un fichier…
- Cette réponse a été modifiée le il y a 2 années et 8 mois par bebarth.
Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Tu écris :
event.value=Number(event.value).toFixed(4)+" g/m²";
Mais ça ne fonctionne uniquement si le signe décimal est un point !@+
😎bebarthMaître des clésbonjour,
à remplacer par :
this.getField(this.getNthFieldName(i)).buttonSetIcon.hidden(event.target.buttonGetIcon());
à voirC’est tout vu et ça ne peut pas fonctionner ! “buttonSetIcon.hidden()” n’est pas une fonction.
@+
😎bebarthMaître des clésbonjour,
Voir la note pour info :
https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_properties.htmNote: This property has been superseded by the display property and its use is discouraged.
Ou en français :
Note : Cette propriété a été remplacée par la propriété display et son utilisation est déconseillée.@+
😎bebarthMaître des clésbonjour,
…et donc tout fonctionne correctement ?@+
😎bebarthMaître des clésIl se trouve en script de touches personnalisé du champ “Zone combo0”.
Le calcul ne se fait qu’a la sélection de l’élément du menu déroulant plutôt qu’a chaque action si on le mettait en script de calcul d’un autre champ.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésSuper merci beaucoup pour votre aide Merci pour votre aide
…du coup ça fonctionne !!! Un vrai coup de bol…🤓
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Voici pour une ligne, mais je suppose qu’il y aura plusieurs lignes identiques. Il faudrait donc prévoir de mettre ce script en fonction, mais il faudrait revoir la dénomination des champs pour plus de simplicité…@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Voici pour toi !
Ce sera jeudi prochain pour d’éventuelles modifications…@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
J’essaye demain… sinon ce ne sera pas avant jeudi prochain !@+
😎bebarthMaître des clésbonjour,Tout est possible !lorsque rien n’est écrit ou coché : pas de message (rien à l’ouverture du fichier) les 2 champs texte sont obligatoires et au minimum 2 cases doivent être cochées donc dès qu’au moins 1 champ est rempli ou 1 case est cochée, afficher : “Le document n’est pas complété entièrement” qui disparait une fois que la condition précédente est respectée
Il faut combiné l’ancien script (que j’ai supprimé ici car il provoquait une erreur) avec celui-ci !
D’ailleurs j’ai cherché où est enregistrée la phrase du message actuel (”Vous devez sélectionner au moins 2 choix”), j’ai regardé dans tous les scripts mais je n’ai rien vu.
Ce texte n’est pas en script mais écrit dans le champ qui est visible ou caché.
@+
😎23 mars 2022 à 22:37 en réponse à : Le total ne se met pas à jour lorsqu’un montant calculé est mis à jour #70817bebarthMaître des clésEst-ce qu’il y a moyen de déceler l’endroit où il y en aurait un ?
Outil “JavaScript” puis “Tous les scripts JavaScript”, mais là on voit qu’il n’y en a pas !!!
@+
😎Attachments:
You must be logged in to view attached files.23 mars 2022 à 18:36 en réponse à : Le total ne se met pas à jour lorsqu’un montant calculé est mis à jour #70812bebarthMaître des clésbonjour,
Je ne vois pas de JavaScript dans ton document alors qu’il y a une erreur dans la console…
Je pense qu’il faut donc revoir la dénomination des champs (2- Les règles d’or) :
et l’ordre de calcul dans l’outil “Préparer le formulaire” (cf. copie d’écran).@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbebarthMaître des clésbonjour,
Ne serait-il pas plus simple d’indiquer l’ordre de préférence dans un champ texte (plutôt que dans un menu déroulant) directement dans l’ordre où l’on coche les cases ? Il n’y aurait plus besoin de menus déroulants !!!@+
😎bebarthMaître des clésBienvenue ! 😎
bebarthMaître des clés👍
Je ne savais pas (et je n’avais jamais essayé) !!!@+
😎bebarthMaître des clésbonjour,
Non ce n’est pas possible !
Par contre, si ton texte ne s’affiche pas entièrement une info-bulle apparait avec le texte entier.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Voici ton fichier fonctionnel !@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Essaye comme ça :var cMessAlert="OK pour continuer ?" ;
var cAlertTitre="TITRE DE L’ALERTE";
// si oui
if (app.alert({cMsg: cMessAlert, cTitle: cAlertTitre, nIcon: 2, nType: 2}) == 4) {
// script à exécuter
this.resetForm();
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf(" foto_af_image ")>-1) this.getField(this.getNthFieldName(i)).buttonSetIcon(event.target.buttonGetIcon());
}
}
@+
😎bebarthMaître des clésDonc c’est possible avec Acrobat Reader ! Avec les autres readers je ne sais pas…
@+
😎bebarthMaître des clésbonjour,
Oui, il faut que la page que tu veux supprimer soit une page “Modèle” !@+
😎bebarthMaître des clésbonjour,
On ne pourra pas empêcher l’utilisateur d’enregistrer le fichier via le menu d’Acrobat, par contre il est possible d’afficher un message d’alerte indiquant que certaines cases ne sont pas cochées ou certains champs ne sont pas remplis.@+
😎bebarthMaître des clésDonc tu places :
this.deletePages(1);
En script d’action souris relâchée du bouton de la page 1.
@+
😎bebarthMaître des clésbonjour,
Il faudrait écrire
if (this.getField("Height").value == "") this.getField("Height").value = (((this.getField("Feet").value * 12) + (this.getField("Inches").value)) * 2.54);
ou
if (event.value == "") event.value = (this.getField("Feet").value * 12 + this.getField("Inches").value) * 2.54;
Mais le fait que la valeur en pieds et pouces soit indiquée par 2 champs différents ne permet pas que ça fonctionne !!! Lorsqu’on valide un des deux champs la condition n’est plus vraie…
@+
😎bebarthMaître des clésCe n’est pas effacer la page 2 alors !
Dans ce cas, c’est :
this.deletePages(1);
Mais le bouton ne peut pas être sur la page à supprimer.
@+
😎bebarthMaître des clésbonjour,
Voici un script pour effacer les champs de la page 2 (==1 basé sur 0):for (var i=0; i<this.numFields; i++) {
var f=this.getField(this.getNthFieldName(i));
if (typeof f.page!="object") {
if (f.page==1) this.resetForm([this.getNthFieldName(i)]);
} else {
for (var p=0; p<f.page.length; p++) {
if (f.page[p]==1) this.resetForm([this.getNthFieldName(i)]);
}
}
}
@+
😎bebarthMaître des clésbonjour,
Le sujet a déjà été traité, (https://www.abracadabrapdf.net/forums/topic/majuscule-automatique-dans-le-champ-prenoms-et-dans-le-script-de-sauvegarde/) mais je te reposte le fichier car il n’est plus disponible sur la nouvelle version du forum.Tu me dis si ça te convient.
@+
😎Attachments:
You must be logged in to view attached files.3 mars 2022 à 19:48 en réponse à : Date calculée modifiable par une date ultérieure mais pas antérieure #70701bebarthMaître des clés3 mars 2022 à 16:32 en réponse à : Date calculée modifiable par une date ultérieure mais pas antérieure #70700bebarthMaître des clésOK !
oui c’est faisable, je fait ça plus tard…
3 mars 2022 à 15:47 en réponse à : Date calculée modifiable par une date ultérieure mais pas antérieure #70698bebarthMaître des clésEt ce n’est pas ce que fait le fichier que j’ai posté ?
Qu’ai-je oublié ?
@+
😎3 mars 2022 à 14:13 en réponse à : Date calculée modifiable par une date ultérieure mais pas antérieure #70696bebarthMaître des clésDésolé de ne pas comprendre !
Merci de préciser la procédure.- On indique une date dans le champ “StartDate”.
- Le champ “DateLimite” indique la date “StartDate” plus 5 jours. Ce champ devient-il bloqué (impossible à changer) ou modifiable uniquement avec une date postérieure à celle du champ “StartDate”?
- Le champ “DateLivraison” indique la même date que “StartDate”. Ce champ devient-il bloqué (impossible à changer) ou modifiable uniquement avec une date postérieure à celle du champ “StartDate”?
D’autres indications ?
@+
😎3 mars 2022 à 11:03 en réponse à : Date calculée modifiable par une date ultérieure mais pas antérieure #70694bebarthMaître des clésbonjour,
Que signifie « bloquée » ?
Ici il est impossible de modifier les champs avec une date antérieure !!! Sauf StartDate…@+
😎3 mars 2022 à 00:16 en réponse à : Date calculée modifiable par une date ultérieure mais pas antérieure #70691bebarthMaître des clésbonsoir,
Voici ma proposition !
Les calculs ne sont plus en script du champ “StartDate” mais en script de calcul des autres champs et on utilise :
if (event.source && event.source.name=="StartDate")
pour dire que le calcul ne se s’effectue que s’il provient du champ “StartDate”, ce qui permet de changer manuellement la valeur
des champs.
Par contre, ici, si on modifie la date de commande, les 2 autres dates sont réinitialisée. C’est correct ?@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
ben ça devrait être :
if (i==0 && element== "un" && suivant.endsWith("s")) laTable[i+1]=suivant.substring(0, suivant.length-2)+"l";
@+
😎bebarthMaître des clésbonjour,
L’idéal serait que dans le document InDesign tu puisses convertir les intitulés en autant de champs de textes indépendants.
Et si l’étape suivante est d’avoir le total automatique, il faudrait également convertir les prix en champs pour faciliter le travail.
@+
😎bebarthMaître des clésbonjour,
Je pense qu’il faudrait revoir la dénomination des cases à cocher et des valeurs d’exportation.
On ne choisit pas de quantité ?
Pour les raisins sec, comment choisit-on x1 ou x2 ???
Il y a également une ligne à 20 € sans désignation !@+
😎bebarthMaître des clésbonjour,
J’étais persuadé qu’en Suisse et en Belgique 80 se prononçait “nonante” mais ce n’ai apparemment pas vrai !J’ai adapté le script pour la Suisse et la Belgique. Tu fais quelques essais et tu me dis !!!
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésif (event.value!="") event.value=this.getField("Dropdown1").value+event.value;
Si (le champ n’est pas vide) alors la valeur du champ = la valeur du champ “Dropdown1” + la valeur du champ;
avec : la valeur du champ “Dropdown1” = “F-” ou “D-“.
@+
😎bebarthMaître des clésbonjour,
Voilà ! Le script est en script de format personnalisé ce qui signifie qu’il faut d’abord choisir si c’est un devis ou une facture…@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
le sujet a déjà été traité :
Mais comme c’était sur l’ancien forum et que les fichiers partagés ne le sont plus, je te joins la dernière version du fichier.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clés👍
Exact !!!@+
😎bebarthMaître des clésbonjour,
Voici une variante du script de Merlin car rien ne s’affichait dans le champ texte2 si aucune case n’était cochée.À moins que je n’aie pas bien compris !!! Mais dans ce cas là il faudrait peut-être une case cochée par défaut…
@+
😎- Cette réponse a été modifiée le il y a 2 années et 9 mois par bebarth.
Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Bien sûr et c’est même le plus simple. Moi je suis resté dans le principe d’utilisation de “String.fromCharCode”.@+
😎bebarthMaître des clésbonjour,
Que sont les cases A et B ? Des cases à cocher ou des boutons radios ? Je suppose qu’on ne peut pas avoir A et B cochés, mais y a-t-il forcément une des 2 cases ?T’est-il possible de partager un fichier ?
@+
😎bebarthMaître des clésLe + situé avant le second event.value est certainement une erreur de frappe.
Juste pour dire que lorsqu’on ajoute quelque chose à une variable on est pas obligé de répéter cette variable.
Si on a une variable x et qu’on veut rajouter 2, on n’a pas besoin d’écrire var x=x+2 on peut simplement écrire x+=2. Avec des nombres ça marche pour toutes les opérations : +, -, *, /
Et ici, au lieu d’écrire event.value=event.value+….. on peut plus simplement écrire event.value+=…..
Du coup, on pourrait même écrire :
event.value+=" M"+String.fromCharCode(0x00B2);
@+
😎- Cette réponse a été modifiée le il y a 2 années et 9 mois par bebarth.
bebarthMaître des clésbonjour,
Ou un tout petit peu plus court :
event.value+=" "+String.fromCharCode(0x004D,0x00B2);
@+
😎bebarthMaître des clésbonjour,
Je te propose de regarder et étudier ce fichier de Thom Parker.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Un peu tard, mais voici quand même ma version.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Voici une nouvelle proposition.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Oui, tu peux écrire :
event.value=this.getField("champ-nom").value+" "+this.getField("champ-adresse").value+" "+this.getField("champ-telephone").value
Ce qui te mettra tout sur la même ligne.
Si tu veux des retours lignes, tu écris :event.value=this.getField("champ-nom").value+"\r"+this.getField("champ-adresse").value+"\r"+this.getField("champ-telephone").value
@+
😎bebarthMaître des clésbonjour,
Effectivement, avec l’outil JavaScript d’Acrobat il y a la possibilité d’associer des scripts à des actions du document lorsque :- Le document sera fermé
- Le document sera enregistré
- Le document a été enregistré
- Le document sera imprimé
- Le document a été enregistré
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Tu peux écrire :
if (event.value=="") {
this.getField("CF23").display=display.hidden;
} else if (event.value>1) {
this.getField("CF21").display=display.visible;
this.getField("CV7").display=display.visible;
this.getField("Image1").display=display.visible;
this.getField("CF23").display=display.hidden;
} else {
this.getField("CF21").display=display.hidden;
this.getField("CV7").display=display.hidden;
this.getField("Image1").display=display.hidden;
this.getField("CF23").display=display.visible;
}
@+
😎bebarthMaître des clésbonjour,
En script de calcul personnalisé du champ CV6 :if (event.value>1) {
this.getField("CF21").display=display.visible;
this.getField("CV7").display=display.visible;
this.getField("Image1").display=display.visible;
this.getField("CF23").display=display.hidden;
} else {
this.getField("CF21").display=display.hidden;
this.getField("CV7").display=display.hidden;
this.getField("Image1").display=display.hidden;
this.getField("CF23").display=display.visible;
}
@+
😎bebarthMaître des clésbonjour,
Tu peux réinitialiser tous les champs avec un script :
this.resetForm();
Et retirer les images avec celui-ci :
for (var i=0; i<this.numFields; i++) {
if (this.getNthFieldName(i).indexOf("af_image")>-1) this.getField(this.getNthFieldName(i)).buttonSetIcon(event.target.buttonGetIcon());
}
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Regarde si l’ordre de calcul des champs est correct !@+
😎bebarthMaître des clésLes champs sont mis en lecture seule avant que le CV soit enregistré.
Si tu as une modification à apporter, tu peux décocher la case pour le champ.Si tu veux retirer la mise en lecture seule avant enregistrement, il faut retirer cette ligne du script :
for (var i=0; i<this.numFields; i++) this.getField(this.getNthFieldName(i)).readonly=true;
et du coup celle-ci aussi qui ne sert plus :
for (var i=0; i<this.numFields; i++) this.getField(this.getNthFieldName(i)).readonly=false;
@+
😎Et puis je suis content
Et puis vous êtes contents
Et puis ils sont contents
Alors je suis content
Que tout le monde soit contentAnge – Caricatures
- Cette réponse a été modifiée le il y a 2 années et 10 mois par bebarth.
bebarthMaître des clésau fait c´est quoi qui a changer par raport au cv interieur a part le code javascript ( dans le formulaire lui même ?
Je n’avais pas fait attention que les boutons étaient vus à l’écran et masqué à l’impression et mon script les masque puis les ré-affiche en “visible”. J’ai donc rajouté 2 scripts “lorsque le fichier sera imprimé” et “lorsque le fichier a été imprimé”.
J’aurai pu (et même dû) les mettre dans leur état d’origine directement via le script ! Mais il aurait fallu que j’étudie un peu plus précisément le formulaire original.Si tu préfères, tu me dis et je te retourne un nouveau fichier.Voici le fichier modifié, il n’y a plus de script d’action du document et les champs sont remis dans leur état d’origine via le script d’action du bouton.
@+
😎- Cette réponse a été modifiée le il y a 2 années et 10 mois par bebarth.
Attachments:
You must be logged in to view attached files.bebarthMaître des clésbebarthMaître des clésVoilà, tu places le fichier “Save_CV.js” dans le répertoire JavaScript d’Acrobat.
Si tu ne sais pas où il se trouve, tu utilises l’utilitaire show_me_the_pathEnsuite tu relances Acrobat et tu peux utiliser la nouvelle version de ton fichier.
Tu me dis…
@+
😎bebarthMaître des clésOK, je te fais ça dans la soirée !
@+
😎bebarthMaître des clésbonjour,
Jette un œil à cette page :Pour pouvoir enregistrer à partir d’un bouton, il faut écrire un script dans un fichier .js qu’il faudra placer dans le répertoire JavaScript d’Acrobat.
Si ça te convient, je pourrais partager un exemple ! Tu me dsi.
@+
😎- Cette réponse a été modifiée le il y a 2 années et 10 mois par bebarth.
bebarthMaître des clésbonjour,
Je ne comprends pas pourquoi “if (event.commitKey == 13…” ???
event.commitKey ne retourne pas le numéro de touche clavier (si j’ai bien compris le 13) mais une valeur entre 0 et 3 qui indique comment le champ a perdu son focus.Et petit rappel : Ça ne sert à rien d’écrire “
this.event.value” puisque l’objet “event” ne s’applique qu’au document actif “this”. Il suffit donc d’écrire “event.value”, ce qui allège le script.@+
😎bebarthMaître des clésbonjour,
Ça ne sera possible qu’avec un script d’application comme indiqué dans ce post récent :
@+
😎bebarthMaître des clésbonjour,
…et du coup, s’en est où ce sujet ???@+
😎bebarthMaître des clésbonjour,
C’est possible si le fichier est en pièce jointe du formulaire, comme cet exemple :
https://www.abracadabrapdf.net/wp-content/uploads/2022/01/Ejemplo_BB1-archivo-csv.pdf
donné dans ce post :@+
😎bebarthMaître des clésbonjour,
/^\d?$/ ici peut être écrit /\d?/ car on ne cherche qu’un seul chiffre
/ : Ouverture de l’expression régulière
^ : Depuis le début de la chaine de caractères (ici non nécessaire vu qu’il ne peut y avoir qu’un seul chiffre
\d : Correspond à un chiffre dans la chaine de caractères
? : 0 ou 1 occurrence du caractère précédent (ici \d)
$ : Jusqu’à la fin de la chaine de caractères (ici non nécessaire vu qu’il ne peut y avoir qu’un seul chiffre
/ : Fermeture de l’expression régulière
Sources : https://www.w3schools.com/jsref/jsref_obj_regexp.asp
ou : https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Regular_ExpressionsPar contre je ne saisis pas le .splice
https://www.w3schools.com/jsref/jsref_splice.asp
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/spliceJ’ai essayé de commenter le script de document le plus explicitement possible… cf. nouveau fichier
@+
😎Fichier mis à jour le 24/01/22
- Cette réponse a été modifiée le il y a 2 années et 10 mois par bebarth.
Attachments:
You must be logged in to view attached files.bebarthMaître des clésJe viens d’intégrer la fonction format chiffre proposée par Merlin dans le fichier proposé par BB. Du coup seuls les chiffres peuvent être saisis
Comme ça, tu exécutes mon script avant celui de Merlin et ça ne fonctionne pas très bien ! Si tu tapes une lettre, elle ne sera effectivement pas affichée mais la ligne du dessous sera affichée.
…et ma version pour ne taper qu’un chiffre par champ !
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
pour l’instant, je n’arriverai pas à faire ces modifs, il y a trop de choses que je ne maîtrise pas dans ce script et il me faut pas mal de temps pour le décrypter.
Quitte à essayer de comprendre, autant le faire avec un document qui est fonctionnel !
Voici donc un nouveau fichier où il n’y a plus de message d’erreur lors de l’exécution du script de la dernière ligne.
Je l’ai également modifié un peu car il ne fonctionnait pas bien lorsqu’on effaçait les champs un à un.
Si tu as besoin d’explications sur certaines lignes, tu demandes…En bonus, voici un fichier que j’ai fait pour moi afin d’écrire les textes pour les fonctions eval(), ce qui n’est pas toujours évident !
C’est un fichier de travail qui n’était pas destiné à être distribué, il ne comporte donc pas d’alertes et les variables doivent être nommées avec attention…
Merlin reconnaitra sans doute un de ses fichiers dont je me suis inspiré pour créer celui-ci.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésIl faut ajouter un try catch car on vas modifier la ligne n+1 et bien sûr il n’y en a pas pour la dernière ligne…
@+
😎bebarthMaître des clésbonjour,
Ci-joint ma proposition.2ème question : Mon script de document comporte 20 lignes pour la déclaration des variables. Est il possible de simplifier ça pour nommer toutes ces variables par « incrémentation » comme avec une boucle for ?
Pour faire cela, il faut exécuter la fonction eval();
for (var i=0; i<=19; i++) {
eval("var ac"+i+" = this.getField(\"ac."+i+"\").value");
}
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Comme ça je ne vois pas !!! Ça fonctionne chez moi…
Le chemin indiqué est-il correct et bien écrit (avec les doubles antislashs) ?Essaye de remplacer :
try {
Save_Rapport(NomDuFichier);
} catch(e) {
console.show();
console.clear();
app.alert("Le plugin n'a pas fonctionné !",1)
}
juste par :
try {
Save_Rapport(NomDuFichier);
} catch(e) {
console.show();
console.clear();
console.println("Erreur : "+e+"\n\n");
for (var i in e) {console.println(i+" : "+e)};
}
Qu’est-il indiqué dans la console ?
@+
😎- Cette réponse a été modifiée le il y a 2 années et 10 mois par bebarth.
19 janvier 2022 à 11:47 en réponse à : Alignement du texte au sein d’un champ de formulaire (en haut ou en bas) #70434bebarthMaître des clésTrop fort, si j’avais su… à l’époque ! 💪👏
J’avais pas pensé aux textes enrichis.Mais je crois que ces paramètres ne sont pas accessibles via JavaScript. J’ai posé la question il n’y a pas très longtemps sur le forum Adobe.
@+
😎18 janvier 2022 à 15:50 en réponse à : Alignement du texte au sein d’un champ de formulaire (en haut ou en bas) #70424bebarthMaître des clésbonjour,
Acrobat n’est pas un logiciel de mise en page… et il n’est pas possible de justifier les textes sur le bas d’un champ (simplement).Ayant personnellement déjà réalisé un générateur de cartes de visites avec Acrobat, c’est effectivement possible mais avec de la programmation !
Par contre, il me semble étrange que chacun puisse créer sa propre carte de visite ! N’importe qui peut s’attribuer n’importe quel titre…
@+
😎bebarthMaître des clésNon, il faut écrire les script en “Actions du document”.
Le premier dans “Le document sera imprimé” où tu supprimes ou mets en blanc les champs dont les valeurs sont égales aux valeurs par défaut (si tu supprimes il faut mémoriser ces valeurs).
Le second dans “Le document a été imprimé” ou tu remets les champs à l’identique d’avant impression.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
Il faut écrire un script d’action de document pour modifier les champs “lorsque le fichier sera imprimé” puis remettre les champs “lorsque le document a été imprimé”.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
En extra, ou puis-je trouver l’information sur le fonctionnement et les options possibles avec le util.printf ?
@+
😎bebarthMaître des clésbonjour,
Tu peux rajouter cette ligne en script de document :
app.runtimeHighlight=false;
Ça va te désactiver la couleur des champs.@+
😎bebarthMaître des clésbonjour,
Voici une nouvelle version où le chemin est indiqué dans le fichier .js.@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésbonjour,
event.value="";
for (var i=0; i<4; i++) event.value+=this.getField("N3."+i).value;
@+
😎Attachments:
You must be logged in to view attached files.bebarthMaître des clésPareil !
bebarthMaître des clésbonjour,
Supprimer les doublons ville/code postal n’est pas très compliqué !Pour les noms ou codes postaux communs, on pourrait envisager une fenêtre pop-up où il ne resterait plus qu’à choisir le bon élément… (du moins essayer d’écrire le script). Ceci si on frappe les noms/codes postaux dans un champ texte.
Vu le nombre de lignes du fichier .csv, il faut délimiter également la recherche pour diminuer les temps d’affichage notamment pour les dernières lignes.
Il faut enfin créer un script pour modifier/ajouter/supprimer des données !
Ça fait déjà un bon petit travail…
J’ai déjà écris quelque chose comme ça.@+
😎PS : Bizarre, ma réponse est bien la dernière mais n’est pas située après l’avant-dernière de Merlin !!!
- Cette réponse a été modifiée le il y a 2 années et 11 mois par bebarth.
Attachments:
You must be logged in to view attached files. -
AuteurRéponses