Acrobat et Java multiplication d'un champ avec un nombre
22 réponses
JJacques
Bonjour,
Tout d'abord c'est la première fois que je touche à Java.
En effet j'en ai besoin pour calculer une valeur dans un formulaire PDF
d'acrobat.
Je veux juste multiplier la valeur indiquée d'un un champs( un nombre) par
un un autre nombre définit (par exemple 5).
Il me faut donc traduire celà en java :
champ1=champ0 x 5
voilà c tout.
Voilà mon seul et unique besoin.
Merci pour votre aide
De rien! Vous pouvez stocker les multipliants dans un tableau. Attention, un tableau commence à 0, pas à 1 :
var mults = new Array(5,2,9,8,12,45,36,102,1,47);
var mult; for (i=1; i<11; i++){ mult = mults[i-1]; this.getField("R" + i).value = this.getField("c" + i).value * mult; }
Super, bien vu c'est top. J'ai essaié d'inserer une autre ligne pour changer le multipliant, car au lieu de faire *5, j'aurais aimé dans le même script inscrire les différentes valeurs. Par exemple: r1Á*5 (ok, ça ca marche) r2Â*2 r3Ã*9 etc...
Je cherche donc a faire un truc du genre i=1 to <11 mais qu'il n'incremente pas ma multiplication par 1 mais par le nombre suivant correspondant ) ma série, par ex: (5,2,9,8,12,45,36,102,1,47...) Je dois donc stoker ces valeurs qq part non ?.
Merci en tout cas, ça me plait bcp.
JJacques
"Alex" a écrit dans le message de news: 4333afb3$0$19170$
Si effectivement vos champs sont nommés de cette façon, vous n'avez même pas besoin d'un tableau :
Si vos noms sont plus aléatoires, vous pouvez définir des tableau de cette façon : var champsc = new Array("c1", "c2", "champc2", "champc3"); var champsR = new Array("R1", "R2", "R3", "R4");
var i=0; for (i=0; i<champsc.length, i++){ this.getField(champsR[i]).value = this.getField(champsc[i]).value * 5; }
Pour cette méthode, assurez vous que que les deux tableaux aient la même taille.
Bon, maintenant que j'ai mis les pied dans "javascript" je vais essayer de continuer.
mon pdf est donc rempli de champs de c1 à c10 et de R1 à R10 J'ai au total 10 scripts pour calculer la valeur de mes 10 champs R1 à R10 Existe t il au autre moyen, genre tableau pour stocker les valeurs à l'infini ?
Merci JJacques
De rien! Vous pouvez stocker les multipliants dans un tableau.
Attention, un tableau commence à 0, pas à 1 :
var mults = new Array(5,2,9,8,12,45,36,102,1,47);
var mult;
for (i=1; i<11; i++){
mult = mults[i-1];
this.getField("R" + i).value = this.getField("c" + i).value * mult;
}
Super, bien vu c'est top.
J'ai essaié d'inserer une autre ligne pour changer le multipliant, car au
lieu de faire *5, j'aurais aimé dans le même script inscrire les différentes
valeurs.
Par exemple:
r1Á*5 (ok, ça ca marche)
r2Â*2
r3Ã*9 etc...
Je cherche donc a faire un truc du genre i=1 to <11 mais qu'il n'incremente
pas ma multiplication par 1 mais par le nombre suivant correspondant ) ma
série, par ex: (5,2,9,8,12,45,36,102,1,47...)
Je dois donc stoker ces valeurs qq part non ?.
Merci en tout cas, ça me plait bcp.
JJacques
"Alex" <aleyandre@gmail.com> a écrit dans le message de news:
4333afb3$0$19170$626a14ce@news.free.fr...
Si effectivement vos champs sont nommés de cette façon, vous n'avez même
pas besoin d'un tableau :
Si vos noms sont plus aléatoires, vous pouvez définir des tableau de cette
façon :
var champsc = new Array("c1", "c2", "champc2", "champc3");
var champsR = new Array("R1", "R2", "R3", "R4");
var i=0;
for (i=0; i<champsc.length, i++){
this.getField(champsR[i]).value = this.getField(champsc[i]).value * 5;
}
Pour cette méthode, assurez vous que que les deux tableaux aient la même
taille.
Bon, maintenant que j'ai mis les pied dans "javascript" je vais essayer
de continuer.
mon pdf est donc rempli de champs de c1 à c10 et de R1 à R10
J'ai au total 10 scripts pour calculer la valeur de mes 10 champs R1 à
R10
Existe t il au autre moyen, genre tableau pour stocker les valeurs à
l'infini ?
De rien! Vous pouvez stocker les multipliants dans un tableau. Attention, un tableau commence à 0, pas à 1 :
var mults = new Array(5,2,9,8,12,45,36,102,1,47);
var mult; for (i=1; i<11; i++){ mult = mults[i-1]; this.getField("R" + i).value = this.getField("c" + i).value * mult; }
Super, bien vu c'est top. J'ai essaié d'inserer une autre ligne pour changer le multipliant, car au lieu de faire *5, j'aurais aimé dans le même script inscrire les différentes valeurs. Par exemple: r1Á*5 (ok, ça ca marche) r2Â*2 r3Ã*9 etc...
Je cherche donc a faire un truc du genre i=1 to <11 mais qu'il n'incremente pas ma multiplication par 1 mais par le nombre suivant correspondant ) ma série, par ex: (5,2,9,8,12,45,36,102,1,47...) Je dois donc stoker ces valeurs qq part non ?.
Merci en tout cas, ça me plait bcp.
JJacques
"Alex" a écrit dans le message de news: 4333afb3$0$19170$
Si effectivement vos champs sont nommés de cette façon, vous n'avez même pas besoin d'un tableau :
Si vos noms sont plus aléatoires, vous pouvez définir des tableau de cette façon : var champsc = new Array("c1", "c2", "champc2", "champc3"); var champsR = new Array("R1", "R2", "R3", "R4");
var i=0; for (i=0; i<champsc.length, i++){ this.getField(champsR[i]).value = this.getField(champsc[i]).value * 5; }
Pour cette méthode, assurez vous que que les deux tableaux aient la même taille.
Bon, maintenant que j'ai mis les pied dans "javascript" je vais essayer de continuer.
mon pdf est donc rempli de champs de c1 à c10 et de R1 à R10 J'ai au total 10 scripts pour calculer la valeur de mes 10 champs R1 à R10 Existe t il au autre moyen, genre tableau pour stocker les valeurs à l'infini ?
Merci JJacques
JJacques
Merci, voilà ce que celà donne. Mais le résultat n'est pas bon, il ne me donne pas un nombre mais du texte "NaN"
var mult; var mult=new Array(5,350,120,13,2,13,2,5,350,1500,1); for(i=1;i<12;i++){ this.getField("r"+i).value=this.getField("c"+i).value*mult; }
Merci, voilà ce que celà donne.
Mais le résultat n'est pas bon, il ne me donne pas un nombre mais du texte
"NaN"
var mult;
var mult=new Array(5,350,120,13,2,13,2,5,350,1500,1);
for(i=1;i<12;i++){
this.getField("r"+i).value=this.getField("c"+i).value*mult;
}
Milles excuses, j'avais oublié une ligne dnas le script. Ca marche donc Génial Merci mille fois
JJacques
"JJacques" a écrit dans le message de news: 4333c9af$0$1748$
Merci, voilà ce que celà donne. Mais le résultat n'est pas bon, il ne me donne pas un nombre mais du texte "NaN"
var mult; var mult=new Array(5,350,120,13,2,13,2,5,350,1500,1); for(i=1;i<12;i++){ this.getField("r"+i).value=this.getField("c"+i).value*mult; }
JJacques
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat, mais il ne rafraichissait pas toujours. J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous les résultats Rn).
var ht; ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"));
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat,
mais il ne rafraichissait pas toujours.
J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous
les résultats Rn).
var ht;
ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11"));
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat, mais il ne rafraichissait pas toujours. J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous les résultats Rn).
var ht; ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"));
Alex
Je ne connais pas Acrobat, mais une petite boucle peut faire l'affaire :
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11");
var ht = 0; for (i=0; i<r.length; i++){ ht += r[i]; }
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat, mais il ne rafraichissait pas toujours. J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous les résultats Rn).
var ht; ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"));
Je ne connais pas Acrobat, mais une petite boucle peut faire l'affaire :
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
var ht = 0;
for (i=0; i<r.length; i++){
ht += r[i];
}
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat,
mais il ne rafraichissait pas toujours.
J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous
les résultats Rn).
var ht;
ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11"));
Je ne connais pas Acrobat, mais une petite boucle peut faire l'affaire :
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11");
var ht = 0; for (i=0; i<r.length; i++){ ht += r[i]; }
our additionner le tout j'utilisais une fonction "preprogrammé" d'acrobat, mais il ne rafraichissait pas toujours. J'ai donc voulu remplacer par ceci mais celà ne fonctionne pas(somme de tous les résultats Rn).
var ht; ht=("SUM", new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"));
JJacques
Merci, mais celà ne donne rien. Je vais donc essayer de comprendre ce que tu fais.
*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça ?******
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"); ***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon
formulaire)*****
var ht = 0; ***** Tu fais une boucle de 0 au nombre de variables totales dans le
tableau, c'est ça ?****
for (i=0; i<r.length; i++){ ***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il
pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais celà ne marche pas non plus.****
ht += r[i]; }
Merci bcp pour ta patience
Merci, mais celà ne donne rien. Je vais donc essayer de comprendre ce que tu
fais.
*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça
?******
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon
formulaire)*****
var ht = 0;
***** Tu fais une boucle de 0 au nombre de variables totales dans le
tableau, c'est ça ?****
for (i=0; i<r.length; i++){
***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il
pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais
celà ne marche pas non plus.****
Merci, mais celà ne donne rien. Je vais donc essayer de comprendre ce que tu fais.
*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça ?******
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"); ***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon
formulaire)*****
var ht = 0; ***** Tu fais une boucle de 0 au nombre de variables totales dans le
tableau, c'est ça ?****
for (i=0; i<r.length; i++){ ***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il
pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais celà ne marche pas non plus.****
ht += r[i]; }
Merci bcp pour ta patience
Alex
Réponse dans le texte...
*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"); c'est ça - je définis un tableau contenant les noms des variables.
***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon formulaire)*****
var ht = 0; exact
***** Tu fais une boucle de 0 au nombre de variables totales dans le tableau, c'est ça ?****
for (i=0; i<r.length; i++){ voilà
***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais celà ne marche pas non plus.****
ht += r[i]; c'est normal, c'est faux! J'aurais du écrire :
ht += his.getField(r[i]).value;
En effet r[i] contient les noms des variables (r1, r2, r3, pas les valeurs. L'avantage de stocker les noms dans un tableau est que vous pouvez nommer vos champs comme vous le souhaitez. D'autre part, si un jour vous décidez de supprimer le champ r5 de votre formulaire, il vous suffira d'enlever son nom du tableau et le le calcul fonctionnera.
}
Merci bcp pour ta patience
De rien, désolé pour l'erreur et bon courage.
Réponse dans le texte...
*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9",
"r10", "r11");
c'est ça - je définis un tableau contenant les noms des variables.
***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon
formulaire)*****
var ht = 0;
exact
***** Tu fais une boucle de 0 au nombre de variables totales dans le
tableau, c'est ça ?****
for (i=0; i<r.length; i++){
voilà
***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il
pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais
celà ne marche pas non plus.****
ht += r[i];
c'est normal, c'est faux! J'aurais du écrire :
ht += his.getField(r[i]).value;
En effet r[i] contient les noms des variables (r1, r2, r3, pas les valeurs.
L'avantage de stocker les noms dans un tableau est que vous pouvez
nommer vos champs comme vous le souhaitez. D'autre part, si un jour vous
décidez de supprimer le champ r5 de votre formulaire, il vous suffira
d'enlever son nom du tableau et le le calcul fonctionnera.
*****Ici tu définis un ensemble de variables sous forme de tableau c'est ça
var r = new Array("r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"); c'est ça - je définis un tableau contenant les noms des variables.
***** Ici tu remets la valeur ht à 0 (ht est un champs existant dans mon formulaire)*****
var ht = 0; exact
***** Tu fais une boucle de 0 au nombre de variables totales dans le tableau, c'est ça ?****
for (i=0; i<r.length; i++){ voilà
***tu additionne la valeur de chaque variable pour ht, mais ne faudrait il pas utiliser une formule du genre ht=("r"+i).value ???? J'ai essayé mais celà ne marche pas non plus.****
ht += r[i]; c'est normal, c'est faux! J'aurais du écrire :
ht += his.getField(r[i]).value;
En effet r[i] contient les noms des variables (r1, r2, r3, pas les valeurs. L'avantage de stocker les noms dans un tableau est que vous pouvez nommer vos champs comme vous le souhaitez. D'autre part, si un jour vous décidez de supprimer le champ r5 de votre formulaire, il vous suffira d'enlever son nom du tableau et le le calcul fonctionnera.