Toutes mes réponses sur les forums
-
AuteurRéponses
-
28 octobre 2014 à 14:25 en réponse à : Remplissage automatique d’ un champs en fonction d’ un autre #57824brumbiesMembre
Bonjour,
Tes idées sont bonnes.
Idée 1 : restritive car l’on ne laisse le choix que de DN
On peut utiliser la notification simplifiée en multipliant la conversion souhaitée par la valeur de ta liste déroulante DN (s1 dans l’exemple)Idée 2 : plus de lignes de code
On peut procéder comme suit:
1) réinitialiser l’ensemble des champs lors de l’activation de l’un d’eux
2) script placer dans l’onglet calculUne troisième idée serait de faire comme les sites de conversion de devises.
en rentrant un chiffre dans un champs texte et de choisir l’une des 4 mesures (DN, Pouces, Diamètre et diamètres extérieurs) via un menu déroulant
tu peux combiner les 2 premières idées pour le réaliser:Smiley01:
brumbiesMembre:bravo:
brumbiesMembreBonjour,
Le problème que je vois c’est la gestion de 2 masques arbitraires distincts l’un à 4 caractères, l’autres à 5 caractères dans un même champs texte.
Une solution serait de mettre la fonction toUpperCase() en format personnalisé et de gérer le format via un script de désactivation de ton champs texte en y intégrant un script du style de celui-ci :Code:var longueur = getField(“Kernel2”).length;
var compteur = 0;var gauche = getField(“Kernel2”).value.substring(0,longueur – 3);
var milieu = getField(“Kernel2”).value.substring(longueur – 3,longueur – 1);
var droite = getField(“Kernel2”).value.substring(longueur – 1,longueur);if(gauche.match(/^[A-Za-z]+$/) != gauche && gauche != “”)
compteur ++;
if(milieu.match(/^[0-9]+$/) != milieu && milieu != “”)
compteur ++;
if(droite.match(/^[A-Za-z]+$/) != droite && droite != “”)
compteur ++;if(compteur > 0)
{
app.alert(“Ce champs doit être de la forme suivante : AA99A ou A99A.nMerci de revoir.n”);
this.getField(“Kernel2”).setFocus();
}le script est à placer au niveau de ton champs “Kernel2” dans Actions et en choisissant bien “champs désactivé”.
tu sauras si la saisie est valide uniquement lors de la sortie du champs texte.Je regarde si on peut intégrer ce code au niveau du format via un script de touche …
:Smiley01:27 octobre 2014 à 15:11 en réponse à : JavaScript (ou autre) pour calculer surface d’un disque #57823brumbiesMembre:Smiley03:
27 octobre 2014 à 14:17 en réponse à : JavaScript (ou autre) pour calculer surface d’un disque #57821brumbiesMembreBonjour,
le signe ^ est un opérateur en javascript qui permet une comparaison OU en bit-à-bit exclusif => donc inutile de le retenir, perso je ne m’en suis jamais servi …
Tu as 2 solutions pour obtenir la surface d’un disque :
1er : via la notation simplifiée
=> 3.14 * champs1 * champs1
ou 3.14 est un arrondi de PI et champs1 est le rayon de ton disque2eme : via un script de calcul personnalisé
=> this.event.value = Math.PI * Math.pow(variable , puissance)
avec variable = rayon de ton disque (this.getField(“xxx”).value)
et puissance = 2 ici car on élève le rayon au carré.
:Smiley01:PS: pour calculer la racine carré d’un nombre, tu peux utiliser la fonction Math.pow() avec comme puissance = 0.5
brumbiesMembreBonsoir,
1) utilité du champs texte masqué :
il n’est pas possible “en natif” de décocher un bouton radio, le champs texte masqué associé aux scripts intégrés au bouton radio p705 le permet.
c’était pour te montrer la possibilité de “griser/dégriser” le bouton radio Group1.2) ensuite le script que je t’ai mis, affecte au groupe bouton radio “Group1” une couleur de fond, une couleur de contour et le met en lecture seule ou non.
Donc ce que tu demandes en l’état n’est pas possible car le fait de cocher a1 ou a2, grisera le groupe “B” et “C” en totalité.Une alternative est de créer 5 groupes :
– groupe “A” avec les options a1, a2 et a3
– groupe b1
– groupe b2
– groupe c1
– groupe c2ce qui te permettra de gérer indépendamment b1/b2 et c1/c2.
ensuite, pour faire comme si b1/b2 et c1/c2 faisaient respectivement partie du même groupe, tu peux le gérer via la ligne:
this.getField(“xx”).value = “Off”; associé au déclencheur “Souris relâchée”.
:Smiley01:23 octobre 2014 à 23:34 en réponse à : Problème – Formulaire intelligent, données non mises à jour #57804brumbiesMembreBonsoir,
Je sèche sur la raison de ton problème… je suis preneur si quelqu’un à la réponse
j’ai modifier 2-3 codes et ça a l’air de fonctionnerbrumbiesMembreBonsoir,
Je te joins un fichier pour te présenter une solution.
21 octobre 2014 à 17:41 en réponse à : Plusieurs listes déroulantes et remplissage d’après les différents choix #57783brumbiesMembreBonsoir,
Il faut prendre la valeur d’exportation de tes champs dr1, dr2 et dr3 au niveau de ton test, ce qui donne :
var d1=this.getField(“dr1”).value;
var d2=this.getField(“dr2”).value;
var d3=this.getField(“dr3”).value;
if(d1 == 1 && d2 == 1 && d3 == 3)
{
this.getField(“art”).value=”12345678″;
// ou this.event.value=”12345678″;
}par contre le script est à placer au niveau de l’onglet calcul et non de l’onglet validation.
Pour finir et pour info, si ta valeur d’exportation avait été une lettre comme A alors il aurait fallu mettre “A” au niveau de ton script lors du test
21 octobre 2014 à 11:35 en réponse à : Sélection option bouton radio après sélection d’une case à cocher #57790brumbiesMembreBonjour,
On aurait aussi pu utiliser le code suivant :
this.getField(“TEST”).value = “test2”; // ou “test2” est le nom de l’option de bouton radio désiréDe plus, je vous joins un exemple pour décocher un bouton radio via un script et l’aide d’un champ texte invisible à l’écran.
11 octobre 2014 à 23:07 en réponse à : Ne pas afficher le petit "+" lorsque le champ est trop petit #57741brumbiesMembreJavascript peut être intègre aussi bien dans un pdf que dans une page web. Ensuite il faut un utilitaire pour l’interpréter, soit un navigateur pour une page web, soit Acrobat (par exemple) pour un pdf.
Cependant que ce soit dans l’un ou l’autre cas il s’agit du “même langage” (même s’il y a des fonctions spécifiques a l’un et l’autre – d’où le fait qu’Adobe ait mis a dispo des utilisateurs la Bible :Javascript for Acrobat API Référence)
Quelque soit le support utilise, les opérateurs, la définition des variables, les structures de contrôles, etc… Sont identiques.
Exemple : Math.PI qui renvoi un arrondi du nombre PI (ok il faut le pouvoir le placer…)
Donc pour créer un script “optimum”, il faut combiner les données présentes dans la Bible citée plus haut avec les données des différents tutoriels présents sur le web sur l’initiation a javascript comme le site ci-dessous par exemple :https://developer.mozilla.org/fr/docs/Web/JavaScript/Une_réintroduction_à_JavaScriptDans le cas présent, switch est utile car on est sur des itérations simples avec une condition unique sur menu31
On aurait aussi pu prendre le script de bendegards et l’alléger en retirant les else puisque l’on est sur un nombre limite de possibilité via le menu (par contre si la saisie était libre via un champs texte par exemple alors les else se justifiait)
Une autre possibilité aurait été de préférer une liste box a un menu et d’affecter la valeur d’exportation de la liste box au champs “raison dossier”Tous les chemins mènent a Rome ! :Smiley01:
brumbiesMembreBonsoir,
Je t’ai fait une copie écran pour visualiser la marche à suivre…
:Smiley01:22 septembre 2014 à 21:21 en réponse à : Scripts pour faire une liste avec valeur d’Exportation #57691brumbiesMembreCe n’est pas envisageable comme tu le décris.
Par contre on peut modifier un peu le code initial pour obtenir ce que tu veux…Dans le code initial, avant de remplir le menu déroulant, je remplis un tableau à 2 colonnes et une fois constitué, je remplis le menu déroulant à partir de ce tableau.
Donc le plus simple c’est d’avoir un champ texte (Texte2) qui va recevoir les actions associées aux codes saisis (Texte et Texte1) en recherchant dans le tableau initialement renseigné les lignes correspondantes aux 2 codes et en affectant à Texte2 l’action associée sur la même ligne dudit tableau (un peu comme si tu utilisais la fonction Recherchev sous Excel).
Le code est sur le bouton en haut à droite
:Smiley01:
PS: n’hésite pas à l’avenir de décrire davantage ce que tu recherches dès le début…22 septembre 2014 à 16:18 en réponse à : Scripts pour faire une liste avec valeur d’Exportation #57689brumbiesMembreBonjour,
Pas de soucis sur ton niveau, on a tous commencé en bas… et on apprend tous les jours!Logique que le code ne fonctionne pas avec des nombres à 4 chiffres, car dans ton post d’origine tu te cantonnais à des codes à 5 chiffres uniquement.
Je t’ai apporté une modif prenant en compte des codes à 4 ou 5 chiffres.
:Smiley01:21 septembre 2014 à 22:24 en réponse à : Scripts pour faire une liste avec valeur d’Exportation #57687brumbiesMembreBonsoir,
c’est faisable, mais perso je ne ferai pas comme tu le décris.
On ne peut pas saisir un nombre ou un texte dans un menu déroulant mais dans un champs texte.On place un champs texte ou tu saisiras ton code postal (enfin je suppose) et on place un champs menu déroulant (comme cela on n’a pas besoin de modifier le code existant du fichier précédent) en mode lecture seul sur lequel on inverse le sens des valeurs (5 chiffres en valeur d’exportation et nom associé dans la partie “visible” de ton menu déroulant.
je place le code au niveau du champs texte lorsque celui-ci est désactivé
Je t’ai fait un exemple et te laisse l’adapter.
:Smiley01:brumbiesMembreBonsoir,
Tu étais près du but.
J’ai apporté 2-3 modifs à ton code.
:Smiley01:18 septembre 2014 à 14:17 en réponse à : Scripts pour faire une liste avec valeur d’Exportation #57685brumbiesMembreBonjour
J’ai mis à jour ton doc.exemple fait à partir de données copier d’un excel (sous la forme ci-dessous) et coller dans ton champs “items”:
aaaaa choix1, 2 et 3 bbbbb choix4 et 5 ccccc choix6:Smiley01:
brumbiesMembreSuper! Merci Merlin
Je ne connaissais pas cette subtilité
:bravo:brumbiesMembrec’était l’objet de mon premier post, ca ne fonctionne sur adobe reader qu’à partir de la version 11 et donc logique que ca ne fonctionne pas sur le version 10
:bonjour:brumbiesMembreJe connais très bien le secret bancaire…
De ce que j’ai compris de ta demande initiale, c’est que tu cherches à dupliquer une page d’un pdf autant de fois que le nombre choisit par l’utilisateur via une liste déroulante.
Dans ce cas, je t’ai fait un fichier te montrant un exemple de code que tu peux utiliser.
=> j’ai créé un modèle de document (template) nommée “Page1” que j’ai décidé de masquer par défaut.
=> J’ai mis une liste déroulante avec des choix allant de 1 à 4 et en cliquant sur le bouton dupliquer ca te duplique la “Page1” autant de fois que le nombre sélectionné dans la liste déroulante.
=> J’ai mis aussi un bouton supprimer pour supprimer le nombre de pages créé.Ce code fonctionne avec adobe reader 11
:bonjour:brumbiesMembreLe plus simple serait de poster ton fichier que je regarde.
brumbiesMembreBonjour,
Tu le teste avec quelle version d’adobe reader?
Car il me semble que seul la version 11 permet d’intervenir (via ton code) sur des modèles de page.
:bonjour:brumbiesMembreBonjour,
1) l’une ou l’autre méthode de réinitialisation de champs fonctionne très bien. Celle de Merlin est utile pour les cas ou tu as beaucoup de champs à gérer et que tu ne doives en sélectionner qu’une partie (comme dans ton cas), l’autre est utile si tu as peu de champs (donc dérouler une liste peu volumineuse de champs un à un).
2) Oui c’est possible, pour cela il faut au préalable que tu affectes à tes champs concernés une “valeur d’exportation” (propriétés de la liste déroulante => Options => valeur d’exportation).
Ensuite tu utilises une boucle “For” pour parcourir des champs journaliers (l’application de la Convention de dénomination des champs de formulaire te serais aussi utile ici aussi) et l’élément de comparaison “If” pour tester la valeur de ton champs (via sa valeur d’exportation this.getField(Nom du champs).value ).:Smiley01:
brumbiesMembreBonjour,
Regarde du côté des 2 sujets ci-dessous, tu devrais trouver ce que tu cherches :
http://abracadabrapdf.net/forum/index.php/topic,2228.0.html
http://abracadabrapdf.net/forum/index.php/topic,2289.0.html:Smiley01:
brumbiesMembrePas mieux non plus !
Merlin n’est pas Grand Magicien pour rien !
:Smiley08:brumbiesMembreIdem Merlin, Degards, je m’incline ! Le plus simple est de passer par un format de date personnalisée c’est clair (à moins que le but soit un horodatage…).
Degards : débuter en script, pour ma part j’ai commencer par des “petits scripts” (affectation de valeurs calculées à un champs, rendre visible un champs en fonction d’une condition, …).
=> Ce forum est une mine d’or pour t’aider à commencer.
=> en y associant la bible “JavaScript™ for Acrobat® API Reference” http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdfbrumbiesMembrePourquoi faire simple quand on peut faire compliquer ! :geek:
“Masque arbitraire” : Je m’incline, je ne connaissais pas cette possibilité, mais elle est à recommander plutôt qu’un script. Facilité + gain de temps !
Merci Merlin :bonjour:
brumbiesMembreBonjour,
Essai en suivant le tuto suivant et dis nous si tu as la partie “format”:
http://wwwimages.adobe.com/content/dam/Adobe/fr/products/acrobat/pdfs/adobe-acrobat-xi-edit-text-and-images-in-a-pdf-file-tutorial.pdf:bonjour:
brumbiesMembreBonsoir,
Avant de commencer, tu ne peux pas utiliser un format de date “standard” disponible au niveau de ton champs de formulaire? C’est le plus simple…
Sinon, ci-joint un fichier reprenant 2 solutions:
1) tu saisis ta date au format “201407150945” et en sortant du champs il se mets selon le format souhaitez.
=> inconvénient : risque d’erreur de saisie important (je n’ai pas géré le nombre de caractères ni la saisie de lettres, mais c’est possible)
Cette solution est proche du topic précédent http://abracadabrapdf.net/forum/index.php/topic,2482.0.html2) si ton souhait est d’horodater tes documents, le mieux est de récupérer la date et l’heure système
=> c’est ce que fait le bouton “horodater”.A bientôt.
:bonjour:[attachment deleted by admin]
brumbiesMembreBonjour,
Ci-joint un exemple de fichier ou je t’ai mis une fonction afin de répondre à ta demande :
afin de faciliter la saisie de l’heure en intervention, est il possible de saisir 1230 ce qui se transforme en 12:30 automatiquement
Je n’ai pas mis de contrôle spécifique si tu dépasses le nombre de caractère ou si si tu ne saisis pas une heure valide, mais tu peux le rejouter sans problème.
et ensuite avec la méthode de Merlin, je t’ai mis le calcul sur le 2ème champs “heure de fin” (script de champs désactivé)
A bientôt.
[attachment deleted by admin]
27 juin 2014 à 12:47 en réponse à : Bouton coller photo + dupliquer ce champ photo sur chaque page #57359brumbiesMembreBonjour,
pour le script :
Sur ton bouton B1 tu places le code :
this.getField(“B2”).buttonPosition = position.overlay;
this.getField(“B2”).buttonImportIcon();
this.getField(“B2”).readonly = true;
this.getField(“B2”).fillColor = color.transparentet ensuite tu ne crées pas n boutons sur n pages, tu crées 1 seul bouton B2 que tu dupliques sur l’ensemble de tes pages à entête.
Attention avec cette solution tu visualiseras uniquement le logo sur le bouton B2 et non sur le bouton B1, mais je pense que c’est ce que tu cherches à avoir?
:Smiley01:brumbiesMembreBonsoir,
Je n’arrive pas à reproduire ton problème.
Peux tu nous dire qu’elle version d’acrobat tu utilises?
As tu essayé de changer de photos? de changer de format d’image?:Smiley01:
26 juin 2014 à 21:29 en réponse à : Problème de changement de taille en mode plein écran sur PDF cliquable #57353brumbiesMembreBonsoir,
Quand tu affectes la page de destination à ton lien augmente le % de visualisation au préalable (si tu as la possibilité de mettre en pleine largeur ou en pleine hauteur ca serait mieux – à tester).
=> il faut mettre le même % de visualisation que celui qui est paramétré dans les propriétés du documents (vue initiale / Zoom)Ca devrait répondre à ton besoin
:Smiley01:26 juin 2014 à 21:11 en réponse à : Bouton coller photo + dupliquer ce champ photo sur chaque page #57356brumbiesMembreBonsoir,
Le “event.target” fonctionne mais limite l’affectation de la fonction (ici buttonPosition et buttonImportIcon) au seul bouton qui “reçoit” l’évènement.
Donc tu as 2 possibilités pour faire ce que tu veux :
1) Soit tu n’utilises qu’un seul bouton que tu dupliques et place en entête sur les autres pages.
Dans ce cas tu peux utiliser le code suivant à placer dans les Actions => Souris relachée => Exécuter un script Javascript :Code:event.target.buttonPosition = position.overlay;
event.target.buttonImportIcon();
event.target.readonly = true; // permet de mettre ton bouton en “lecture seul”
event.target.fillColor = color.transparent; // permet de mettre la couleur de fond transparentePar contre, pour modifier le logo tu dois fermer et rouvrir ton fichier.
2) Soit tu utilises 2 boutons, l’un sur la première page permettant de choisir le logo, et l’autre que place et duplique sur chaque page au niveau de l’entête.
Dans ce cas, le code est le suivant et est à placer au même endroit :Code:this.getField(“Nom du bouton à entête”).buttonPosition = position.overlay;
this.getField(“Nom du bouton à entête”).buttonImportIcon();
this.getField(“Nom du bouton à entête”).readonly = true; // permet de mettre ton bouton en “lecture seul”
this.getField(“Nom du bouton à entête”).fillColor = color.transparent; // permet de mettre la couleur de fond transparenteEtant entendu que les lignes readonly et fillColor sont inutiles et peuvent être paramétrées à la création du 2nd bouton (ce que je te conseille).
Sinon une dernière solution serait de mettre le 2ème code dans un script d’ouverture de document et dans ce cas inutile de créer le 1er bouton.
En espértant avoir été clair.
:Smiley01:brumbiesMembremea culpa, je me suis focalisé sur un numéro de compte comprenant des lettres, j’ai modifié le fichier pour qu’il prenne en compte les différents types de numéro de compte.
Ca devrait fonctionner maintenant quelque soit ton RIB.
Je ne teste plus le nombre de caractère mais cela est faisable au niveau cu champs “compte” directement.
:Smiley02:[attachment deleted by admin]
brumbiesMembreOui, je te joins le fichier avec le script (au niveau du champs “Clé”).
Il y a 2 choses :
1) il ne gère pas les évènements de saisi (donc la clé RIB s’affiche qu’une fois le champs “compte” “désactivé”)
=> perso, j’utilise très peu les évènements.
2) un numéro de compte comprends 11 chiffres donc la clé n’est calculé que si le champs “compte” comprends 11 caractères
=> on peut supprimer ce controle en supprimant la condition “if(num.length == 12)”
=> j’ajoute le caractère “a” à la valeur du champs “compte” afin de prendre en compte les numéro commencant par 0 (il y a peut être une autre solution).
:Smiley01:[attachment deleted by admin]
brumbiesMembreBonsoir,
tu peux mettre le code ci-dessous dans les scripts de calcul personnalisé (il y a surement plus “court” pour transcoder du alphanumérique en numérique suivant la table de transco que j’ai repris).
Pour info, j’ai repris les noms de tes champs de formulaires.Code:var a = “”;
num = “a” + this.getField(“compte”).value;
if(num.length == 12)
{
for(var i = 2; i<=12; i++)
{
if((num.substring(i-1,i)/1) == num.substring(i-1,i))
{
a = a + “” + num.substring(i-1,i);
}
else
{
if( num.substring(i-1,i) == “A” || num.substring(i-1,i) == “J”)
a = a + “1”;
if( num.substring(i-1,i) == “B” || num.substring(i-1,i) == “K” || num.substring(i-1,i) == “S”)
a = a + “2”;
if( num.substring(i-1,i) == “C” || num.substring(i-1,i) == “L” || num.substring(i-1,i) == “T”)
a = a + “3”;
if( num.substring(i-1,i) == “D” || num.substring(i-1,i) == “M” || num.substring(i-1,i) == “U”)
a = a + “4”;
if( num.substring(i-1,i) == “E” || num.substring(i-1,i) == “N” || num.substring(i-1,i) == “V”)
a = a + “5”;
if( num.substring(i-1,i) == “F” || num.substring(i-1,i) == “O” || num.substring(i-1,i) == “W”)
a = a + “6”;
if( num.substring(i-1,i) == “G” || num.substring(i-1,i) == “P” || num.substring(i-1,i) == “X”)
a = a + “7”;
if( num.substring(i-1,i) == “H” || num.substring(i-1,i) == “Q” || num.substring(i-1,i) == “Y”)
a = a + “8”;
if( num.substring(i-1,i) == “I” || num.substring(i-1,i) == “R” || num.substring(i-1,i) == “Z”)
a = a + “9”;
}
}
var RIB = 97 – ( (89 * this.getField(“banque”).value + 15 * this.getField(“guichet”).value + 3 * a ) % 97 );
this.getField(“Cle”).value = RIB;
}:Smiley01:
-
AuteurRéponses