Toutes mes réponses sur les forums
-
AuteurRéponses
-
jctremblayMaître des clésC’est en multiplication que (-) × (-) = (+)
jctremblayMaître des clés«En tout cas, tu es bien meilleur que chat GPT et de loin… »
Je suis bien d’accord, Bebarth est imbattable!
Je veux une greffe de son cerveau.
jctremblayMaître des clésPour ce qui est de ton deuxième script. Les item_id doivent absolument être de 4 caractères, ce que n’importe quel IA oublie toujours.
Une version fonctionnelle ressemble à ceci:
var d = {
HP: "",
HC: "",
EJ: "",
EA: "",
Reduc: "",
MotifR: "",initialize: function(dialog) {
dialog.load({
"hp_t": this.HP,
"hc_t": this.HC,
"ej_t": this.EJ,
"ea_t": this.EA,
"rd_t": this.Reduc,
"mot": this.MotifR
});
},commit: function(dialog) {
var r = dialog.store();
this.HP = r["hp_t"];
this.HC = r["hc_t"];
this.EJ = r["ej_t"];
this.EA = r["ea_t"];
this.Reduc = r["rd_t"];
this.MotifR = r["moti"];
},description: {
name: "Saisie des valeurs",
elements: [
{ type: "static_text", name: "HP:" },
{ type: "edit_text", item_id: "hp_t", width: 150 },
{ type: "static_text", name: "HC:" },
{ type: "edit_text", item_id: "hc_t", width: 150 },
{ type: "static_text", name: "EJ:" },
{ type: "edit_text", item_id: "ej_t", width: 150 },
{ type: "static_text", name: "EA:" },
{ type: "edit_text", item_id: "ea_t", width: 150 },
{ type: "static_text", name: "Réduction:" },
{ type: "edit_text", item_id: "rd_t", width: 150 },
{ type: "static_text", name: "Motif:" },
{ type: "edit_text", item_id: "moti", width: 200, height: 40, multiline: true },
{ type: "ok_cancel" }
]
}
};if (app.execDialog(d) == "ok") {
app.alert("Valeurs saisies :\n" +
"HP = " + d.HP + "\n" +
"HC = " + d.HC + "\n" +
"EJ = " + d.EJ + "\n" +
"EA = " + d.EA + "\n" +
"Réduction = " + d.Reduc + "\n" +
"Motif = " + d.MotifR);
}
jctremblayMaître des clésMichel, quand j’utilise app.response pour capturer plusieurs données de variable, je demande toujours que les valeurs soient séparées par des virgules. Ce qui donne ceci:
var toutes_valeurs = app.response({
cQuestion: "Veuillez entrer les valeurs suivantes séparées par des virgules :\nHP, HC, EJ, EA, Réduction, Motif de réduction\nExemple: 100, 200, 50, 30, 25, Promotion",
cTitle: "Saisie des valeurs",
cDefault: ""
});if (toutes_valeurs != null) {
// Diviser la chaîne en utilisant la virgule comme séparateur
var valeurs = toutes_valeurs.split(",");// Extraire les valeurs individuelles (en supprimant les espaces inutiles)
var HP = valeurs[0] ? valeurs[0].trim() : "";
var HC = valeurs[1] ? valeurs[1].trim() : "";
var EJ = valeurs[2] ? valeurs[2].trim() : "";
var EA = valeurs[3] ? valeurs[3].trim() : "";
var Reduc = valeurs[4] ? valeurs[4].trim() : "";
var MotifReduc = valeurs[5] ? valeurs[5].trim() : "";app.alert("Valeurs saisies :\n" +
"HP = " + HP + "\n" +
"HC = " + HC + "\n" +
"EJ = " + EJ + "\n" +
"EA = " + EA + "\n" +
"Réduction = " + Reduc + "\n" +
"Motif = " + MotifReduc);}
jctremblayMaître des clésTout à fait logique. Merci!
jctremblayMaître des clésBeBarth… «LA» source intarissable de connaissance.
J’ai trouvé quelques informations sur insertEntryInList.
Adobe Dialog Manager (ADM) in Acrobat JavaScript: insertEntryInList
… et quelques publications sur l’Adobe Community où ton nom apparait (quelle surprise!).
Merci!
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésC’est bien ce que je pense. J’ai utilisé des numéros pour pouvoir contrôler l’ordre dans le menu.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésChaque paire de oui/non doit être dans un groupe distinct. Actuellement ils sont tous dans le Groupe 2.
Pour le Non, tu peux spécifier que celui-ci soit Activé par défaut.
jctremblayMaître des clésMet ton champ du bas en lecture seule
jctremblayMaître des clésOcéane, tu as un «J» majuscule au début de ton nom de champ.
Mais tu as mis un «j» dans ton script.
jctremblayMaître des clésVoilà…
Ton champ «lu et approuvé» doit avoir un nom différente et ceci en script de calcul:event.value = this.getField("jesouussigné").valueAttachments:
You must be logged in to view attached files.
jctremblayMaître des clésok Donc je peux compter sur ton retour, cette fois tu dois l’avoir ?
Il n’est pas en pièces jointes. Ton PDF doit être en bas de 1 mb. Tu peux juste conserver les champs en question et supprimer le reste, et le reste des pages pour en réduire le poids.
jctremblayMaître des clésJe veux bien, mais ton PDF initial n’as jamais été joint à la discussion.
-
Cette réponse a été modifiée le il y a 7 mois par
jctremblay.
jctremblayMaître des clésDans les propriétés du champ.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésRegard dans ce PDF…
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésRenomme ton champs en bas, «nom_2» et entre ceci dans un champs de calcul.
event.value = this.getField(« nom »).value
-
Cette réponse a été modifiée le il y a 7 mois et 1 semaine par
jctremblay.
jctremblayMaître des clésLa solution de bebarth est vraiment plus simple et élimine le recalcule. J’aime…
jctremblayMaître des clésC’est parfait, et c’est d’un sacré niveau par rapport à ma « nocivisitude ». Merci beaucoup+++ Ma7hieu
Ne t’en fais pas… «Tout expert fut au départ un amateur!»
La majorité de ce que j’ai appris fut ici dans ce forum inestimable. Et il m’en reste encore énormément à apprendre. C’est sans fin.
jctremblayMaître des clésBonjour,
Voilà une version modifiée.
Si j’ai bien compris ce que tu voulais c’est-à-dire de rétinialiser les choix, et les rendre invisibles selon les cases à cocher de l’exemple 2.
Premièrement, j’ai nommé les trois cases «Exemple 2», mais avec des valeurs différentes. De cette façon, ils se comportent comme des boutons radio, mais avec l’avantage de tout les désactiver.
Le code pour l’exemple 2 est maintenant dans un script de document, et seulement la fonction est inscrite dans les trois cases.
Maintenant, il faut savoir si tu as l’intention d’avoir plus d’options, et d’exemple. Si oui, il pourrait être possible d’avoir un script encore plus générique, qui permettrait d’ajouter des exemples et des choix sans avoir à modifier à nouveau les codes. Cela demandera d’avoir une règle plus stricte et prévisible pour les noms des champs.
-
Cette réponse a été modifiée le il y a 7 mois et 2 semaines par
jctremblay.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésEn me basant sur la même logique que Michel, j’ai réduit la longueur des codes et ajouté une réinitialisation des cases Choix si la case à cocher principale est décochée.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésPour un style GREP avec des nombres sans fin ex: 123 456 789 123 456 789 le GREP à utiliser sera être ceci:
\d{1,3}(\s\d{3})+Pour le faire dans un rechercher/remplacer ceci:
Rechercher:\d\K\h(?=(\d\d\d)+)
Remplacer:~S
jctremblayMaître des clésC’est pour exécuter dans InDesign ou Acrobat? Et qu’est-ce que tu veux faire avec l’espace trouver? La supprimer ou la remplacer par autre chose.
jctremblayMaître des clésPour l’instant, j’utilise aussi ce même truc!! 🙂
jctremblayMaître des clésParlant de convention des noms des champs.
Comment est-il possible de faire des copies d’un champ sur une page ex: «T1.1», «T1.2», «T1.3», «T1.4» et continuer la série «T1.5», «T1.6», «T1.7» etc. sur une seconde page? J’imagine que cela peut se faire seulement à l’aide d’un script.
jctremblayMaître des clésMerci Merlin, ce PDF n’est pas le mien. Il y a plusieurs dizaine de pages et des centaines de cases à cochés. Je n’avais pas le «goût» de tout les refaire.
jctremblayMaître des clésMerci Merlin….
Si simple! Des fois je me complique trop la vie.
–
J’ai adapter car les case à contrôle, ne commence pas par ISHT- mais toujours après ce qui suit.
Le nombre des champs à contrôler peut aussi varier en quantité.
Est-ce que tu y vois quelque chose qui pourrait être mieux ?Ce qui donnes ceci:
function folCoche() {
var prefixe = event.target.name.split("-")[1];
var i = 1;while (this.getField(prefixe + "-" + i)) {
var oFlds = this.getField(prefixe + "-" + i);if (event.target.value != "Off") {
oFlds.display = display.visible;
} else {
oFlds.display = display.hidden;
oFlds.value = "Off";
}
i++;
}
}Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésMerlin à raison, cela ne se fait que dans un contexte d’autorisation (script d’application, console ou protection renforcée)
Voici une modification qui fonctionnera dans ce contexte.
function Save() {
var userName = app.response("Veuillez entrer votre nom :");
if (!userName || userName.trim() === "") {
app.alert("Le nom ne peut pas être vide.");
return;
}var now = new Date();
var date = util.printd("yyyy.mm.dd-HH", now) + "h" + util.printd("MM", now);
var newFileName = date + "_organisation-" + userName + ".pdf";
var filePath = this.path.replace(this.documentFileName, "");
var newFullFilePath = filePath + newFileName;
try {
this.saveAs(newFullFilePath);
} catch (e) {
app.alert("Erreur, l'enregistrement suivant est impossible : " + newFullFilePath);
}
}
jctremblayMaître des clésAbsolument…
for (var i = 0; i < this.numFields; i++) {
var fName = this.getNthFieldName(i);
var f = this.getField(fName);
f.textSize = "10";
}
jctremblayMaître des clésbonjour,
…. car il faut placer ce script en local dans le répertoire JavaScript d’Acrobat (ou Reader) de chaque ordinateur.Oui, et c’est là le problème. Alternativement (à un script d’application), l’utilisateur peut ajouter un dossier/fichier dans ses préférences > section Protection (renforcée).
jctremblayMaître des clésle script doit être inséré dans chaque champ modifiable, je pensais que c’était le PDF entier avec les champs modifiables.
Non. Tu l’execute dans la Console JavaScript
jctremblayMaître des clésDe plus, le bout de code que tu as trouvé ne préserve pas le nom du document original. Et s’il y a déjà une date, elle est conservée et une deuxième ajouter. Celui-ci conserve le nom, et remplace la date si déjà présente.
var date = util.printd("yyyy.mm.dd", new Date());
var fileName = this.documentFileName;
fileName = fileName.replace(/^\d{4}\.\d{2}\.\d{2}-/, "");
var newFileName = date + "-" + fileName;
var filePath = this.path.replace(this.documentFileName, "");
var newFullFilePath = filePath + newFileName;
try {
this.saveAs(newFullFilePath);
} catch (e) {
app.alert("Erreur, l'enregistrement suivant est impossible : " + newFullFilePath); }
jctremblayMaître des clésIl est important de noter que l’exécution d’un tel script n’est pas permise sur un bouton.
jctremblayMaître des clésC’est très pénible modifier des formulaires avec la nouvelle interface!
jctremblayMaître des clésBebarth, j’avais oublié celui-ci.
En fait, j’ai remarquer que le fichier aT-ProprietesChamp.js n’est pas dans l’installateur d’AbracadabraTools2020 mais seulement dans la version 2019.
Pour ceux qui lisent, AbracadabraTools est un bijoux.
jctremblayMaître des clésNon. Il n’y a pas de différence. Pour les polices standard on peut utiliser font. + l’abbréviation:
f.textFont = font.Helv;ou le nom complet.
f.textFont = "Helvetica";Je me sert de cette ligne pour savoir comment écrire le nom des polices non standard. Et il me retourne le nom complet.
this.getField("txt").textFont
Helvetica
jctremblayMaître des clésOui, c’est brutal en effet. Ce que je n’aime pas, c’est que ce script va mettre des scripts «vide» partout. C’est inoffensif, mais ça m’énerve (comme les espaces en fin de paragraphes). 🙂
jctremblayMaître des clésBonjour Oui et non. Acrobat a un comportement curieux, si on remplace un script par rien ça ne fonctionne pas toujours. Alors quand je veux “nettoyer” un document je remplace les scripts par un double-slash, ce n’est pas rien mais c’est comme rien :
C’est ce que je fais en ce moment aussi. C’est bête quand même un peu…
jctremblayMaître des clésSi c’est pour l’aspect des champs (de tout les champs!), tu peut utiliser ceci:
for (var i = 0; i < this.numFields; i++) {
var fName = this.getNthFieldName(i);
var f = this.getField(fName);
f.textFont = "Courier";
}-
Cette réponse a été modifiée le il y a 8 mois et 3 semaines par
jctremblay.
jctremblayMaître des clésbonjour, Non, je ne crois pas qu’il soit possible d’exporter directement en .xlsx, mais par contre on peut exporter au format .csv ! On doit pouvoir ensuite convertir le format avec une macro VBA.
Merci pour la confirmation. Il y a plusieurs outils de conversion en ligne de CSV > EXCEL ou JSON > EXCEL. Puis les CSV peuvent se convertir à l’ouverture dans EXCEL. Donc ça va!
PS: Non, mais quelle famille de «Geek»… 🙂
jctremblayMaître des clésMerci Bebarth, un détail important.
jctremblayMaître des clésMichel, si c’est pour mettre en action dans tout les listes déroulantes, tu peux executer ça dans la Console.
for (var i = 0; i < this.numFields; i++) {
var f = this.getField(this.getNthFieldName(i));
if (f.type === "combobox") f.setAction("MouseUp", "fillDropdown();");
}
jctremblayMaître des clésOui, j’ai vu. Je dois tester. Merci!
J’aime bien la lisibilité qu’offre le résultat de https://jsstringconverter.bbody.io/
jctremblayMaître des clésMerci Merlin!
Exactement ce qu’il me fallait. Je me voyais mal faire ça manuellement sur plus de 600 lignes.
jctremblayMaître des clésJ’ai ce javascript qui ajoute un script de document.
var scriptName = « ScriptPersonnalise »;
var scriptContent = « app.alert(‘Bonjour, ceci est un script de document personnalisé !’); »;
this.addScript(scriptName, scriptContent);C’est quand le scriptContent est plusieurs dizaine de ligne que ça se complique.
Le but étant de pouvoir écrire du script à l’aide d’un javascript.
jctremblayMaître des clésMerci Merlin,
Le truc du champs blanc est un «hack» interessant.
Ça fait aussi une très bonne blague pour les collègues lors du poison d’avril. 🙂
jctremblayMaître des clésMerci pour votre retour. De très bons commentaires. Il y a des pour et des contres.
Je commence à prendre l’habitude de séparer le script long par type de contenu (format, alert, config).
jctremblayMaître des clésMerci @bebarth,
Cet exemple m’aide vraiment. J’ai que quelques petites questions que je t’ai envoyées par mail.
jctremblayMaître des clésLa commande Modèles de page se trouve à l’intérieur de l’outil Organiser les pages dans le menu Autres.
jctremblayMaître des clésLe code dans un PDF pour faciliter la lecture/copier.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésEn lisant, les infos sur PDFScripting et l’aide de Nesa Nurani (Adobe Community), voici ce que la structure d’un bouton d’outil personnalisé peut ressembler. Bien sur cela peut être plus complexe que ça.
function myToolAction() {var mainMenu = {cName: "Main Menu",oSubMenu: [{cName:"Option1", oSubMenu:[{cName:"SubOption1"},{cName:"SubOption2"}]},{cName:"Option2", oSubMenu:[{cName:"SubOption3"},{cName:"SubOption4"}]},{cName:"SingleOption"}]};var selectedOption = app.popUpMenuEx(mainMenu);if (selectedOption === "SubOption1") {app.alert("Sub-Option 1 selected");} else if (selectedOption === "SubOption2") {app.alert("Sub-Option 2 selected");} else if (selectedOption === "SubOption3") {app.alert("Sub-Option 3 selected");} else if (selectedOption === "SubOption4") {app.alert("Sub-Option 4 selected");} else if (selectedOption === "SingleOption") {singleOptionAlert();}}function singleOptionAlert() { app.alert("Direct Action selected");}myToolAction();app.addToolButton({cName: "UniqueToolButtonName",cLabel: "Tool Button Label",cTooltext: "Open Multi-Level Menu",cExec: "myToolAction()",cEnable: "event.rc = (event.target != null);"});
jctremblayMaître des clés@Merlin – Tu peux m’envoyer que aT-CompteurMots.js ou aT-NouveauDoc.js.
@bebarth – Merci pour le document. Je n’ai pas de souci à créer des menu avec multiple sous-menu. C’est pour les Outils personnalisés que je n’y arrive pas.
jctremblayMaître des clésMP envoyé!
jctremblayMaître des clésLe manque de support pour le JavaScript sur les mobiles c’est profondément dommage.
Si tu veux produire du «WOW» un document interactif Publish Online est une possibilité avec un lien vers ton CV plus linéaire en PDF.
jctremblayMaître des clésJ’ai fait un document avec 3 calques…
Les 3 boutons demeurent visibles, et il n’y a qu’un bouton pour fermer. Je te laisse fouiller les codes. 🙂-
Cette réponse a été modifiée le il y a 11 mois et 3 semaines par
jctremblay.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clés@paulivisual
La possibilité de «spawned» une page par-dessus une autre page est possible. Par contre je n’ai pas réussi à trouver un code pour l’enlever une fois que la page a été superposée sur un autre.L’option des calques me sembles plus pratique quand il y a plusieurs éléments dans cette parties de la page que d’utilise des boutons. Par contre, la création et modification des calques n’est pas toujours simple.
jctremblayMaître des clésPour ton bouton «Imprimer», tu pourrais utiliser ce code pour rendre ton modèle visible, imprimes sans interaction et remets le modèle invisible:
this.getTemplate("printcv").hidden = false;
this.print({
bUI: false, // Masquer la boîte de dialogue d'impression
bSilent: true, // Imprimer sans interaction utilisateur
nStart: 1, // Start printing from page 2
nEnd: 1 // End printing at page 2 (print only page 2) });
this.getTemplate("printcv").hidden = true;
jctremblayMaître des clésParole de sage de Merlin ici…
jctremblayMaître des clésIl y a certainement plusieurs façons de faire cela.
Une méthode simple est de faire des boutons avec tes différentes sections et de les mettre invisible au départ. Par la suite, tu peux les faire apparaitre à l’aide de boutons avec quelque chose comme ceci:
["Close", "Page1", "Page2"].forEach(f => this.getField(f).hidden = true);
["Close", "Page3"].forEach(f => this.getField(f).hidden = false);Tu trouvera un exemple dans le PDF.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésMerci!
J’oublie toujours d’aller voir cette documentation officielle.
jctremblayMaître des clésBoujour David,
Regarde le document ici:
J’ai modifié ton script de document en enlevant function JSON()
J’ai mis le script en tant que script de calcul au lieu d’un script de validation.var userInput = this.getField("codeInput").value;
var dropdown = this.getField("filteredOptions");
// Sécuriser la conversion en chaîne et en minuscules
userInput = userInput ? String(userInput).toLowerCase() : "";
// Gérer les différents cas de saisie
if (userInput.length < 2) {
dropdown.setItems(["Entrez au moins 2 caractères"]);
} else {
// Filtrer les options
var filtered = data.filter(function(item) {
return item.code.toLowerCase().startsWith(userInput);
});
if (filtered.length > 1) {
// Construire un tableau des valeurs pour le dropdown
var options = filtered.map(function(item) {
return item.value;
});
dropdown.setItems(options);
} else {
dropdown.setItems(["Aucune correspondance"]);
}
}Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésCela ne semble pas être le cas. Regarde le document joint.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésDommage!
jctremblayMaître des clésJ’obtiens un NaN quand j’utilise ton code:
event. value = (event.target.page[1] + 1) + " / " + this.numPages ;Mais celui-ci fonctionne:
event.value = (event.target.page + 1) + " / " + this.numPages ;9 novembre 2024 à 16:42 en réponse à : Identifier la couleur des champs en exportant les données #75142
jctremblayMaître des clés@Rockabilly
Dans le fichier joint…
Le script de calcul ajoute la couleur dans les infobulles des champs en plus de changer la couleur de fond de ceux-ci.Il y a deux boutons:
Un va exporter le nom des champs ainsi que la valeur de leurs infobulles dans un fichier .txt. Pour pouvoir le faire, tu devras inclure, dans la section Protection (renforcée) des préférences d’Acrobat, le PDF ou le répertoire dans lequel il se trouve.L’autre bouton va simplement envoyer le résultat dans un champ «MAT».
~ Jean-Claude
Attachments:
You must be logged in to view attached files.8 novembre 2024 à 16:56 en réponse à : Identifier la couleur des champs en exportant les données #75141
jctremblayMaître des clésEn effet, si on veut rapidement obtenir que les valeurs de certains champs, un script d’exportation donnerait un résultat plus concis. Tout dépend de ce que l’utilisateur veut faire avec ces données une fois exportées.
7 novembre 2024 à 19:17 en réponse à : Identifier la couleur des champs en exportant les données #75138
jctremblayMaître des clésTu trouveras cette approche dans le document ci-joint.
Reste à mettre le script de format pour «cacher» la couleur.Attachments:
You must be logged in to view attached files.7 novembre 2024 à 18:58 en réponse à : Identifier la couleur des champs en exportant les données #75137
jctremblayMaître des clésUne piste de solution…
Si en plus de changer la couleur des champs, ton script de calcule ajouter à la fin des valeurs de tes champs le texte «- Orange», et que, dans ces champs tu ajoutes un script de format qui cache le texte à partir de «- ». Ceux-ci seront allons présent lors de l’exportation des données en .txt, mais pas visibles dans les champs du PDF.
Ex:
if ((this.getField("AS").value == "1") && color.equal(this.getField("EST").fillColor, color.green)) { this.getField("EST").fillColor = color.orange;
var estField = this.getField("EST");
if (!estField.valueAsString.endsWith(" - Orange")) {
estField.value = estField.valueAsString + " - Orange"; }
}
et ceci comme script de format.
event.value = String(event.value).split("-")[0].trim();
Le reste du code est possiblement à optimiser.6 novembre 2024 à 20:03 en réponse à : Identifier la couleur des champs en exportant les données #75129
jctremblayMaître des clésUne maquette serait très utile en effet. Cela permettrait de voir les types de champs en question.
Je comprends que ce dont tu as besoin est que ces «marqueurs» de couleurs soit présents danston exportation des données.
jctremblayMaître des clés… et on aime ça le «frotter» un peu. Il en sort toujours quelque chose d’épatant! 😀
jctremblayMaître des clés@bebarth
J’ai réussi à faire que les choix multiples d’une zone de liste se copient en temps réel dans un champ de texte. Il y a donc un script lors du changement de choix, et un script de calcul dans le champ pour mettre en forme les valeurs reçues.
(voir le PDF pour les codes).Par contre je n’y suis pas arrivé encore pour une zone de liste vers une liste déroulante.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésJe suis complètement débordé avec tout le TAF urgent à terminé! C’est un document d’expérimentation, donc pas d’urgence. Merci!
jctremblayMaître des clésÇa devrait fonctionner sur Mac et PC, sous unix je ne connais pas la syntaxe des chemins !
J’essai cela quand j’ai quelques minutes. Merci!
jctremblayMaître des clésJe l’ai placé en action champ désactivé car comme la sélection multiple est autorisée ça ne fonctionne pas correctement en action “changement de sélection”.
Merci! C’est ce que j’avais remarqué. Donc, “selection multiple” et “changement de sélection” ne fonctionne pas ensemble.
jctremblayMaître des clésÇa plus de sens… 🙂 Merci!
jctremblayMaître des clésSi le pdf original est sur le même disque on peut en déduire le chemin du bureau, mais attention ils sont différents selon l’OS !
Donc, ce sera impossible si le PDF source se trouve sur un serveur SharePoint j’imagine.
Il me manque les détails de cela pour l’instant.
@Merlin Merci pour le lien vers le «safe path». Je n’y comprends rien. Mais bon, je n’ai pas pris mon café encore. 🙂
jctremblayMaître des clésMais on pourrait (dans le script d’application) en inclure un vers le dossier bureau de l’utilisateur, au lieu du chemin du PDF original?
jctremblayMaître des clésDonc, on ne peut qu’écrire manuellement le chemin désiré?
Impossible de capturer le chemin, et de l’écrire comme variable pour pouvoir le récupérer pour le reste de l’exécution?
jctremblayMaître des clésJe n’arrive pas à faire tourner ce script en script de document…
Tu dois mettre tout le script dans une fonction et celle elle que tu appera dans ton bouton.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésAh! Maintenant je saisis… 🙂
jctremblayMaître des clésJuste pour info, ce n’est pas la peine d’indiquer event.rc = true; car c’est l’état par défaut de la validation si on indique pas event.rc = false;. Ça fait une ligne de moins…
Donc le
event.rc = false;n’est pas nécessaire également?
jctremblayMaître des clésC’est amusant comment il y a plusieurs chemin pour obtenir le même résultat avec le JavaScript.
J’ai réussi à obtenir 3, 4 méthode qui donnes le même résultat. Voici la plus courte.if (event.value) {
var enteredDate = util.scand("dd/mm/yyyy", event.value);
if (enteredDate >= new Date()) {
this.getField("DateLimite").value = util.printd("dd/mm/yyyy", new Date(enteredDate.getTime() + ([5,4,6,5,5,5,5][enteredDate.getDay()] * 86400000))
);
event.rc = true;
} else {
app.alert("La date doit être aujourd'hui ou une date ultérieure.");
event.rc = false; }
}Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésJ’ai modifié ton script de document comme suit:
function VarAleas() {
for (var i = 1; i <= 4; i++) {
var aMin = parseFloat(this.getField("Var." + i + ".1").value);
var aMax = parseFloat(this.getField("Var." + i + ".2").value);
var aDec = parseInt(this.getField("Dec." + i).value, 10);
var a1 = aMin + Math.random() * (aMax - aMin); a1 = a1.toFixed(aDec);
a1 = parseFloat(a1);
this.getField("Var." + i + ".3").value = a1; }
}-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
jctremblay.
-
Cette réponse a été modifiée le il y a 1 année et 2 mois par
jctremblay.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésUne date future à aujourd’hui et non pas antérieur. Donc, < et non pas > ici:
if (laDate<aujourdhui) {
app.alert("Veuillez indiquer une date future à aujourd'hui.",3);
jctremblayMaître des clésTu as modifié passablement le code de la fonction mots. L’erreur se trouve là…
Je te laisse revérifier le tout ou recommencer selon mon document.
jctremblayMaître des clésBonjour JC, Merci beaucoup ! En effet, le script de transcription a plus sa place en script de document. Le seul hic, c’est que tant que l’utilisateur n’a pas cliqué dans le champ “SaisieSomme”, le champ “TexteSomme” transcrit le contenu du champ “Nombre” et non celui de “SaisieSomme”. Si on rentre la valeur 5 dans le champ “Nombre”, le champ “TexteSomme” affiche “cinq euros”, tandis que le champ “SaisieSomme” affiche “5000 €”.
Remplace cette ligne:
var chaine=this.event.target.valueAsString;
Par ceci et tout devrait fonctionner.
var chaine=this.getField("SaisieSomme").valueAsString;
jctremblayMaître des clésOk…
Comme j’avais mentionné, déplace ton code pour les nombres en mots dans un script de document.
Puis consolide tout dans un script de calcule du champ «nombre» comme ceci:var saisieSomme = this.getField("SaisieSomme");
if (event.value != "" && event.value < 5)
{
app.alert("Rentrer une valeur supérieure ou égale à 5");
event.value = "";
} else {
saisieSomme.value = event.value * 1000;
mots();
}
Le script du document ici à le nom de fonction «mots».
Tu trouvera la correction dans le PDF.
L’ordre de calcul a aussi été modifié… et les champ «SaisieSomme» et «texteSomme» en lecture seulement.Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésPour ton champ de validation «nombre» tu peut utiliser ceci:
if (event.value != "" && event.value < 5)
{
app.alert("Rentrer une valeur supérieure ou égale à 5");
event.value = "";
}Pour le reste, ton code pour les chiffres en mots devrait être en Javascript de document, le calcul de «SaisieSomme» et de celui-ci devrait idéalement être dans ton champ «nombre».
jctremblayMaître des clésMerci encore une fois!
6 septembre 2024 à 19:19 en réponse à : Remplir les champs d’une 2e liste déroulante dynamiquement #74821
jctremblayMaître des clésMerci bebarth! Je me souvient maintenant du terme «mère-fille». Je vais aller lire…
Pour ce type de champs j’arrive à ces méthodes:
1. Script de validation witch > case > set > break dans le script ou le document
2. Information dans un script de document
3. Information dans un fichier .csv en pièces jointes.
jctremblayMaître des clésMerci Merlin!
Je n’ai besoin que de faire ça pour un client, donc, je vais lui demander de modifier ses préférences et tout fonctionnera.J’étais curieux de voir si c’était possible. Sécurité oblige, je comprend très bien pourquoi cela ne l’est pas.
jctremblayMaître des clésBonjour Bonne question à laquelle je ne peux pas répondre pour le moment car je suis dans les Alpes loin de chez moi et mon ordi. …
C’est une très bonne excuse…
jctremblayMaître des clésJ’avais le même erreur avec l’original de bebarth. Version corrigé.
var aTemplates = this.templates;
for (var i = 0; i < aTemplates.length; i++) {
aTemplates.hidden = false;
var leNom = aTemplates.name;
var ind = leNom.substr(leNom.length - 1);
this.setPageLabels(this.numPages - 1, ["D", leNom, ind - 1]);
}
jctremblayMaître des clésLe script qui démasque les modèles en conservant leurs noms, à placer dans une Action :
Merci!
Je l’ai modifié car le dernier caractère du nom du modèle n’étais pas conservé.
var aTemplates = this.templates;
for (var i = 0; i < aTemplates.length; i++) {
aTemplates.hidden = false; // true ou false
var leNom = aTemplates.name;
var ind = leNom.substr(leNom.length - 1);
this.setPageLabels(this.numPages - 1, ["D", leNom, ind - 1]);
}
jctremblayMaître des clésWaouh, beau boulot ! Si ça t’intéresse, bebarth m’avait écrit un script qui “démasque” les modèles masqués en conservant leurs noms de modèle dans le panneau des pages, au lieu d’avoir page 1, page 2, etc. C’est très pratique quand il y en a beaucoup. Avec son autorisation (dont je doute pas) je pourrais te l’envoyer, ou le poster céans.
Ce serait utile en effet. Est-ce qu’un script pourrait aussi créer un modèle en utilisant le nom du panneau page? J’imagine que oui.
jctremblayMaître des clésMerci pour ces précision.
Dans mon cas, l’avantage des modèles masqués est d’offrir ce panneau à l’utilisateur lui offrant un choix de modèle à dupliquer.
Attachments:
You must be logged in to view attached files.
jctremblayMaître des clésOn peut dupliquer une page template qu’elle soit masquée ou apparente, ça ne change rien. Il faut seulement que ladite page soit enregistrée comme template.
@Merlin Est-ce qu’il y a un scénario ou cela pourrait être avantageux ou problèmatique d’avoir les page modèles visible ou l’inverse.Ce que je comprend…
Pages modèles cachées = Augmentation du Poids du PDF
Pages modèles visible = Si l’utilisateur supprime cette page, le modèle disparaît également.
jctremblayMaître des clésDésolé je suis dans le cap corse sans pratiquement aucun réseau…
Profite…
jctremblayMaître des clésIl y a donc une sérieuse limite en lien avec la sécurité. C’est compréhensible… mais chiant à la fois.
Je vais, comme tu le suggères, devoir faire mes modèles avant et modifier mon script pour avoir un choix des modèles existant à dupliquer. Je garde quand même celui-ci à sauvegarder en action.
@bebarth,
De quel Quick bar parles-tu?-
Cette réponse a été modifiée le il y a 1 année et 3 mois par
jctremblay.
jctremblayMaître des clésMerci Merlin pour le contexte de la chose… On vas mettre des caractères sans accents! 🙁
-
Cette réponse a été modifiée le il y a 7 mois par
-
AuteurRéponses
