Toutes mes réponses sur les forums
-
AuteurRéponses
-
jctremblay
Maître des clésC’est en multiplication que (-) × (-) = (+)
jctremblay
Maî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.jctremblay
Maî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);
}
jctremblay
Maî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);
}
jctremblay
Maître des clésTout à fait logique. Merci!
jctremblay
Maî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.jctremblay
Maî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.jctremblay
Maî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.
jctremblay
Maître des clésMet ton champ du bas en lecture seule
jctremblay
Maî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.jctremblay
Maî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é").value
Attachments:
You must be logged in to view attached files.jctremblay
Maî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.
jctremblay
Maî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 5 mois et 2 semaines par
jctremblay.
jctremblay
Maître des clésDans les propriétés du champ.
Attachments:
You must be logged in to view attached files.jctremblay
Maître des clésRegard dans ce PDF…
Attachments:
You must be logged in to view attached files.jctremblay
Maî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 5 mois et 3 semaines par
jctremblay.
jctremblay
Maître des clésLa solution de bebarth est vraiment plus simple et élimine le recalcule. J’aime…
jctremblay
Maî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.jctremblay
Maî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 6 mois par
jctremblay.
Attachments:
You must be logged in to view attached files.jctremblay
Maî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.jctremblay
Maî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
jctremblay
Maî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.
jctremblay
Maître des clésPour l’instant, j’utilise aussi ce même truc!! 🙂
jctremblay
Maî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.jctremblay
Maî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.
jctremblay
Maî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.jctremblay
Maî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);
}
}
jctremblay
Maî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";
}
jctremblay
Maî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).
jctremblay
Maî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
jctremblay
Maî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); }jctremblay
Maître des clésIl est important de noter que l’exécution d’un tel script n’est pas permise sur un bouton.
jctremblay
Maître des clésC’est très pénible modifier des formulaires avec la nouvelle interface!
jctremblay
Maî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.
jctremblay
Maî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
Helveticajctremblay
Maî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). 🙂
jctremblay
Maî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…
jctremblay
Maî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 7 mois et 1 semaine par
jctremblay.
jctremblay
Maî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»… 🙂
jctremblay
Maître des clésMerci Bebarth, un détail important.
jctremblay
Maî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();");
}jctremblay
Maî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/jctremblay
Maître des clésMerci Merlin!
Exactement ce qu’il me fallait. Je me voyais mal faire ça manuellement sur plus de 600 lignes.jctremblay
Maî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.
jctremblay
Maî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. 🙂jctremblay
Maî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).jctremblay
Maître des clésMerci @bebarth,
Cet exemple m’aide vraiment. J’ai que quelques petites questions que je t’ai envoyées par mail.jctremblay
Maître des clésLa commande Modèles de page se trouve à l’intérieur de l’outil Organiser les pages dans le menu Autres.
jctremblay
Maître des clésLe code dans un PDF pour faciliter la lecture/copier.
Attachments:
You must be logged in to view attached files.jctremblay
Maî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);"
});
jctremblay
Maî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.
jctremblay
Maître des clésMP envoyé!
jctremblay
Maî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.
jctremblay
Maî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 10 mois et 1 semaine par
jctremblay.
Attachments:
You must be logged in to view attached files.jctremblay
Maî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.
jctremblay
Maî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;
jctremblay
Maître des clésParole de sage de Merlin ici…
jctremblay
Maî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.jctremblay
Maître des clésMerci!
J’oublie toujours d’aller voir cette documentation officielle.jctremblay
Maî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.jctremblay
Maître des clésCela ne semble pas être le cas. Regarde le document joint.
Attachments:
You must be logged in to view attached files.jctremblay
Maître des clésDommage!
jctremblay
Maî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 #75142jctremblay
Maî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 #75141jctremblay
Maî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 #75138jctremblay
Maî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 #75137jctremblay
Maî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 #75129jctremblay
Maî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.
jctremblay
Maître des clés… et on aime ça le «frotter» un peu. Il en sort toujours quelque chose d’épatant! 😀
jctremblay
Maî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.jctremblay
Maî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!
jctremblay
Maî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!
jctremblay
Maî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.
jctremblay
Maître des clésÇa plus de sens… 🙂 Merci!
jctremblay
Maî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. 🙂jctremblay
Maî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?
jctremblay
Maî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?
jctremblay
Maî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.jctremblay
Maître des clésAh! Maintenant je saisis… 🙂
jctremblay
Maî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?jctremblay
Maî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.jctremblay
Maî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 par
jctremblay.
-
Cette réponse a été modifiée le il y a 1 année par
jctremblay.
Attachments:
You must be logged in to view attached files.jctremblay
Maî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);
jctremblay
Maî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.jctremblay
Maî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;
jctremblay
Maî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.jctremblay
Maî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».
jctremblay
Maî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 #74821jctremblay
Maî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.jctremblay
Maî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.
jctremblay
Maî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…
jctremblay
Maî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]);
}
jctremblay
Maî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]);
}
jctremblay
Maî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.
jctremblay
Maî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.jctremblay
Maî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.jctremblay
Maître des clésDésolé je suis dans le cap corse sans pratiquement aucun réseau…
Profite…
jctremblay
Maî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 2 mois par
jctremblay.
jctremblay
Maî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 5 mois et 2 semaines par
-
AuteurRéponses