Calcul via une checkbox cochée ou non  (Lu 246 fois) Partager ce sujet Imprimer

1 B


Ekinor  21 décembre 2020 : 17:14

Hello,

Me revoilà pour une nouvelle question... Mouhahah.
Plus sérieusement je suis maintenant bloqué avec un calcul qui doit se faire en fonction de checkboxs cochées ou non. Je m'explique.
J'ai dans mon fichier (lien du fichier plus bas) une zone de saisie nommée "Mod ATM" (première case à côté de l'encadré rouge "MAGIQUE"). Cette case doit être incrémentée de 1 en fonction de chaque checkbox se trouvant en dessous de l'encadré "MAGIQUE".
Exemple:
Si 1 des checkboxs ("ATM niv3" à "ATM niv9") est cochée la case "Mod ATM" doit s'incrémenter de 1.
Si 2 des checkboxs ("ATM niv3" à "ATM niv9") sont cochées la case "Mod ATM" doit s'incrémenter de 2.
Si 3, "Mod ATM" de 3.
etc.

Je veux aussi pouvoir faire cela avec les checkboxs des deux encadrés du dessus qui comportent déjà des calculs dedans.
Merci d'avance du temps que vous passerez sur mon problème.
Salutations
Ekinor

Lien du document pdf:
https://framadrop.org/lufi/r/j_caxxZ5qe#ZidusbI52oH5DeOn7Znl1Sft7l5yUM4v3vvHp08aBOA=

IP archivée


bebarth  21 décembre 2020 : 20:52

bonjour,
En script de calcul du champ "Mod ATM" :
var plus=0;
for (var i=3; i<=9; i+=2) {
    if (this.getField("ATM niv"+i).value!="Off") plus++;
}
if (plus>0) event.target.value="+"+plus;
else event.target.value=plus;
la valeur "plus" doit être ajoutée à un éventuel calcul !
@+
 :bonjour:

IP archivée


Merlin  21 décembre 2020 : 22:17

Ou sinon juste en utilisant la fonction "Additionner", après avoir assigné une valeur d'exportation de "1" aux cases à cocher concernées (voir PDF et capture joints).
 :Smiley03:


PS : puisqu'il est question de Cthulhu et que nous sommes entre initiés je t'offre ce livre :
https://www.abracadabrapdf.net/pdf-de-demo/e-books/dans-labime-du-temps/


IP archivée


Ekinor  22 décembre 2020 : 16:37

Citer
PS : puisqu'il est question de Cthulhu et que nous sommes entre initiés je t'offre ce livre :
Je tien a te remercier pour cet ouvrage je vais le lire avec avidité.
Je regarde ce que j'arrive à faire avec votre aide dans mon fichier et reviendrais avec une nouvelle question ou des résultats probants.
En tout cas Merci beaucoup à tous.

IP archivée


Ekinor  23 décembre 2020 : 02:42

Alors voilà.
Premièrement grâce à votre aide tout est ok. Quand je ne coche aucune checkbox "Mod ATM" est à zéro. et quand je coche une ou plusieurs des checkbox il prend la valeur voulue.
Mais là je me creuse la tête sur un problème qui est apparu depuis cette après-midi.
Quand je coche mes case "ATM niv3" à "ATM niv9" tout est Ok. Mais si je coche une checkbox des modificateur de "Distance" ou "Contact" c'est la que tout part en cacahuète. Cela me modifie le comportement de ma case "Mod ATM" alors que cela ne devrait pas. :Smiley07:

Afin de comprendre je vous invite à passer la valeur "INT" à 12 puis à check la checkbox sous "Magique" puis de check une sous "Distance".
Pourtant les Checkbox de "Distance" et "Contact" on bien des nom différent. elles ne devraient pas être prises en compte.
Je sais que j'abuse de votre bonté mais pourriez vous encore une fois m'aider?

Merci mille fois.

Liens du nouveau document:https://framadrop.org/lufi/r/68YY1ZvFWB#UdzHHkA6Axpn6Kcx2Q+1bRcoLxeXnOqenB6nv4EPbxU=


IP archivée


Merlin  23 décembre 2020 : 14:06

Si tu avais utilisé la méthode que j'ai conseillé ci-dessus tu n'aurais pas ces problèmes.

Pour moi ça fonctionne bien, il y a juste le signe + qui disparait quand on coche Contact ou Distance.
À mon avis la source du problème vient du fait que l'affichage du signe +/- est géré par les scripts de calcul, ce qui n'est pas une bonne idée.

Ma solution serait de supprimer toute cette gestion dans les scripts de calcul et d'utiliser un simple script de format personnalisé dans les champs concernés :
if (event.value > 0) {event.value = "+ " + event.value;}
else if (event.value < 0) {event.value = "- " + event.value;}
else if (event.value) == 0) {event.value = "";}  // facultatif, supprime l'affichage du zéro


L'avantage du script de format personnalisé c'est qu'il ne modifie que l'affichage de la valeur, sans modifier la valeur elle-même.
Ainsi, si c'est une valeur de type Chiffre on peut la réutiliser directement dans d'autres calculs, sans devoir gérer le caractère +/-  qui du coup n'est que "virtuel".

IP archivée


Ekinor  24 décembre 2020 : 03:06

MEEEEERRRRCCCCIIIII!!!

C'est top tout marche comme sur des roulettes.
en finalité, je me perdait dans une boucle infinie avec la formule des checkbox de niveau lorsque je l’insérait dans mes calcul.
var plus=0;
for (var i=3; i<=9; i+=2) {
    if (this.getField("ATM niv"+i).value!="Off") plus++;
}
if (plus>0) event.target.value="+"+plus;
else event.target.value=plus;



Franchement merci pour vos aides précieuses.

A bientôt pour de nouvelles questions .....  :Smiley03:

IP archivée