Toutes mes réponses sur les forums
-
AuteurRéponses
-
bebarth
Maître des clés:extra:
j’avais pas du tout compris ça ! je pensais que Nawel.CPA voulait construire un menu déroulant à partir d’autres champs (X, A, B…)
+@
:bonjour:bebarth
Maître des clésbonjour,
désolé mais ce n’est pas très clair !!! il faudrait un peu plus d’explications…
@+
:bonjour:bebarth
Maître des clés:bravo:
si tu veux connaitre le temps exact d’exécution du script, tu places avant ton scipt :console.show();
console.clear();
//debut duree
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0)
console.println(« Début du process: »+debut)et après ton script :
//fin duree
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df)
console.println(« Fin du process: »+fin)
delta=(df.valueOf()-d0.valueOf())/1000/60
console.println(« Durée du process: »+delta+ » minutes »)@+
:bonjour:bebarth
Maître des clésbonjour,
Il faudrait donner un peut plus d’information sur le logiciel utilisé et sous quel OS.
dans un premier temps, voici l’adaptation d’un script que j’avais écris et qui listera dans la console tous les mots commençant par une capitale.
l’indication de la durée du process peut être interressant pour des documents volumineux.var nbmots = 0;
console.show();
console.clear();
//debut duree
d0=new Date();
debut=util.printd(« dd-mm HH:MM »,d0);
console.println(« Début du process: »+debut);
//Changement de page
for (var p = 0; p < this.numPages; p++)
{
console.println(« *** Page « +(p+1)+ » *** »);
var numWords = this.getPageNumWords(p);
for (var i=0; i{
var ckWord = this.getPageNthWord(p, i, true);
//Recherche première lettre en majuscule
if (ckWord.charCodeAt(0)>=65 & ckWord.charCodeAt(0)<=90)
{
console.println(ckWord);
nbmots = nbmots+1;
}
}
}
console.println(« *** « +nbmots+ » mots trouvés commençant par une majuscule »)
//fin duree
df=new Date();
fin=util.printd(« dd-mm HH:MM »,df);
console.println(« Fin du process: »+fin);
delta=(df.valueOf()-d0.valueOf())/1000/60;
console.println(« Durée du process: »+delta+ » minutes »);@+
:bonjour:bebarth
Maître des clésessaye de rajouter :
this.closeDoc(true);
@+
:bonjour:bebarth
Maître des clés:Euuuh:
…pour moi, il n’y a pas de boîte de dialogue, et même, si le fichier .fdf existe déjà, il est remplacé sans avertissement !!!http://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#rhhlterm=this.exportAsFDF&rhsyns=&t=Acro12_MasterBook%2FJS_API_AcroJS%2FDoc_methods.htm%23XREF_71999_exportAsFDFStr
ici, il est indiqué pour cPath : « If the parameter is omitted, a dialog box is shown to let the user select the file. »
peut-être encore une histoire de privilèges Windows ???
:doute:bebarth
Maître des clésEdit2 : A chaque export de FDF, adobe me demande si je veux enregistrer le PDF à exporter, comment éviter l’apparition de ce message et ainsi enchaîner les actions ?
il faut décocher « Demander à l’utilisateur ».
@+
:bonjour:bebarth
Maître des clés:extra:
lorsque tu lances l’action, tu cliques sur la petite flèche à côté de Ajouter des fichiers…
soit tu ajoutes des fichiers, soit un dossier.
@+
:bonjour:bebarth
Maître des clésbebarth
Maître des clésBonjour,
effectivement, dans la définition du Safe path il est indiqué « A path cannot point to a system critical folder, for example a root, windows or system directory. A path is
also subject to other unspecified tests. »
peux-tu essayer à partir d’un répertoire sur ton bureau par exemple !
@+
:bonjour:bebarth
Maître des clésBonjour,
Alors là… personnellement je ne pense pas que cela soit possible, mais à mon avis, mieux vaut attendre la réponse de Merlin !
De quel logiciel disposez-vous : Adobe Reader ou Acrobat ? …et en plus j’imagine que vous ne voulez pas ouvrir chaque fichier !!!
@+
:doute:bebarth
Maître des clésbonsoir,
Es-tu certain que rien ne se passe ??? la première fois que j’ai lancé le script j’ai également eu l’impression que rien ne se passait mais le fichier fdf avait bien été créé.
N’étant pas un spécialiste Windows, je ne sais pas très bien la syntaxe pour le chemin d’un fichier. Ce que je te propose, c’est de la vérifier. Tu ouvres un fichier pdf que tu auras placé dans ton répertoire, puis tu lance ce script (depuis une action) :console.show();
console.clear();
console.println(« Le chemin est : « + this.path)La console va te donner le chemin exact de ce fichier… et tu pourras vérifier si la syntaxe C/temp/… est correcte.
@+
:bonjour:bebarth
Maître des clésbonjour,
je prends la discussion en cours et comme je n’ai pas tout suivi j’espère que les scripts ci-dessous conviendront… ici je suppose que le fichier fdf est enregistré dans le même répertoire que le fichier pdf d’origine.
je ne suis pas spécialiste en import/export :Smiley03: mais Merlin, je ne comprends pas pourquoi tu mets le nom du fichier en « array » ??? peut-être y a-t-il une explication ???Attention : les scripts assument qu’il n’y a qu’un seul point dans les noms de fichiers (devant le suffixe, comme il se doit).
…pour ma part, je modifie uniquement l’extension…
Pour l’exportation (testé sur mon mac et ça marche) :
// Récupération du chemin
var Chemin = this.path;
// modification de l’extension
var Pathfdf = Chemin.substring(0,Chemin.length-3) + « fdf »;
// exporte les données avec le même nom mais avec le suffixe FDF
this.exportAsFDF({cPath: Pathfdf});Pour l’importation (testé sur mon mac et ça marche) :
// Récupération du chemin
var Chemin = this.path;
// modification de l’extension
var Pathfdf = Chemin.substring(0,Chemin.length-3) + « fdf »;
// importe les données à partir du chemin d’accès complet
this.importAnFDF({cPath: Pathfdf});@+
:bonjour:bebarth
Maître des clésbonsoir,
voici un nouveau fichier. j’espère avoir placé les nouvelles cases au bon endroit…
@+
:bonjour:bebarth
Maître des clésbonsoir,
voici un nouveau fichier avec une quantité mini limitée à 0 et un champ qui calcule (QTE3 – QTE2)*QTE1 pour exemple.
la valeur d’un champ est this.getField(« NOM DU CHAMP »).value, ensuite on peut effectuer toutes les opérations et opérateurs javascript (par exemple : https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs
@+
:bonjour:bebarth
Maître des clésbonjour,
ci-joint un fichier avec les scripts sur les flèches. n’y a-t-il pas de quantité mini et maxi ???
@+
:bonjour:bebarth
Maître des clésbonjour,
si j’ai bien compris, c’est le grisé de la cellule en bas à droite !!! ce sera effectivement du bidouillage…
sur Acrobat 9, il faut aller dans le menu Outils/Modifications avancées/Retouche d’objet, puis sélectionner les différente parties grisées et les supprimer.
ci-joint sont des copies d’écran sur ios mac, mais je suppose que ce sont les mêmes menus sous windows.
@+
:bonjour:bebarth
Maître des clésbonjour,
comme on dit, j’arrive un peu après la bataille… mais voici ce que je propose : inverser les pages 2 et 3, imprimer les pages 1 à 2 puis remettre les pages 2 et 3 dans le bon ordre.
je ne sais pas si les pages sont réellement inversées ou si c’est juste une indexation des pages (Merlin ???) mais l’action s’exécute très rapidement même sur un document avec beaucoup de pages !
…plus l’alerte d’impression pour n’imprimer qu’une fois.
@+
:bonjour:if (impression == « »)
{
this.movePage(2,0);
this.print(false,0,1);
this.movePage(2,0);
var impression = 1;
}
else app.alert(« Les pages 1 et 3 ont déjà été imprimées. »,3);26 avril 2016 à 12:47 en réponse à : Afficher/masquer plusieurs champs texte selon choix ds menu déroulant #60571bebarth
Maître des clés…j’avais pas vu qu’avec le document original il y avait déjà l’erreur… je pensais que c’était uniquement dans celui que j’ai modifié vu que j’ai une variable « f » !!!
les champs res1 et res2 effectuent un calcul avec d’autres champs qui n’existent pas…
:Euuuh:26 avril 2016 à 12:42 en réponse à : Afficher/masquer plusieurs champs texte selon choix ds menu déroulant #60570bebarth
Maître des clésMerlin,
moi j’ai juste « TypeError: f is null » qui s’affiche 2 fois de suite, mais je ne comprend pas non plus pourquoi vu que f n’est ni vide ni nul…
si Alex passe par là, il pourra peut-être expliquer !
:bonjour:26 avril 2016 à 06:27 en réponse à : Afficher/masquer plusieurs champs texte selon choix ds menu déroulant #60568bebarth
Maître des clésbonjour,
je ne suis pas certain d’avoir complètement compris ce que vous désirez au final, mais vous trouverez dans le fichier joint ce que je vous propose en script de calcul.
@+
:bonjour:bebarth
Maître des clésbonjour,
…je ne pense pas (Merlin confirmera on infirmera) ! on peut changer la couleur générale de la surbrillance avec app.runtimeHighlightColor = color.red par exemple, sinon il faut désactiver la surbrillance et mettre une légère couleur de fond au champ comme indiqué ci-dessous, par exemple :
event.target.fillColor = event.value > 5 ? [« RGB »,255/255,195/255,0] : [« CMYK »,0.15,0,0,0]; pour un fond à 15% de cyan
@+
:bonjour:bebarth
Maître des clésbonjour,
…je ne pense pas (Merlin confirmera on infirmera) ! on peut changer la couleur générale de la surbrillance avec app.runtimeHighlightColor = color.red
sinon il faut désactiver la surbrillance et mettre une légère couleur de fond au champ comme indiqué ci-dessous, par exemple :
event.target.fillColor = event.value > 5 ? [« RGB »,255/255,195/255,0] : [« CMYK »,0.15,0,0,0]; pour un fond à 15% de cyan
@+
:bonjour:bebarth
Maître des clésmerci Alex pour ces précisions ! :bravo:
j’avais précisé « …à suite de votre script, mais il peut être placé autre part… » car j’avais bien compris qu’il fallait cliquer sur la case pour que le script s’effectue.
:bonjour:bebarth
Maître des clés…voici ce que j’ai fait à la suite de votre script, mais il peut être placé autre part…
merci à Alex pour son script dont je me suis grandement inspiré !
:bonjour:bebarth
Maître des cléssi vous désactivez la surbrillance (avec le bouton « Sélect. les champs existants » il faudrait mettre un léger fond bleu… au lieu de color.transparent mettre [« CMYK »,0.15,0,0,0] pour un fond à 15% de cyan.
:bonjour:bebarth
Maître des clésPour commencer, je renommerais tes champs avec des noms plus simples comme « TEMPO » et « Cliquez » (par exemple).
Dans le script du bouton « TEMPO », tu supprimes la ligne event.target.hidden=true et tu place this.getField(« Cliquez »).display=display.hidden; au début du script si tu veux enregistrer ton fichier avec l’autre bouton non visible !!!
Pour le bouton « Cliquez » il faut faire la même chose en changeant juste le nom du champ this.getField(« TEMPO »).display=display.hidden;
je n’ai pas regarder le reste des scripts !
@+
:bonjour:bebarth
Maître des clésbonjour,
… »supprimer », le bouton et il n’existe plus !!! Mais il y a plusieurs états pour « masquer » un bouton :
Field is visible on screen and in print display.visible
Field is hidden on screen and in print display.hidden
Field is visible on screen but does not print display.noPrint
Field is hidden on screen but prints display.noViewensuite il y a plusieurs raisonnement pour votre problème. soit vous en avec juste quelques un et vous pouvez les cibler, soit faire une recherche par types de boutons… etc.
si vous n’y arrivez pas, vous pouvez poster un fichier exemple.
@+
:bonjour:bebarth
Maître des clésbonjour,
voici ce que je proposerais en script de validation :
pour le champ Valeur1
event.value > 5 ? this.getField(« FdOR »).fillColor=[« RGB »,255/255,195/255,0] : this.getField(« FdOR »).fillColor=color.transparent;
pour le champ Valeur2
event.target.fillColor = event.value > 5 ? [« RGB »,255/255,195/255,0] : color.transparent;
j’espère que vous comprenez un peu le raisonnement… je joint votre fichier avec les scripts.
@+
:bonjour:bebarth
Maître des clésbonjour,
je vous conseille d’aller voir cette article :
http://abracadabrapdf.net/forum/index.php/topic,2868.msg16200.html#msg16200
où alex donne une solution qui répondra certainement à votre attente.
@+
:bonjour:bebarth
Maître des clés…comme hydro parlait de « event.target.hidden=true » j’ai supposé qu’il voulait masquer les boutons, mais ce n’est qu’une supposition…
:doute:bebarth
Maître des clésbonjour,
quel(s) genre(s) de bouton(s) à effacer ???
pour les « »checkbox », essayez ce script :var count = 0;
for ( var i=0; ivar fname = this.getNthFieldName(i);
if (this.getField(fname).type == « checkbox » ) count++; }
this.getField(fname).display = display.hidden);@+
:bonjour:bebarth
Maître des clésbonjour Merlin,
j’ai utilisé la partie de ton script pour créer un nouveau document et dupliquer les pages, que j’ai intégré au script que j’avais écris.
ton script coupe les planches en 2 alors que alors que mon problème était de rogner au niveau des hirondelles.
je joins un fichier action avec le script final si cela intéresse quelqu’un.
encore merci & @+.
:geek:bebarth
Maître des clésplacé en action, ton script fonctionne très bien.
il faut supprimer les lignes « app.beginPriv(); » et « app.endPriv(); »
je pense que si l’on modifie le script de document, ça doit fonctionner également…
@+
:extra:bebarth
Maître des clésj’ai testé le début du script avec une action et ça fonctionne très bien de créer un nouveau fichier et dupliquer chaque page.
je pense qu’en combinant les 2 scripts je devrais m’en sortir.
je te tiens au courant.
merci
:extra:bebarth
Maître des clésBonjour Merlin et merci pour ta réponse.
j’ai placé le fichier dans le dossier javascript, mais cela ne fonctionne pas. j’ai une erreur interne lorsque je lance le script.
j’ai regardé vite fait mais pour l’instant je n’ai pas vu d’où ça peut venir… par contre, le script ressemble à ce que j’ai écris. je regarderai ça plus précisément demain…
j’ai par contre une question que je me pose ! dans mons script je redéfini la taille de la Media Box avec :
this.setPageBoxes({
cBox: « Media »,
rBox: [0, height, largeur, 0],
});
je pensais que toutes les données en dehors de cette zone serait perdues afin de diminuer la taille du fichier final, mais ça n’a pas l’air d’être le cas. la taille du fichier ne diminue pas.
sais-tu quelque chose à ce sujet ?
merci.
:bonjour:bebarth
Maître des clés:bravo: :bravo: , pareil…
20 novembre 2015 à 18:16 en réponse à : Importer & redimensionner automatiquement une image dans un champs de formulaire #59999bebarth
Maître des clésbonjour,
il faut régler la mise à l’échelle sur « Toujours » après avoir appuyer sur le bouton « Avancées… ».
@+
:bonjour:bebarth
Maître des clésMerci Alex, je vais étudier ça !
@+
:priere:bebarth
Maître des clésBonjour,
pour quel OS et quelle version de Word ?
si vous êtes sous Windows (ce que j’ai l’impression…), avez-vous réglé le format de page pdf dans les options d’impression de l’imprimante pdf ???
votre format 22 x 28 c’est le format US letter (8.5 x 11 pouces -> 215,9 x 279,4) ???
@+
:bonjour:bebarth
Maître des clés…et donc if(!event.willCommit) signifie : si l’événement n’est pas une frappe (clavier)…
correct ?
:Euuuh:bebarth
Maître des clésMerci Merlin !
je savais pour les opérateurs de comparaison mais ne comprenais pas avec « event ».
@+
:geek:bebarth
Maître des clésre-bonjour,
j’ai un peu regardé les exemples dans le js_api_reference, mais ne comprends pas la différence entre
if(!event.willCommit)
et
if(event.willCommit)-> le point d’exclamation.
:Euuuh:
bebarth
Maître des clésbonjour,
je voudrais juste signaler à Alex que dans son fichier exemple, la console n’indique pas le choix sélectionné, mais le précédent…
je suis bien évidemment incapable comme ça de modifier le script !
@+
:bonjour:bebarth
Maître des clés:extra:
je vais essayer de comprendre l’événement…
:priere:bebarth
Maître des clésMerci pour l’info !
:bonjour:bebarth
Maître des clés:bravo:
vous êtes trop rapides tous les deux !!!
je joints quand même ce que j’ai fait, pour commentaires éventuels… (je sais que j’ai du mal avec les « event »).
merci.
:bonjour:9 novembre 2015 à 14:18 en réponse à : Remplissage champ par autre champ lors de l’appui sur bouton #59956bebarth
Maître des clésbonjour,
il suffit d’écrire :
this.getField(« Champ2 »).value = this.getField(« Champ1 »).value
c’est tout !!!
…et si vous affichez la console, vous verrez que « this.getfield » n’est pas une fonction contrairement à « this.getField »…
@+
:doute:bebarth
Maître des clésBonjour,
… C’est automatique lorsque l’on créée une table des matières dans Word et qu’on convertit en PDF avec Word.
Générer les signets est automatique si on le demande dans les préférence et uniquement sur PC, par contre on ne règle pas l’ouverture du document en mode signets sous Word.
@+
:bonjour:6 novembre 2015 à 07:38 en réponse à : Verrouillage de plusieurs champs sauf certains suite à action sur bouton #59902bebarth
Maître des clésBonjour,
si l’on doit garder le nom des champs pour l’extraction des données, je présume qu’on peut modifier le nom des boutons validation/dévalidation ! on a plus qu’à s’occuper des champs dont le nom commence par « Appréciation » (pourquoi s’occuper des autre champs ???).
2 solutions : si l’on a peu de champs on peut les traiter un par un (ici 4 champs), sinon on fait une recherche uniquement sur les champs dont le nom commence par « Appréciation ».
for (var i = 0; i < this.numFields; i++) {
var f = this.getNthFieldName(i);
if (f.substring(0,12) == « Appréciation »)
{this.getField(f).readonly = true;}
}
Pour la dévalidation, on peut traiter tous les champs.
for (var i = 0; i < this.numFields; i++) {
var f = this.getNthFieldName(i);
this.getField(f).readonly = false;}Correct ???
@+
:bonjour:5 novembre 2015 à 15:40 en réponse à : Verrouillage de plusieurs champs sauf certains suite à action sur bouton #59900bebarth
Maître des clésje regarde !
…et sinon, le fichier joint correspondait-il ?
@+
:bonjour:5 novembre 2015 à 15:15 en réponse à : Verrouillage de plusieurs champs sauf certains suite à action sur bouton #59898bebarth
Maître des clés…si j’ai bien compris, il faut que le bouton verrouille uniquement les champs « Appréciation » (en amont) et pas les autres (en aval).
si c’est le cas, une seule ligne suffit en utilisant la Convention de dénomination des champs de formulaire :
this.getField(« Appréciation »).readonly = true;ai-je bien compris ?
@+
:bonjour:5 novembre 2015 à 13:43 en réponse à : Verrouillage de plusieurs champs sauf certains suite à action sur bouton #59889bebarth
Maître des clésbonjour,
avez-vous essayé avec :
…
if ((f.name != « Notification ») || (f.name != « Visa »))
…
sinon, est-il possible d’avoir un fichier d’essai pour voir à quoi cela ressemble ?
@+
:bonjour:bebarth
Maître des clésMerlin,
ton fichier n’est plus disponible, peux-tu le re-placer, il m’intéresse !!!
merci
:bonjour:bebarth
Maître des clésMerci teacher,
…en fait, je m’étais trompé je voulais écrire 53ème !!! :geek: mai j’aurais quand même fait une faute…
…et si c’est pas en exposant, c’est une faute aussi ?
Depuis des années j’utilise ProLexis comme correcteur d’orthographe et de typographie et il ne m’a jamais signalé cette erreur !!!Impossible de télécharger le fichier l’Alex… il a été retiré ???
@+
:bonjour:bebarth
Maître des clésIl y a une 53eme semaine dans une année si elle comporte au moins 4 jours : lundi -> jeudi.
😉bebarth
Maître des clés👌
…Il calcule de 1 à 53 ou de 1 à 52 si on active la ligne:
//if(weeksNum>52){weeksNum=1;}
…est-ce que cela signifie qu’il faut modifier manuellement selon l’année ???
@+
:Euuuh:bebarth
Maître des clésoui, et on peut ouvrir la fenêtre « rechercher » en javascript, mais est-ce que « par hasard » on pourrait lancer rechercher/remplacer ????
:doute:bebarth
Maître des clésbonjour,
je me permets de remonter ce post, car je suis toujours en recherche pour rechercher/remplacer du texte en javacript.
le rechercher ne me pose pas de problème, mais c’est le remplacer que je ne trouve pas aussi, si quelqu’un à une réponse à me donner je suis preneur (même si la réponse est : c’est impossible…).
merci.
:doute:bebarth
Maître des clésBonjour,
Personnellement je ne sais pas faire, et j’ai un doute que cela puisse se faire directement avec Acrobat.
J’espère que quelqu’un de plus averti que moi pourra répondre car ça m’intéresse de savoir !
Désolé, je passe mon tour…
:doute:16 octobre 2015 à 16:21 en réponse à : Afficher un bouton en fonction des choix du menu déroulant #59804bebarth
Maître des clésvoici les différentes valeurs pour la propriété « display ».
Field is visible on screen and in print display.visible
Field is hidden on screen and in print display.hidden
Field is visible on screen but does not print display.noPrint
Field is hidden on screen but prints display.noView
@+
:bonjour:16 octobre 2015 à 13:06 en réponse à : Afficher un bouton en fonction des choix du menu déroulant #59800bebarth
Maître des clésBonjour,
il y a plusieurs solutions pour traiter le problème. Ici on regarde la position du menu déroulant, mais pourquoi un menu déroulant juste pour 2 réponses possibles ? Des cases à cochées ne seraient-elles pas plus judicieuses ??? De même pourquoi un champ validation ? les champs « Conforme » ou « Non-conforme » peuvent apparaître/disparaitre selon si tous les autres champs sont conformes ou non ! mais peut-être y a-t-il une raison !!!!
@+
:geek:bebarth
Maître des clésBonjour,
je ne connais personnellement pas Adobe LiveCycle designer 8, mais s’il s’agit de donner des valeurs par défaut à des champs (texte, menu déroulant…), c’est possible avec Acrobat Pro.
Après, il faut voir ce que vous voulez exactement !
@+
:bonjour:bebarth
Maître des clés…ne faire apparaitre le champ texte qui si la case est cochée…
c’est effectivement la meilleure solution à mon avis !
:geek:bebarth
Maître des clésbonjour Merlin,
il est vrai qu’avec ton script, la case est cochée directement lorsque le champ est activé. Par contre elle reste cochée même si tu ne rentre pas de texte !
@+
:bonjour:bebarth
Maître des clésbonjour,
var txt=this.getField(« Texte »).value;
if (txt != » ») {this.getField(« case »).checkThisBox(0,true);}
else {this.getField(« case »).checkThisBox(0,false);}
@+
:geek:bebarth
Maître des clésthis.getField(« cc1 »).checkThisBox(0,true);
this.getField(« cc2 »).checkThisBox(0,true);essaye mieux comme ça, ça marche ! la syntaxe n’est pas la même que IsBoxChecked…
@+
:geek:bebarth
Maître des clésvoilà qui t’expliquera mieux que je ne pourrais le faire !
https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Expressions_et_Op%C3%A9rateurs
@+
:geek:12 octobre 2015 à 17:42 en réponse à : Récupérer 2 informations d’un champ de formulaire pour l’export #59717bebarth
Maître des clés…
var f = this.getField(« nbr »); //liste déroulante
var pos = f.currentValueIndices; //position sélectionnée
var ex = f.getItemAt(pos,false); //texte de la liste à la position (pos)
event.value=parseFloat(ex); //retourne la valeur de la chaine (ex)
@+
:geek:bebarth
Maître des clésbonjour,
voici comment ça devrait se présenter :
if (this.getField(« cc1 »).isBoxChecked(0) & this.getField(« cc2 »).isBoxChecked(0))
{…script les 2 cases cochées… »}
else
{
if (this.getField(« caseacocher1 »).isBoxChecked(0))
{…script case 1 cochée…}
else
{
if (this.getField(« caseacocher2 »).isBoxChecked(0))
{…script case 2 cochée…}
else
{} // rien -> aucune case cochée
}
}il n’y a pas de contraire à .isBoxChecked(0), soit = true si la case est cochée sinon = false.
@+
:bonjour:12 octobre 2015 à 12:12 en réponse à : Récupérer 2 informations d’un champ de formulaire pour l’export #59715bebarth
Maître des clésbonjour,
c’est presque pareil… on peut récupérer soit tout le texte de la liste, soit le nombre…
j’ai compris, cette fois-ci ?
:geek:bebarth
Maître des clésc’est l’exemple dont je me suis inspiré, mais il faut mettre quoi pour [/font]if ( nButton == 2 ) ??? sachant que je ne veux pas fermer mon document :geek: mais stopper le script ?
pour l’instant il continue jusqu’à rencontrer une erreur…
:Euuuh:bebarth
Maître des clés…en attendant, j’ai mis la fenêtre « Response » dans une boucle :
while (valeur<0 | valeur>valeurmaxi | isNaN(valeur))
…valeur est parseFloat() de la réponse, évidemment (!!!)
et ça fonctionne…
s’il y a une réponse sur la limitation des touches pour ces fenêtres, je suis quand même preneur…
@+
:bonjour:bebarth
Maître des clés…non, moi ce que je veux dire c’est d’interrompre le script lorsqu’on appuie sur le bouton « Annuler » de la fenêtre « Response » !
@+
:Ooops:bebarth
Maître des clésmerci Merlin,
j’avais également regardé dans la doc sans rien trouvé, mais je me disais que peut-être y a-t-il d’autres docs pour des personnes plus averties…
il faut donc tourner la questions pour avoir une réponse OUI par défaut !juste pour info, la coordonnée 0,0 d’une page se trouve bien en bas à gauche ?
@+
:bonjour:bebarth
Maître des clésBonjour,
Effectivement, du moment que ça résout le problème !Pour le coup c’est pareil, une case-à-cocher ou un bouton-radio n’a de valeur (valeur d’exportation) que s’il est coché, sinon il est « Off ».
…mais pour moi ce n’est quand même pas tout à fait la même chose : une case à cocher peut ou ne pas être obligatoire, sans être ou en étant cochée. Dans ce problème soumis, on n’utilise apparemment pas la valeur d’exportation, on vérifie juste si la case en cochée, je me trompe ??? D’ailleurs, je ne comprend pas très bien la propriété « Obligatoire » pour une case à cocher sans valeur d’exportation : soit elle est cochée, soit elle ne l’est pas !
@+:doute:
bebarth
Maître des clés…n’y a-t-il pas confusion entre propriété « obligatoire » qui nécessite une valeur pour le champ et « case obligatoirement cochée » ???
:doute:
bebarth
Maître des clésvoici 2 scripts, tels que j’ai compris les problèmes…
@+
:bonjour:bebarth
Maître des clésc’est pas tout à fait le même problème…
:bonjour:6 octobre 2015 à 13:39 en réponse à : Récupérer 2 informations d’un champ de formulaire pour l’export #59713bebarth
Maître des clésdans le script joint, le champ total est le produit de la valeur « Elément » par la valeur d’exportation.
par contre, dans cette exemple, « Elément » est un nombre et pas du texte.
@+
:bonjour:6 octobre 2015 à 11:54 en réponse à : Récupérer 2 informations d’un champ de formulaire pour l’export #59711bebarth
Maître des clésbonjour,
personnellement je ne comprend pas très bien !
que choisit l’utilisateur ?? un nombre d’exemplaires dans un menu déroulant, avec un seul prix unitaire ?
@+
:bonjour:bebarth
Maître des clésBonjour,
voici un script pour attribuer la priorité obligatoire aux 4 cases suivantes, lorsque la première est cochée.
@+
:bonjour:bebarth
Maître des clés1 – d’après mes première recherches, je crains un peu pour le 1er type…
2 – je pense pouvoir me débrouiller pour le 2ème type…
3 – pour le 3ème type, il me faudra rencontrer des petits hommes verts…
@+
:doute:bebarth
Maître des clés…et si je ne peu imposer l’installation d’Adobe Reader, je ne peu imposer non plus l’installation d’un plugin.
donc utilisation très limitée avec un navigateur, correct ?
@+
:bonjour:bebarth
Maître des clés…moi je parle du 1 !
@+
:bonjour:bebarth
Maître des clésbonjour,
sachant que :…ouvrir des PDF dans un navigateur web est toujours une mauvaise idée parce-que c’est source d’ennuis, d’erreurs et de limitations.
peut-on connaître ces limitations ???
j’essaye d’ouvrir un fichier pdf dans un navigateur à partir d’un autre pdf déjà ouvert dans ce navigateur et cela ne fonctionne apparemment pas !
y a-t-il possibilité ? …sachant qu’il m’est impossible d’imposer l’obligation d’installer Adobe Reader !!!
merci
:geek:bebarth
Maître des clést’as raison, c’est le roi Merlin !
et nous on bricole à côté…
:geek:bebarth
Maître des cléstrop fort Merlin !
tu demandes ça, et il te donne ça++… et à 1h du mat !!!
:bravo:bebarth
Maître des clés…j’ai oublié de signaler que j’ai passé le bonton B en « case à cocher ».
de plus, j’ai copié/collé, mais
var bb = this.getField(« CheckboxA »).value;
une seule fois au début suffit…
@+
:bonjour:bebarth
Maître des clésbonjour,
voici un script pour répondre à votre demande :
var bb = this.getField(« CheckboxA »).value;
if (bb == 1 & this.getField(« BoutonB »).isBoxChecked(0))
{this.getField(« PTAchMES 2 »).value = this.getField(« ChampA »).value}
else
{
var bb = this.getField(« CheckboxA »).value;
if (bb == 2 & this.getField(« BoutonB »).isBoxChecked(0))
{this.getField(« PTAchMES 2 »).value = this.getField(« ChampB »).value}
else
{
var bb = this.getField(« CheckboxA »).value;
if (bb == 3 & this.getField(« BoutonB »).isBoxChecked(0))
{this.getField(« PTAchMES 2 »).value = this.getField(« ChampC »).value}
else
{
this.getField(« PTAchMES 2 »).value = 0
}}}
@+
:bonjour:bebarth
Maître des clésCette solution fonctionne à merveille…
??? la, c’est moi qui suis perdu !!!
:Euuuh:bebarth
Maître des clésbonjour,
…et merci à Alex pour sa contribution. Il est (à mon avis) LA référence javascript sur le forum !
Le calcul du total est effectivement regroupé en une seule formule sur le champ TOTAL, mais je pense qu’elle ne correspond pas pour résoudre le problème donné.
Dans l’exemple joint, le calcul de l’arrondi avec « Math.round » donne 2.1 pour une valeur initiale de 2.0976 alors que selon le problème on devrait avoir 2.09 !!
j’avais moi-même essayé avec « Math.floor » sans m’en sortir et sans comprendre… c’est pourquoi j’avais opté pour « parseInt » après avoir multiplié la valeur par 100. mais je ne comprend pas d’où viens l’erreur !!!!
si tu a une idée pour ce problème….
merci.
:bonjour:bebarth
Maître des clésbonjour,
Je crois que je vais vous décevoir… votre exemple correspond à peu près au dernier script que j’ai donné hier, c’est à dire que vous ne vous préoccupez plus d’arrondir la valeur du premier champ. Vous supposez (certainement à juste titre) que si cette valeur est entrée manuellement elle n’a que 2 décimales. Essayez exactement votre méthode avec ce premier champ et vous verrez… toujours la même chose avec 9,12 -> 9,11
this.getField(« MontantTTC »).value = this.getField(« RGT1 »).value+(parseInt(this.getField(« RET1 »).value*100)+parseInt(this.getField(« RETC1 »).value*100))/100;… Donc il faut le multiplier par 100, en faire un nombre entier, puis le diviser par 100…
c’est ce qui est fait dans le script, sauf que dans votre exemple vous divisez chaque nombre par 100 alors que moi je divise le total.
j’ai essayez comme il es conseillé d’indiquer la base « parseInt(string,10) » mais pas d’amélioration. j’ai même essayez d’autre méthodes, toujours avec le même résultat !!!
:mur: y a quelque chose que je ne comprend pas…@+
:Euuuh:bebarth
Maître des clés:mur:
ce que je ne comprend pas, c’est pourquoi le parseInt du champ « montant A » n’est pas toujours correct alors qu’il l’est pour les autre champs !!! 9,12 -> 9,11 alors que 9,11 -> 9,11 ou 9,13 -> 9,13…
si personne (!!!) n’a de solution et que le montant A à toujours 2 décimales, ce que je te est de garder cette valeur dans le total, sans passer par parseIntthis.getField(« MontantTTC »).value = this.getField(« RGT1 »).value+ (parseInt(this.getField(« RET1 »).value*100)+ parseInt(this.getField(« RETC1 »).value*100))/100;
sinon j’aimerai bien savoir le pourquoi !!!
@+
:doute:bebarth
Maître des clés…c’était pas bien écris !!!
essayez comme ça en rajoutant vos autres champs :
this.getField(« MontantTTC »).value = (parseInt(this.getField(« RGT1 »).value*100)+parseInt(this.getField(« RET1 »).value*100)+parseInt(this.getField(« RETC1 »).value*100))/100;pour chaque nouveau champ, rajoutez :
+parseInt(this.getField(« NOMDUCHAMP »).value*100)
entre les 2 dernière parenthèses.
@+
:bonjour:bebarth
Maître des clés…et bien, il suffit juste de multiplier chaque nombre par 100 avant d’appliquer « pareInt », puis de re-diviser par 100 (soit chaque nombre, soit le total) :
this.getField(« TOTAL »).value = (parseInt(this.getField(« NOMBRE1 »).value*100)+ parseInt(this.getField(« NOMBRE2 »).value*100)+…)/100;
il faudra aussi penser à régler le format d’affichage à 2 décimales !!!
@+
:bonjour:bebarth
Maître des clés…maintenant, on peut « simplifier » en supprimant les champs « ENTIER ». On calcul directement le TOTAL à partir des champs « NOMBRE ».
this.getField(« TOTAL »).value = parseInt(this.getField(« NOMBRE1 »).value)+ parseInt(this.getField(« NOMBRE2 »).value)+…;
@+
:bonjour:bebarth
Maître des clésje connaissais pas, et je le note !!!
:bravo:bebarth
Maître des clésbonjour,
j’ai laissé les décimales dans les champs « entiers » pour montrer qu’elles sont bien à 0.
@+
:bonjour: -
AuteurRéponses