Toutes mes réponses sur les forums
-
AuteurRéponses
-
22 août 2018 à 22:31 en réponse à : Exporter données formulaire PDF vers base de données ACCESS #63849
bebarth
Maître des clésJ’ai oublié le point-vigule…
Code:…
Variables+=f.valueAsString + « ; »;
…@+
:bonjour:bebarth
Maître des clésbonjour,
A partir d’Adobe Reader ou Acrobat Pro ?
@+
:bonjour:22 août 2018 à 20:05 en réponse à : Exporter données formulaire PDF vers base de données ACCESS #63847bebarth
Maître des clésbonjour,
Je n’ai jamais fait ça, mais si ton script précédent fonctionne, celui que tu veux faire doit être du genre :Code:var outputString = « »;
var Noms = « »;
var Variables = « »;
for (var i = 0; i < this.numFields; i++) {
var f = this.getField(this.getNthFieldName(i));
if (f==null || f.type== »button » || f.type== »signature ») continue;
Noms+=f.name + « ; »;
Variables+=f.valueAsString;
}
outputString=Noms+ »rn »+Variables;
this.createDataObject(« output.csv », outputString);
this.exportDataObject({ cName: »output.csv », nLaunch: « 0 »});Essaye et dis moi le résultat !
@+
:bonjour:bebarth
Maître des clésbonjour,
voici ce que je te propose. Si 1, 2 et 3 sont cochés simultanément 6 et 7 sont cochés ensembles. Est-ce ce que tu voulais ???
@+
:bonjour:bebarth
Maître des clésEssaie « if » avec un « i » minuscule…
Et où as tu écris ce script ?
En fin de compte je pense qu’il faudrait l’ecrire en script d’action des cases 1 et 2 et remplacer évent.target par le nom du champ de la case 6 (est-ce claire ?)
…et rajouter else…. false pour décocher automatiquement.
:bonjour:bebarth
Maître des clésFait une copie de ce que tu as écris !
bebarth
Maître des clésBonjour,
Pour case 6 :Code:If (this.getField(« case1 »).value!= »Off »&&this.getField(« case2″).value!= »Off ») this.event.target.checkThisBox(0,true)
Essaie car impossible pour moi de vérifier avant.
@+
:bonjour:bebarth
Maître des clésBonjour,
Si cela t’est possible il faudrait partager ton fichier pour voir ce qu’il est possible de faire, mais pour ma part je n’aurai pas d’ordi Avant le 22 août…
@+
:bonjour:bebarth
Maître des clés…les templates pour dupliquer des pages ça ne t’intéresse pas ?
Désolé pour les réponses succinctes, mais j’ai juste mon téléphone pour répondre…
@+
:bonjour:bebarth
Maître des clésL’aplatissement est le moyen le plus sûr !
Après, ça dépend de l’importance que l’on donne au document et à la possibilité de le modifier…
@+
:bonjour:bebarth
Maître des clésbonjour
Il est impossible de renommer des champs via JavaScript.
Selon ce que tu veux faire, je te conseille de regarder du côté « Template »…
@+
:bonjour:bebarth
Maître des clésbonjour,
Je pense que le plus simple c’est d’aplatir mais attention de faire ça sur une copie car c’est irréversible !
@+:bonjour:
bebarth
Maître des clésBonjour,
Voici le lien :
https://abracadabrapdf.net/forum/index.php/topic,3419.msg20186.html#msg20186
@+:bonjour:
3 août 2018 à 06:08 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64437bebarth
Maître des clésbonjour,
Sur mon Acrobat DC ça ne fonctionnait pas non plus.
J’ai désactivé la case « Afficher la couleur…. » dans les préférences « Formulaires » et maintenant ça fonctionne.
@+
:bonjour:2 août 2018 à 14:54 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64433bebarth
Maître des clés…pour moi les champs sont verts également !
:Euuuh: :Euuuh:bebarth
Maître des clésbonjour,
As-tu quelques pages à partager que je regarde… et comprenne mieux ce que tu veux et ce qui est possible de faire.
@+:bonjour:
1 août 2018 à 17:00 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64430bebarth
Maître des clésbonjour,
tu as confondu les champs RAMEx et VOIEx, par exemple :Code:this.getField(« VOIE8 »).readonly = false; -> incorrectet
Code:this.getField(« RAME8 »).readonly = false; -> correctde plus, ta ligne :
Code:for (var i=0; i<6; i++) {this.getField("VOIE8."+i).value = "";}provoque un message d’erreur (cf. console) car le script ne trouve pas les champs ! Peut-être sur une autre page ???
Idem pour les autres champs RAMEx.@+
:bonjour:31 juillet 2018 à 14:20 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64426bebarth
Maître des clésPour moi, cette case devrait être cochée par défaut.
Ça me parait tellement plus logique d’avoir immédiatement le résultat et je ne comprend pas l’intérêt qu’elle soit décochée !
@+
:bonjour:31 juillet 2018 à 13:49 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64424bebarth
Maître des clésDans ton fichier, par exemple, si tu coches cette case, la couleur change directement lorsque tu relâche la souris quand tu modifies la liste ETAT RAME alors que si elle n’est pas cochée, il faut attendre que ton champ soit validé (via une tabulation par exemple…).
@+
:bonjour:31 juillet 2018 à 13:17 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64422bebarth
Maître des clés…si je peux me permettre de te donner un conseil, tu devrais cocher la case « Valider la valeur sélectionnée immédiatement » de tes listes déroulantes.
@+
:bonjour:31 juillet 2018 à 08:11 en réponse à : Couleur d’un champ en fonction d’un choix dans une liste déroulante #64417bebarth
Maître des clésbonjour,
Seulement via un script d’application, sécurité oblige.
…et si cela t’intéresses, tu peux consulter les posts :
https://abracadabrapdf.net/forum/index.php/topic,3450.msg20546.html#msg20546
et
https://abracadabrapdf.net/forum/index.php/topic,3086.msg20164.html#msg20164
ou demander sur le forum !!! Mais sur le mois d’août ça va être compliqué je crois…
@+
:bonjour:bebarth
Maître des clésbonjour,
Dans ton fichier, tu as oublié de recopier le script de document « stages », c’est pour cela qu’il y avait un dysfonctionnement pour les cases « licence ».
Maintenant il y a un deuxième script de document pour l’affichage automatique de la date du jour si les champs sont vides.
C’est également réglé pour l’affichage sous la forme 70.44,00€
Si tu modifies encore ton fichier, vérifie une dernière fois l’ordre de calcul avant ton dernier enregistrement car il avait encore bougé et cela peut provoquer des erreurs de calculs si les variables ne sont pas définies par exemples.
@+
:bonjour:bebarth
Maître des clésMerci Merlin,
c’est bien ce que j’avais remarqué, mais comment est attribuée l’ordre ?
Pourquoi lorsque l’on change la taille du champ du cache par exemple, sa position d’ordre est-elle systématiquement modifiée ?
Donc plus on augmente son ordre de tabulation et plus le champ est en avant ? correct ? Le plus grand numéro d’ordre est don au premier plan ?
…et le résultat n’est pas toujours ce qu’il devrait être apparemment !
@+
:bonjour:bebarth
Maître des clésJe ne peux pas t’expliquer pourquoi (peut-être Merlin ???) mais apparemment la taille du cache doit être plus petite que la taille du champ du bouton (mais plus grande que le bouton… si on veut le cacher :geek: ).
@+
:bonjour:bebarth
Maître des clésbonjour,
…comme ça je ne vois pas comment faire « directement » !
Si on compte le nombre de champ avec this.numFields; on en trouve que 2 (ce qui me parait logique pour des boutons radio), sauf que je ne sais pas comment masquer uniquement celui du milieu. Je ne dis pas que c’est impossible car on peut y arriver manuellement en mettant ce champ de formulaire invisible à l’écran. Mais via JavaScript, je n’ai pas de piste… sinon faire apparaitre un carré de même couleur que le fond, qui cacherait ce bouton…
@+
:bonjour:30 juillet 2018 à 12:24 en réponse à : Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00 #64347bebarth
Maître des clésbonjour,
Je t’ai envoyé une proposition en MP sur le fichier que tu m’as fourni.
@+
:bonjour:bebarth
Maître des clésbonjour,
j’ai copié/collé ton script et il fonctionne très bien !
Par contre, je ne comprend pas :La case à cocher est dans la variable Paiement et s’appelle Espèce.
@+
:bonjour:bebarth
Maître des clésbonjour,
Il y a un article intéressant lorsqu’on travaille sur les variables :
https://acrobatusers.com/tutorials/global-object-acrobat-javascript
avec le fichier à étudier, on comprend mieux !
http://www.pdfscripting.com/public/FreeStuff/PDFSamples/GlobVars_Sample.pdfVoir aussi :
https://developer.mozilla.org/fr/docs/Glossaire/Variable@+
:bonjour:bebarth
Maître des clésTu vois Lucie, j’étais certain que Merlin aurait une explication ! :extra:
@+
:bonjour:bebarth
Maître des clésbonjour,
En script de la case à cocher tu écris :Code:if (this.event.target.value != « Off ») {
this.getField(« Precisez »).display = display.visible;
this.getField(« Precisions »).display = display.visible;
} else {
this.getField(« Precisez »).display = display.hidden;
this.getField(« Precisions »).display = display.hidden;
}@+
:bonjour:bebarth
Maître des clésbonjour,
Je ne saurais t’expliquer pourquoi, mais si tu changes ta police cela fonctionne.
J’ai fait quelques essais avec des polices différentes et il y a quelques fois des comportements étranges… je ne retrouve plus la police pour faire une copie d’écran, mais le texte était hors champ !!!
Merlin aura peut-être (même certainement) une explication !
@+
:bonjour:bebarth
Maître des clésbonjour,
…ça marche pour certains champs mais pas pour d’autres alors que les propriétés sont les mêmes..
Quand un coup ça marche et un coup ça ne marche pas, il vaut mieux si possible partager le fichier (ou une partie) car normalement il n’y a pas de raison, et c’est plus facile pour trouver le pourquoi…
@+
:bonjour:bebarth
Maître des clésbonjour,
(J’avoue je me suis basé sur https://abracadabrapdf.net/forum/index.php/topic,3460.msg20605.html#msg20605)
Je n’ai personnellement jamais écris comme ça. Je ne suis pas spécialiste ès JavaScript et ne connais donc pas tous les comportements selon la syntaxe, mais ce que je suis certain, c’est que si c’est bien écris, ça fonctionne alors que la réciprocité n’est pas vraie ! :geek:
C’est pour cela que je préconise d’utiliser un éditeur JavaScript quand on commence à enchevêtrer des instructions (if, switch…) et/ou des boucles (for, while…). Placer les crochets au bonne endroit facilite la relecture !
Edit: J’ai fait ça, c’est bon ?
Je n’ai pas testé comme ça, mais ça m’a l’air de fonctionner. Ne pas oublier le « ; » en fin de ligne, et à mon avis les parenthèse inutiles compliquent la lecture. Toujours à mon avis, il vaut mieux mettre un espace pour séparer et bien lire les opérateurs (&&, ||…) surtout lorsqu’on débute, mais je le fais encore lorsque ça coince…
J’écrirais donc ton script comme ça :Code:var int1 = this.getField(« int_1 »);
var poids = this.getField(« Poids »);
if (this.getField(« Livraison »).value== »2″) {
this.event.target.value = « Pas de Frais de port »;
} else {
if (poids.value<1128 && int1.value<1) {
this.event.target.value = « Env »;
} else {
if (poids.value<2000 && int1.value==1) {
this.event.target.value = « CarL »;
} else {
if (poids.value>1128 && poids.value<2000 && int1.value==0) {
this.event.target.value = « CarMP »;
} else {
if (poids.value<5000 && int1.value>=2 && int1.value<=5) {
this.event.target.value = « CarLP »;
} else {
this.event.target.value = « Demande de devis »;
}
}
}
}
}@+
:bonjour:bebarth
Maître des clésbonsoir,
je n’ai pas vérifié le calcul car je ne trouve pas les champs correspondants, mais juste la syntaxe qui n’était pas tout à fait ça….Code:var text1 = this.getField(« Text1 »);
var poids1 = this.getField (« Poids »);
if ((text1.value= »Env ») && (poids.value<100)) {
this.event.target.value == « 1,90 »;
} else {
if ((text1.value== »Env ») && (poids1.value>=100) && (poids1.value<250)) {
this.event.target.value = « 3,50 »;
} else {
if ((text1.value== »Env ») && (poids1.value>=250) && (poids1.value<500)) {
this.event.target.value = « 5,10 »;
} else {
if ((text1.value == « Env ») && (poids1.value>=500) && (poids1.value<3000)) {
this.event.target.value = « 6,70 »;
} else {
this.event.target.value = « bientot »;
}
}
}
}Lorsqu’il y a plein de « if / else » imbriqués, il vaut mieux les écrire correctement car c’est vite fait le fouilli…
@+
:bonjour:bebarth
Maître des clés…Je pense que là c’est un peu trop hors compétence, j’y comprends rien du tout …
mais non, tu vas voir :
La case à cocher avec le script est copiée/collée 4 fois et il y a juste la valeur d’exportation qui change : 0, 1, 2 et 3.
Les champs avec les images ont le même nom avec une extension : .0, .1, .2 et .3Code://ça c’est facile, valeur = la valeur d’exportation de la case cocher
var valeur= this.event.target.value;
//ici, sans indiquer l’extension, on masque tous les champs monImage
//mais en fait, cette ligne ne sert à rien et peut être supprimée
this.getField(« monImage »).display = display.hidden;
//si la case à cocher à une valeur d’exportation, donc si une case est cochée
if (this.event.target.value != « Off ») {
//on masque tous les champ monImage
this.getField(« monImage »).display = display.hidden;
//on affiche le champ monImage avec l’extention identique à la valeur de la case à cocher
this.getField(« monImage. »+valeur).display = display.visible;
//sinon (si aucune case n’est cochée)
} else {
//on masque tous les champs monImage
this.getField(« monImage »).display = display.hidden;
}…et pi c’est tout !!!
@+
:bonjour:bebarth
Maître des clésbonjour,
Voici un exemple où tu affiches une image en fonction de la valeur de la case à cocher.
@+
:bonjour:18 juillet 2018 à 06:19 en réponse à : Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00 #64342bebarth
Maître des clésbonjour,
Je sais, je sais ! Je suis exigeante hihi!
Tu es une femme, non ???
Voilà, je pense que ce coup-ci tout y est !!!
@+
:bonjour:…et donc, en plein dans le mille !
:geek:17 juillet 2018 à 19:02 en réponse à : Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00 #64340bebarth
Maître des clésVoilà !
Rien à voir avec le script de Merlin. C’est un champ texte avec un script de touches personnalisé pour n’admettre que les chiffres, le point et la virgule et un script en champ désactivé pour faire le job!
Tu as les 2 versions avec au final le point ou avec la virgule.
J’ai mis un espace fin au lieu d’un espace pour séparer les milliers.
Tu me dis si j’ai oublié quelque chose.
@+
:bonjour:17 juillet 2018 à 17:08 en réponse à : Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00 #64338bebarth
Maître des clésbonjour,
Il me faut un javascript pour ceci : 1 234 567.89 et ne pas afficher 0.00 par défaut..
J’avais cru comprendre que l’utilisateur tape un point (12345.78) ou une virgule (12345,78), le résultat devait être 12 345,78
C’est pas cela ???
@+
:bonjour:bebarth
Maître des clésScript d’action de la case à cocher :
Code:if (event.target.isBoxChecked(0)) {
this.getField(« monImage »).display = display.visible;
} else {
this.getField(« monImage »).display = display.hidden;
}…mais on peut aussi aller lire la valeur de la case ou d’un bouton radio !!!
@+
:bonjour:bebarth
Maître des clésDu coup j’en profite est ce que je peux conditionner l’affichage d’une image au choix d’un bouton ?
C’est à dire ??? soit je la vois soit je ne la vois pas, c’est cela ?
@+
:bonjour:17 juillet 2018 à 14:10 en réponse à : Empêcher le remplissage (griser) de plusieurs champs de texte grâce à un bouton. #64359bebarth
Maître des clésPour la case à cocher le script est :
Code:if (event.target.isBoxChecked(0)) {
this.getField(« Nom »).value = « »;
this.getField(« Nom »).fillColor = color.ltGray;
this.getField(« Nom »).readonly = true;
} else {
this.getField(« Nom »).fillColor = [« RGB »,(187/255),(179/255),(172/255)];
this.getField(« Nom »).readonly = false;
}Pour la couleur du champ en fonction d’une liste ou d’un bouton radio, il suffit d’aller lire la valeur d’exportation de cette liste ou ce ce bouton.
@+
:bonjour:bebarth
Maître des clésbonjour,
Tu crées et dupliques un bouton radio avec 2 « Choix de bouton radio » différents (Gauche et Droite par exemple).
Puis un script de calcul de ton champ texte :Code:if (this.getField(« boutonRadio »).value== »Gauche ») {
this.event.target.value= »C’est le bouton radio de gauche qui est coché »;
} else {
this.event.target.value= »C’est le bouton radio de droite qui est coché »;
}S’il y a juste 2 boutons radio, utilise l’instruction « if », s’il y en a plus je te conseille l’instruction « switch ».
Attention à ne pas mettre d’espaces ou de caractères spéciaux dans les noms de champs. cela peut provoquer des comportements inattendus lors de l’exécution des scripts.
@+
:bonjour:17 juillet 2018 à 13:06 en réponse à : Empêcher le remplissage (griser) de plusieurs champs de texte grâce à un bouton. #64356bebarth
Maître des clésbonjour,
Je suppose que dans ton formulaire l’utilisateur ne peut pas modifier la couleur du champ, mais je voulais savoir si tu connais les valeurs exactes pour le réglage de la couleur ou si elle a été définie avec le cercle chromatique et que tu ne connais pas exactement les valeurs.
Si tu connais les valeurs, on les indique directement dans le script, sinon il faut aller lire la couleur du champ avant de le griser puis de rappeler cette couleur…
j’espère avoir été clair !
@+
:bonjour:13 juillet 2018 à 18:03 en réponse à : Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00 #64334bebarth
Maître des clés@Merlin : C’est parfait…
Je suis un peu étonné, car pour moi :
Code:event.value = util.printf(« %,2.2f »,event.value).toString().replace(/,/gim, » « );devrait donner : 1.234 56 puisqu’on remplace chaque virgule par un espace… il faudrait plutôt écrire :
Code:event.value = util.printf(« %,2.2f »,event.value).toString().replace(/./g, » « );…de plus, g devrait suffire pour global quand on remplace un signe !
Et dans l’autre exemple il faut remplacer les virgules par un espaceCode:.replace(/,/gim, » « )et le point par une virgule
Code:.replace(« . », », »)(il devrait n’y en avoir qu’un).
@+
:bonjour:13 juillet 2018 à 14:34 en réponse à : Empêcher le remplissage (griser) de plusieurs champs de texte grâce à un bouton. #64354bebarth
Maître des clésc’est une couleur bien précise ou il faut aller lire la couleur ???
@+
:bonjour:13 juillet 2018 à 12:48 en réponse à : Empêcher le remplissage (griser) de plusieurs champs de texte grâce à un bouton. #64352bebarth
Maître des clésbonjour,
En script d’action de la case à cocher tu peux écrire :Code:if (event.target.isBoxChecked(0)) {
this.getField(« Nom »).value = « »;
this.getField(« Nom »).fillColor = color.ltGray;
this.getField(« Nom »).readonly = true;
} else {
this.getField(« Nom »).fillColor = color.white;
this.getField(« Nom »).readonly = false;
}… pour bloque le champ « Nom » et tu fais de même pour tous les champs que tu veux bloquer.
@+
:bonjour:bebarth
Maître des clésmoi j’ai Sierra et Acrobat Pro DC 2018.11.20040.280397, et ça fonctionne !
@+
:bonjour:bebarth
Maître des clésbonjour,
Et je suis sur mac… si ça peut changer quelque chose…
Je ne pense pas, car je suis également sur mac et ça fonctionne !
C’est bien ton image que Merlin à placer ?
@+
:bonjour:13 juillet 2018 à 05:33 en réponse à : Format monétaire avec espace, décimales SANS signe de $ et sans afficher 0.00 #64329bebarth
Maître des clésbonjour,
Est-ce le résultat d’un calcul ou le nombre est-il rentré manuellement ?
@+
:bonjour:bebarth
Maître des clésQuel est le format du fichier image ?
Tu peux le partager ?
@+
:bonjour:bebarth
Maître des clésbonjour,
1) Comment importer une image dans un champs type bouton ? On est d’accord que j’ai pas à passer par une action type : event.target.buttonImportIcon(); ?
Tu vas dans l’onglet « Options » du bouton.
2 ) Quel type de champ pour le déclencheur ? peu importe ?
Tous les types de champs sauf « code à barres » apparemment, onglet « Actions ».
@+
:bonjour:bebarth
Maître des clésbonjour,
Voici donc une version qui n’appelle plus que 2 fonctions.
J’avoue que ça demande au départ une petite réflexion logique à savoir ce qui peut être mis en variable, sinon le calcul en lui même n’est pas très complexe.
J’espère que cela sera utile à quelqu’un au cas où cette version arrive trop tardivement pour Crevette.
@+
:bonjour:bebarth
Maître des clés…et pourquoi faire si simple quand on peut faire plus compliqué ?
:geek:
bebarth
Maître des clésJe suppose que ton champ est déjà en format nombre.Tu rajoutes ce script de calcul :
Code:if (this.event.target.value<0) {
this.resetForm(this.event.target.name);
this.getField(this.event.target.name).setFocus();
}@+
:bonjour:bebarth
Maître des clésBonjour,
Ça veut dire quoi ???
Interdire un nombre négatif ou une fois le nombre négatif entré ne pas pouvoir le modifier ?
@+
:bonjour:bebarth
Maître des clésbonjour,
Voici la version avec texte en rouge si > 24 h.
@+
:bonjour:bebarth
Maître des clésbonjour Merlin,
Je viens de regarder ton exemple sur l’abracadabraScripts que j’avais déjà depuis un bon moment, et « mon idée » est à peu près identique (sans le beep ).
Ici, mon souci est de savoir où placer l’alerte, qui doit quand même réapparaitre si on fait une modification.
Tous les champs sont avec un script de calcul et plus de 70 champs sont recalculés à chaque fois… la plupart devrait être en script d’action, champ désactivé, ce qui éviterait de tous les recalculer à chaque fois et me simplifierait la tâche pour afficher l’alerte !
Généralement, lorsque j’essaye de résoudre un problème posé, je mets de côté le « personnellement je n’aurais pas fait comme ça », mais ici à force de résoudre un problème + un autre + un autre, je pense qu’il serait bon maintenant qu’on connait (presque) toutes les questions de repartir à 0 avec ce formulaire. Il faut reprendre les noms des champs pour avoir quelque chose de plus « logique », ce qui simplifierait les formules (même si en soit elle ne sont pas très compliquée)… Mais si on regarde les 6 fonctions appelées elles sont toutes faites sur le même principe. Je pense qu’en uniformisant le nom de champs on pourrait n’appeler plus qu’une seule fonction pour un même calcul.
Mais tout ceci demande un peu de travaille et je n’aurai pas le temps de faire ça ces jours-ci… les vacances approchent…
Si je trouve un moment, j’essaierai de regarder la semaine prochaine, mais je ne promets rien !
en attendant, voici le fichier où le message apparait seulement à partir de 24:00:01.
@+
:bonjour:bebarth
Maître des clésJ’ai effectivement mis >= 24. Je rectifierai.
J’ai déjà une idée pour que le message n’apparaisse qu’une fois.
Je suppose que le message doit apparaître dès 24:00:01 !
@+:bonjour:
bebarth
Maître des clésDans le fichier joint, le message s’affiche pour tous les jours où le total est supérieur à 24 h à chaque calcul, donc même si l’alerte à déjà été affichée pour un jour.
Je suppose que tu voudrais ne le voir affiché que la première fois. Si oui, je verrai plus tard…
J’ai également rajouté un scrip de champ désactivé pour le tableau 1 qui initialise à 00:00:00 si le champ est vide. Je te laisse le soin de faire de même pour le tableau 2.
@+
:bonjour:bebarth
Maître des clés…je termine juste un petit boulot (car j’ai aussi un métier :geek: ) et je regarde ça !
@+
:bonjour:bebarth
Maître des clésbonjour,
pour quels totaux souhaites-tu afficher une alerte ???
Pour les totaux ligne 1 à ligne 4 de tous les jours ???
Pour les totaux L2+L3 et L1+L4 ???
Pour les minis et les moyennes ???
Est-ce juste une alerte ??? ou doit-il y avoir une action si les totaux dépassent 24 h ???
@+
:bonjour:bebarth
Maître des clésDans le calcul des moyennes, la ligne :
var s=parseInt(adTemps/7);
utilise la partie entière du quotient.
Je présume qu’Excel doit arrondir à la seconde la plus proche. Si tu veux faire de même, tu rajoutes ces 3 lignes juste après :
var l=0; // pour initialiser la variable
var l=String(s).length; // pour connaître le nombre de chiffres de la partie entière
var s=(adTemps/7).toPrecision(l); // pour arrondir au nombre de chiffres exact
et je pense que tu devrais retrouver les mêmes valeurs.
@+
:bonjour:bebarth
Maître des clésbonjour,
Voici le résultat avec le calcul des minis et moyennes.
A vérifier si je n’ai pas fait d’erreur…
@+
:bonjour:bebarth
Maître des clésbonjour,
Donc dans le fichier séparer le nom de l’icône ?
Je ne comprend pas bien !
Si tu veux, tu peux m’envoyer ton fichier en MP et je te placerai le fichier texte.
@+
:bonjour:bebarth
Maître des clésLe fichier texte se trouve là … dans le panneau des pièces jointes.
@+
:bonjour:bebarth
Maître des clésbonjour,
Je t’ai fait les totaux pour le lundi, je te laisse le soin de faire de même pour les autres jours !
Pour les durées mini et moyennes, faut-il regarder les totaux journaliers ou chaque cellule ???
Bon weekend.
@+
:bonjour:bebarth
Maître des clésPersonnellement, je choisirais la première solution plutôt que d’ouvrir 150… et une fenêtre à la fois !
pour l’une et l’autre solution, il faut d’abord importer le fichier .sequ la première fois (l’action).
Pour la version avec fichier incorporé, il y a un script de document, pour la version où il faut ouvrir tous les fichier, il y juste à lancer l’action.
Pour copier tous les noms de fichiers, tu vas dans ton répertoire et tu fais « Tous sélectionner » (cmd A ou ctrl A) puis copier et enfin coller dans le fichier txt… et tu refermes le fichier .txt incorporé !
@+
:bonjour:PS :
Peux tu me dire ou se trouve ton script, si un jour j’ai + de 150 fichiers à assembler :
Il faut déjà télécharger le fichier…
:extra:
bebarth
Maître des clésbonjour,
Désolé, mais je n’ai pas eu de temps à consacré hier…
N’ayant pas eu de réponse sur la solution souhaitée, j’ai regardé les 2 versions.
Pour la première, il faut copier les noms dans le ficher txt incorporé au fichier A.pdf. Il y a une fonction en script de document, il y a juste à la lancer avec l’action.
Pour la seconde, il faut ouvrir tous les fichiers, puis seulement à la fin le fichier A.pdf et lancer l’action correspondante. Ici j’insiste sur « seulement à la fin le fichier A.pdf » car sinon (…et je bloque sur ce point) un coup ça marche et un coup ça ne marche pas (le pire des problème…). Si on ouvre le fichier A.pdf en dernier, ça fonctionne tout le temps ! Si quelqu’un ( :geek: ) à le temps de jeter un oeil…@+
:bonjour:bebarth
Maître des clésbonsoir,
Si l’action est indiquée 2 fois, c’est qu’elle a été importée 2 fois. Tu peux en supprimer une.
Concernant les noms des fichiers, on ne peut pas aller les lire dans le répertoire. Si on veut automatiser, il faut une certaine logique dans les noms.Si tu veux une action, j’imagine que tu as un grand nombre de fichiers à traiter ou bien que cette action doit être répétitive.
Sinon, les 2 idées qui me viennent à l’esprit, sont :- soit ouvrir tous les fichiers puis lancer une action- soit copier tous les noms des fichiers dans un fichier txt que l’on incorporerait dans le fichier .pdf à insérer.Mais bien sûr, le plus simple sont des noms de fichiers incrémentés !
@+
:bonjour:bebarth
Maître des clés…Il semblerait que j’ai posté ton fichier zip !
Désolé. Normalement celui-ci est le bon.
@+
:bonjour:bebarth
Maître des clésUniquement la première fois :
1) Tu décompresse le fichier .zip
2) Tu ouvres le fichier Assemblage.sequ. Acrobat te demande si tu veux importer cette action -> Importer
3) Autre message -> Importer
4) Message « L’action a été importé…. » -> OKA chaque fois :
5) Tu ouvres le fichier A.pdf
6) Outil « Assistant Action », tu vas trouver l’action « Assemblage » en tête de liste : Tu cliques sur Assemblage
7) Tu cliques sur « Début » et ça se débrouille tout seul
C’est fini !@+
:bonjour:bebarth
Maître des clésbonjour,
Voici une action à lancer après ouverture du fichier A, sinon ça ne fonctionne pas.
J’ai indiqué un maximum de 150 fichiers, mais ce nombre peut être modifié. De toute façon, l’action s’interrompt lorsqu’elle ne trouve plus de fichier.
@+
:bonjour:bebarth
Maître des clésMerci Merlin,
j’ai compris le résultat de ces 2 commandes, mais j’ai beau relire l’api reference et c’est vraiment l’utilisation que je ne comprend pas.
Pour moi, « event.willCommit » vérifie s’il se passe quelque chose, et comme généralement le point d’exclamation est l’inverse, if (!event.willCommit) signifie « s’il ne se passe rien »…
Pareil pour « event.changeEx » j’ai pas tout compris !
@+
:bonjour:bebarth
Maître des clés:extra:
…ici, on pourrait peut être rajouter :Code:this.getField(« RESTO »).deleteItemAt(1);en fin de script afin de ne pas avoir l’intitulé des colonnes dans la liste déroulante.
Merlin,
J’aimerais bien que tu commentes « !event.willCommit » et « event.changeEx ».
Ça m’aiderait à me lancer dans l’événementiel :geek:
Merci.@+
:bonjour:bebarth
Maître des clésbonjour,
Voilà, je t’ai fait un script de document pour le tableau 1.
Je pense qu’il sera difficile d’en créer un seul pour tous les tableaux. pour cela, il faudrait revoir la dénomination de tous les champs pour définir des noms plus homogènes (et pas un coup le jour au début du nom et un autre coup au milieu, par exemple).
Il y a donc un script de document pour l’initialisation d’une table pour les jours, et une fonction pour le calcul.
Tu me dis si tu veux des explications.
@+
:bonjour:bebarth
Maître des clésoui, mais il faudrait voir le document pour savoir un peu comment sont nommés les champs et adapter le script.
@+
:bonjour:bebarth
Maître des clés…et NaN NaN ? encore moins a number.
:geek:bebarth
Maître des clés…tu vois !!!
:geek:bebarth
Maître des clésTu n’as pas le lien au post de Merlin ?
Je ne pense pas qu’il ait écrit ce script comme ça, il doit y avoir soit un fichier joint, soit un énoncé avant !
Dans le script, il va chercher les textes et valeurs d’exportation dans un fichier joint.
Sinon, si c’est Merlin qui a écrit ce script, je pense qu’il sera plus à même de te l’expliquer…
@+
:bonjour:bebarth
Maître des clés…c’est ça de ne pas tester avant de partager !!!
Il faut juste initialiser la variable v en début de script :Code:var v = 0;…et puis c’est tout !
@+
:bonjour:bebarth
Maître des clésJe t’ai fait rapidement un exemple.
Ici je créé un masque arbitraire 99:99:99 donc le nombre d’heures maxi pour chaque champ à additionner est 99 h 59 mn 59 s.
Exemple avec 2 champs, à adapter selon le nombre de champs désirés !
@+
:bonjour:bebarth
Maître des clésbonjour,
Je crois que j’ai compris maintenant.
J’essaye de regarder dans la journée.
@+ :bonjour:bebarth
Maître des clésbonjour,
Et de la même façon, à quoi servent les valeurs d’exportation définies dans les propriétés de la liste déroulante ? Je ne comprends pas bien..
Lorsque l’on va lire la valeur d’une liste déroulante (.value), on récupère la valeur d’exportation, pas le texte que l’on voit dans la liste. Pour récupérer ce texte on utilise getItemAt (https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_methods.htm%23TOC_getItemAtbc-12&rhtocid=_6_1_8_31_2_11).
Les valeurs d’exportations ne sont pas obligatoires, ça dépend du formulaire et de ce que tu veux voir ou récupérer.Pour le reste, ce serait plus simple d’indiquer le post où tu as trouver ces lignes pour avoir l’ensemble du script et non juste 2 lignes…
@+
:bonjour:bebarth
Maître des clésDans ce post récent, on peut additionner plus de 24 heures…
https://abracadabrapdf.net/forum/index.php/topic,3362.msg19756.html#msg19756
@+
:bonjour:bebarth
Maître des clésbonjour,
Il me semble que j’avais travaillé sur ce sujet !
Essaye d’écrire en script de validation des champs :Code:if (this.event.target.value == « 24:00 ») this.event.target.value = « 0:00 »;A tester, mais je pense que ça devrait fonctionner !
…et pourquoi indiquer 24:00 alors que minuit c’est 0:00 ???
@+
:bonjour:bebarth
Maître des clésbonjour,
Il ne suffit pas de réfléchir, après il faut écrire et il y a des jours où c’est plus difficile que d’autres… on écrit « tagret » au lieu de « target » et on se relit 10 fois sans trouver l’erreur ! …ou on écrit une fonction en script de document et on oublie de l’appeler dans un script…
Enfin ! Voici où j’en suis arrivé.
https://we.tl/whMOriUBJp
J’espère donc que j’ai tout compris l’énoncé du problème. :geek:
Il y a donc une fonction en script de document qui est rappelée à chaque fois que l’on clique sur une case.
J’ai redéfini également l’ordre de calcul car in y avait encore un petit souci.
@+
:bonjour:bebarth
Maître des clésbonjour,
Je ne pense pas avoir le temps de regarder ton fichier ce week-end mais j’y ai déjà réfléchi….
Je regarde ça lundi.
Bon week-end
@+:bonjour:
bebarth
Maître des clésbonjour,
…et on peut faire le 1er stage à Pâques, le 2ème en février et le 3ème à Noël ???
Je suppose qu’ils doivent être exécutés dans l’ordre, non ?
@+
:bonjour:bebarth
Maître des clésbonjour Merlin,
Je pensais également que cela venait de Firefox que j’utilise, mais j’ai voulu te répondre avec Safari, et… :Euuuh:@+
:bonjour:bebarth
Maître des clésbonsoir,
Si les tarifs risquent d’être modifiés « fréquemment », il serait peut-être judicieux de les placer dans une table, et de les rappeler lorsqu’on en a besoin dans un script. Ça évite de les re-taper plusieurs fois et évite donc des sources d’erreurs…Je n’avais pas encore pu regarder ton travail.C’est fabuleux. :bravo: C’est exactement ce que je souhaitaisUn grand MerciiiiiiiiBonne soirée
Merlin,
Je modifierai le post plus tard, mais pour te montrer, il n’y a apparemment pas que moi qui est des soucis avec les retours lignes… Pour qu’ils fonctionnent je suis obligé de taper Majuscule-Retour ligne, sinon on dirait que c’est bon dans la fenêtre de texte, mais une fois le post publié, tout est sur la même ligne ! As-tu le même souci ?@+
:bonjour:bebarth
Maître des clésbonjour,
Voici un fichier où j’ai mis des boutons radio et fait les calculs pour la cotisation glace.
Regarde un peu les scripts des champs dont j’ai mis les textes en rouge.
Je pense que si ça te convient, tu sauras les adapter pour les autres champs.
@+
:bonjour:bebarth
Maître des clésMoi j’opterais pour des boutons radio !
En plus, ça simplifierait fortement le script car avec la commande switch tu pourrais juste indiquer le texte en fonction de la valeur du bouton… plus de boucles imbriquées les unes dans les autres.
Si ce n’est pas clair, je te ferai un exemple demain matin.
@+
:bonjour:bebarth
Maître des clésbonjour,
Je pense qu’il faut un peu mieux écrire les boucles, même si c’est un peu fastidieux quand beaucoup sont imbriquées… genre :Code:if (this.getField(« TJS_1h »).value != « Off ») {
event.value = « 1 Heure De Sol »;
} else {
if (this.getField(« TJS_2h »).value != « Off ») {
event.value = « 2 Heures De Sol »;
} else {
if (this.getField(« TJS_3h »).value != « Off ») {
event.value = « 3 Heures De Sol »;
} else {
if (this.getField(« TJS_4h »).value != « Off ») {
event.value = « 4 Heures De Sol »;
} else {
event.target.value = « »;
}
}
}
}Il y a également une erreur sur la console, mais pour l’instant je n’ai pas beaucoup de temps pour regarder !
TypeError: f is null
1051:byteCodeToolEst-il normal que l’on puisse cocher plusieurs cases ???
@+
:bonjour:bebarth
Maître des clésEnregistrer n’est disponible que via l’interface.
Pas tout à fait vrai avec un script d’application.@+ :bonjour:
bebarth
Maître des clésJe ne pense pas directement !
A mon avis, tu dois d’abord enregistrer sous… le document puis l’envoyer par mail avec le nouveau nom, mais ce n’est possible qu’avec une version Acrobat Pro !
@+
:bonjour:bebarth
Maître des clésMerlin a raison d’être précis, même si la plupart du temps .value fonctionne pour la concaténation valeurs et de chaînes de caractères, et est même préférable si on ne veut pas indiquer dans un texte des 0 inutiles.
@+
:bonjour:bebarth
Maître des clésbonjour,
On écrit :Code:…
cSubject: this.getField(« date_auto »).value + « ici je veux du texte » + this.getField(« autreChamp »).value + maVariable + « je finis par un autre texte. »,
…On est souvent obligé de combiner valeurs et textes pour ajouter des espaces ou la ponctuation !
@+
:bonjour:bebarth
Maître des clésOn met des guillemets lorsqu’on indique un texte. Par exemple, pour cMsg : « Si vous voulez ne plus faire parti de… » est le texte que l’on veut faire apparaître.
Lorsqu’on veut indiquer la valeur d’une variable ou d’un champ, pas de guillemets ! Ici, pour cSubject, on veut indiquer la valeur du champ this.getField(« date_auto », donc (this.getField(« date_auto »).value sans guillemets.
@+
:bonjour:PS : par mesure de sûreté, il vaut mieux ne pas indiquer de vrai adresses mail (ou numéro de téléphone) sur le forum. J’ai corrigé en toto@hotmail.com
-
AuteurRéponses