Toutes mes réponses sur les forums
-
AuteurRéponses
-
26 septembre 2018 à 13:51 en réponse à : Centrer une colonne de texte par rapport au milieu d’une feuille A4 #64576
bebarthMaître des clésbonjour,
Voici une action que j’ai écrite pour pouvoir imprimer tes pages centrées sur un format A4.
On pourrait l’adapter pour avoir des marges intérieures et extérieures différentes si le texte prenait plus de place, comme le note Merlin.
C’est peut-être « un peu long » (45 secondes pour les 7 pages sur un Mac Pro 3,2 GHz Quad-Core) car sur chaque page je vérifie la position de tous les mots pour connaitre exactement les marges autour texte.
Je ne vois pas comment faire autrement… La position du premier et du dernier mot donnerait (peut-être) la position verticale, mais pour la position horizontale…
@+
:bonjour:
bebarthMaître des clésBonsoir,
Voici un lien qui pourra t’aider :
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23TOC_exportAsTextbc-28&rhtocid=_6_1_8_23_1_27
@+
:bonjour:
bebarthMaître des clésAvec quelle version d’Acrobat as-tu un souci.
Je n’ai pas de problème avec Acrobat Pro DC.
Sinon, tu peux essayer (mais je ne sais pas si ça fonctionne) de mettre ton script en pièce jointe et de le rappeler avec :Code:var oFile=this.getDataObjectContents(« monFichier.js »);
var cFile = util.stringFromStream(oFile, « utf-8 »);…à essayer !
@+
:bonjour:25 septembre 2018 à 09:21 en réponse à : Récupérer les données de formulaires PDF dans un seul tableau Excel #59482
bebarthMaître des clésEh bien on peut exporter les valeurs des champs dans un fichier texte si cela t’intéresse.
https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm
@+
:bonjour:
bebarthMaître des clésDésolé, mais je ne sais personnellement pas écrire les tables Javascript telles qu’elles le sont dans ton fichier Initialisation.
@+
:bonjour:25 septembre 2018 à 08:06 en réponse à : Récupérer les données de formulaires PDF dans un seul tableau Excel #59479
bebarthMaître des clésbonjour,
Ce qui est certain, c’est que ce que tu as indiqué n’est pas une ligne de code JavaSript et ne peut donc pas être interprété avec Acrobat.
C’est apparemment une ligne de code sous Unix !
Que cherches-tu à faire exactement ?
@+
:bonjour:
bebarthMaître des clésbonjour,
…
N’hésitez pas à demander si je suis pas assez clair.
…
Alors oui j’ai trouvé comment rentrer du vide …Je ne comprends rien ! C’est quoi rentrer du vide ???
Lorsque tu postes une réponse, si tu as une autre question plus tard, il ne faut pas modifier ton premier poste mais faire une autre réponse sinon les personnes qui suivent ton sujet ne sont pas averties de ta modification de poste.
@+
:bonjour:
bebarthMaître des clésIl y a également un script d’action d’ouverture de page !
En effet // correspond à une annotation et la ligne n’est pas prise en compte. On peut dupliquer une ligne , ajouter // à la ligne originale et tester une modification. On n’a pas perdu la première ligne !
@+
:bonjour:
bebarthMaître des clésAs-tu copié les 3 scripts de document et les scripts de touche personnalisés des ListeNiveau1 et ListeNiveau2 ?
Sinon, peux-tu partager ton fichier ?
@+
:bonjour:
bebarthMaître des clésbonjour,
Il faut que tu regardes et adaptes le script de document.
Voici le fichier d’Alex adapté à ce que j’ai cru comprendre.
@+
:bonjour:
bebarthMaître des clésbonsoir,
Je viens d’écrire un petit script pour changer automatiquement la couleur des caractères V, N, D et -.
A mettre en script d’action de champ désactivé !Code:var leTexte = this.event.target.value;
var leTexte = leTexte.replace(/V/gi, « ,VERT, »);
var leTexte = leTexte.replace(/N/gi, « ,ORANGE, »);
var leTexte = leTexte.replace(/D/gi, « ,ROUGE, »);
var leTexte = leTexte.replace(/-/gi, « ,BLEU, »);
var leTexte = leTexte.replace(/,,/gi, « , »);
var n = leTexte.charAt(0);
var nn = leTexte.charAt(leTexte.length-1);
if (n!= », ») {
var debut = 0;
} else {
var debut = 1;
}
if (nn!= », ») {
var fin = 0;
} else {
var fin = 1;
}
var laChaine = leTexte.substring(debut,leTexte.length-fin);
var chaine = laChaine.split(« , »);
var spans = new Array();
for (var i=0; ivar texte = chaine;
switch (texte) {
case « VERT »:
var txtSpan= »V »;
var colSpan=color.green;
break;
case « ORANGE »:
var txtSpan= »N »;
var colSpan=[« CMYK », 0,0.35,0.85,0];
break;
case « ROUGE »:
var txtSpan= »D »;
var colSpan=color.red;
break;
case « BLEU »:
var txtSpan= »-« ;
var colSpan=color.blue;
break;
default:
var txtSpan=texte;
var colSpan=color.black;
}
spans = new Object();
spans.text = txtSpan;
spans.textColor = colSpan;
}
this.event.target.richValue = spans;@+
:bonjour:21 septembre 2018 à 19:50 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64505
bebarthMaître des clés…peut-être ce week-end ou lundi !
J’ai modifié le fichier « Imprimer les Fichiers.pdf » précédemment posté pour indiquer les champs à remplir. Ce n’était peut-être pas évident pour tout le monde.
@+
:bonjour:21 septembre 2018 à 09:15 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64503
bebarthMaître des clésPour ce script, il n’y avait qu’à assembler des morceaux d’autres scripts que j’avais déjà écris et à essayer le résultat avec Adobe Reader.
Ça a fonctionné PRESQUE du premier coup !
@+
:bonjour:21 septembre 2018 à 08:00 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64501
bebarthMaître des clésbonjour,
Voici donc ce qu’il faut faire :- Télécharger et décompresser le fichier « Impression de pages pre?cises_BB.zip » ci-joint.
- Placer le fichier « ImpressionPerso.js » dans le répertoire JavaScript d’Adobe Reader (je ne sais pas où il se trouve sous Windows).
- Placer tous les fichers à imprimer dans le répertoire « Imprimer ces Fichiers ». Attention, le répertoire « Imprimer ces Fichiers » et le fichier « Imprimer les Fichiers.pdf » doivent se trouver dans le même répertoire.
- Ouvrir le fichier « Imprimer les Fichiers.pdf » et renseigner les différents champs. Ne pas oublier d’indiquer les noms des fichiers à imprimer…
- Appuyer sur le bouton »IMPRIMER ».
[/list]Tu me dis s’il y aurait des adaptations à faire.
@+
:bonjour:20 septembre 2018 à 12:55 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64500
bebarthMaître des clésMerci pour l’utilitaire Merlin !
En fait, je souhaiterais pouvoir imprimer les pages 1 à 3 d’une quarantaine de fichiers pdf (ou par exemple la page 4 de tous ces fichiers), sans avoir à lancer les impressions une par une.
Tous ces fichiers sont-ils groupés dans un même répertoire ou dispersés à droite à gauche !
@+
:bonjour:20 septembre 2018 à 12:06 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64498
bebarthMaître des clésOui pour moi, mais je suppose qu’Adobe Reader reste Adobe Reader même avec la console et que certaines commandes JavaScript ne fonctionnent pas !
Correct ?
@+
:bonjour:20 septembre 2018 à 11:13 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64496
bebarthMaître des clésbonjour,
Je n’avais pas Adobe Reader installé depuis bien des années. Les scripts que j’écris sont pratiquement toujours utilisés avec Acrobat Pro et j’avoue que j’ai souvent tendance à oublier que certaines fonctions ne peuvent être utilisées avec Adobe Reader !!!
Je viens de l’installer et je regarderai ce qu’il est possible de faire (mais je ne sais pas exactement quand, peut-être en début de semaine prochaine).
@+
:bonjour:18 septembre 2018 à 20:43 en réponse à : Impression de pages précises de plusieurs fichiers pdf #64488
bebarthMaître des clésbonsoir,
Le prix d’une licence pro est d’environ 215€/an.
Peut-être y a-t-il des prix pour l’educa Nationale ?
Voir si ça vaut le coup… il y a tellement de possibilités avec que je dirais oui, mais si c’est juste pour imprimer et ne rien faire d’autre, je ne sais pas !
@+
:bonjour:
bebarthMaître des clésj’avais fait l’inverse ! il faut donc écrire :
Code:otherDoc.getField(« DEMANDEUR_NOM »).value=this.getField(« DEMANDEUR_NOM »).value;@+
:bonjour:
bebarthMaître des clésà ce moment la, tu écris :
Code:var otherDoc = this.openDataObject(« Resume commande.pdf »);@+
:bonjour:
bebarthMaître des clésbonjour,
Tu ouvres ton fichier que tu viens d’extraire avec :Code:var otherDoc = app.openDoc({
cPath: chemindufichier,
});Tu recopies les valeurs des champs avec :
Code:this.getField(« nomChamp »).value=otherDoc.getField(« nomChamp »).value;…et à la fin tu refermes le fichier avec :
Code:otherDoc.closeDoc();Si tu n’y arrives pas et que tu peux partager un fichier…
@+
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: -
AuteurRéponses
