Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarthMaître des clésbonjour,
… avec l’outil de modification d’objets il faut savoir qu’il faut appuyer sur la touche majuscule pour déformer non proportionnellement (à l’inverse des autre logiciels Adobe).
Ça m’a interpelé, j’ai donc vérifié sur Acrobat Pro XI et DC !
Si on étire avec les poignées des coins, ça modifie la taille de façon homogène (homomorphisme) que l’on appuie ou pas sur la touche majuscule.
Par contre, si on utilise la poignée au centre de chaque côté, on peu déformer l’image ou la modifie la taille de façon homogène en appuyant sur la touche majuscule… comme sur les autres logiciels en général !
@+
:bonjour:
bebarthMaître des clésbonsoir,
Voici ce que donnerait le script pour ton exemple :Code:var laListeBis=new Array();
for (var i=1; i<=3; i++) {
if (this.getField(« Case à cocher_ »+(i+3)).value!= »Off ») {
laListeBis.push(this.getField(« Text »+i+ ».0.0″).value);
}
}
this.event.target.setItems(laListeBis);A mettre en script de calcul de ta liste nommée AD.
L’avantage de cette méthode est que s’il y a 50 cases à cocher on ne définit pas une liste de 50 conditions (if) !
Pour info :
if ( this.getField(« Case à cocher_4 »).value == « 1 » ) -> Si la case est cochée et que sa valeur est égale à 1.
if (this.getField(« Case à cocher_ »+(i+3)).value!= »Off ») -> Si la case est cochée, quelle que soit la valeur.@+
:bonjour:
bebarthMaître des clésCode:var chaine = this.getField(« laDate »).valueAsString;
if (chaine != « ») {
//Récupération des éléments de la date
var jour = chaine.substring(0,2);
var mois = chaine.substring(3,5);
var annee = chaine.substring(6,10);
//Définition de l’objet date + 1 jour (les mois sont numérotés de 0 à 11)
var d = new Date(annee,(mois-1),jour);
var n = d.getTime()+(1*24*3600*1000);// 1 pour 1 jour, n en millisecondes
var date = new Date(n);
this.event.target.value = date;
} else {
this.event.target.value = « »;
}@+
:bonjour:
bebarthMaître des clésbonjour,
…sinon tu peux créer une table !!!
Ici avec 5 cases à cocher de cb.0 à cb.4.Code:var laListe=new Array();
for (var i=0; i<=4; i++) {
if (this.getField(« cb. »+i).value!= »Off ») {
laListe.push(this.getField(« cb. »+i).value);
}
}
this.event.target.setItems(laListe);@+
:bonjour:
bebarthMaître des clésbonjour,
Voici une solution si tu n’y es pas arrivé tout seul :Code://Récupération des éléments de la date
var chaine = this.getField(« laDate »).valueAsString;
var jour = chaine.substring(0,2);
var mois = chaine.substring(3,5);
var annee = chaine.substring(6,10);
//Définition de l’objet date + 1 jour (les mois sont numérotés de 0 à 11)
var d = new Date(annee,(mois-1),jour);
var n = d.getTime()+(1*24*3600*1000);// 1 pour 1 jour, n en millisecondes
var date = new Date(n);
this.event.target.value = date;@+
:bonjour:30 août 2018 à 17:03 en réponse à : Bouton qui coche une case à cocher (et qui décoche quand on reclique dessus) #64541
bebarthMaître des clésbonjour,
A mettre en script d’action du bouton :Code:if (this.getField(« cb »).value!= »Off ») {
this.getField(« cb »).checkThisBox(0,false)
} else {
this.getField(« cb »).checkThisBox(0,true)
}cb étant le nom de champ de la checkbox.
@+
:bonjour:
bebarthMaître des clésbonjour,
Regarde ce post, cela devrait t’aider…
https://abracadabrapdf.net/forum/index.php/topic,3480.msg20773.html#msg20773
Il faudra évidemment adapter le script à ce que tu veux faire exactement !
@+
:bonjour:28 août 2018 à 09:21 en réponse à : Exporter données formulaire PDF vers base de données ACCESS #63856
bebarthMaître des clésbonjour,
Si Adobe à retiré ce paramètre depuis Acrobat 6.0, je ne vois pas pourquoi ils le remettraient !!!!
As-tu essayé d’avoir la boite de dialogue d’enregistrement ?
@+
:bonjour:27 août 2018 à 17:33 en réponse à : Exporter données formulaire PDF vers base de données ACCESS #63854
bebarthMaître des clésComme le titre « An alternate method for exporting an attachment that is a PDF file » l’indique, ça ne fonctionne que si la pièce attachée est un fichier pdf !
@+
:bonjour:27 août 2018 à 14:25 en réponse à : Exporter données formulaire PDF vers base de données ACCESS #63852
bebarthMaître des clésbonjour,
On ne peut apparemment plus définir le paramètre cDIPath !
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_exportDataObjectbc-31&rhtocid=_6_1_8_23_1_30
Regarde ce que l’on peu faire car je ne comprend pas « If cDIPath is not passed to this method, a file selection dialog box opens to allow the user to select a save path for the embedded data object. »
Peut-être faut-il indiquer cDIPath: » » pour avoir la boîte de dialogue (?????)
@+
:bonjour:
bebarthMaître des clésbonjour,
Après ton message d’erreur il faut faire un reset de ton champ, puis un focus :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_resetFormbc-92&rhtocid=_6_1_8_23_1_91
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FField_methods.htm%23TOC_setFocusbc-18&rhtocid=_6_1_8_31_2_17Code:…
this.resetForm(« nomChamp »);
this.getField(« nomChamp »).setFocus();
…@+
:bonjour:
bebarthMaître des clésSur Acrobat Pro, le plus simple est de créer une action puis de la lancer.
Ci-joint un fichier à décompresser et à charger dans Acrobat Pro, juste avec un double clique.
Sinon, voici es copies d’écran pour créer l’action et la lancer.
Pour « Ajouter des fichiers » tu sélectionnes tous les fichiers à traiter.
Ce n’est pas très compliqué. Essaye et tu me dis !
Sinon j’essaierai de développer un peu plus tard…
@+
:bonjour:
bebarthMaître des clés:Euuuh: :doute:
Pour Acrobat Pro je vois, mais pour Adobe Reader comme ça, je ne sais pas !
@+
:bonjour:22 août 2018 à 22:31 en réponse à : Exporter données formulaire PDF vers base de données ACCESS #63849
bebarthMaître des clésJ’ai oublié le point-vigule…
Code:…
Variables+=f.valueAsString + « ; »;
…@+
:bonjour:
bebarthMaî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 #63847
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clésFait une copie de ce que tu as écris !
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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 #64437
bebarthMaî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 #64433
bebarthMaître des clés…pour moi les champs sont verts également !
:Euuuh: :Euuuh:
bebarthMaî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 #64430
bebarthMaî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 #64426
bebarthMaî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 #64424
bebarthMaî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 #64422
bebarthMaî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 #64417
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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 #64347
bebarthMaître des clésbonjour,
Je t’ai envoyé une proposition en MP sur le fichier que tu m’as fourni.
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clésTu vois Lucie, j’étais certain que Merlin aurait une explication ! :extra:
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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 #64342
bebarthMaî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 #64340
bebarthMaî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 #64338
bebarthMaî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:
bebarthMaî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:
bebarthMaî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. #64359
bebarthMaî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:
bebarthMaî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. #64356
bebarthMaî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 #64334
bebarthMaî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. #64354
bebarthMaî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. #64352
bebarthMaî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:
bebarthMaître des clésmoi j’ai Sierra et Acrobat Pro DC 2018.11.20040.280397, et ça fonctionne !
@+
:bonjour:
bebarthMaî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 #64329
bebarthMaître des clésbonjour,
Est-ce le résultat d’un calcul ou le nombre est-il rentré manuellement ?
@+
:bonjour:
bebarthMaître des clésQuel est le format du fichier image ?
Tu peux le partager ?
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clés…et pourquoi faire si simple quand on peut faire plus compliqué ?
:geek:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clésbonjour,
Voici la version avec texte en rouge si > 24 h.
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clés…je termine juste un petit boulot (car j’ai aussi un métier :geek: ) et je regarde ça !
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clésLe fichier texte se trouve là … dans le panneau des pièces jointes.
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clés…Il semblerait que j’ai posté ton fichier zip !
Désolé. Normalement celui-ci est le bon.
@+
:bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clés…et NaN NaN ? encore moins a number.
:geek:
bebarthMaître des clés…tu vois !!!
:geek:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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:
bebarthMaître des clésbonjour,
Je crois que j’ai compris maintenant.
J’essaye de regarder dans la journée.
@+ :bonjour:
bebarthMaî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:
bebarthMaî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:
bebarthMaî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: -
AuteurRéponses
