Control et insertion dans des cellules

cs_christuckers Messages postés 75 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 26 mars 2010 - 11 juil. 2007 à 14:43
chrisslk Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 26 juillet 2007 - 18 juil. 2007 à 14:58
Salute tout le monde !

Bon ba la j'ai l'impression de bloqué sur un truc completement ridicule. Je me dis que j'ai réussi à faire un truc de iouf, mais je n'arrive pas à faire afficher un message.
Voici mon code :

function calcul()
{
var sp1 = document.form1.montant.value; // montant
var sp2 = sp1.replace(",",".")// montant ss vir
var sp100 = document.form1.reprise.value; //reprise
var sp101 = sp100.replace(",",".")// reprise ss vir
var sp102 = (sp2-sp101); //montant financé - reprise
var sp3 = document.form1.duree.value; // duree
var sp4 = document.form1.teg.value; //teg %
var sp5 = sp4.replace(",",".")// teg ss vir
var sp6 = document.form1.vrpourcent.value; //vr%
var sp7 = sp6.replace(",",".")//vr% ss vir
if (sp7<"35.01") {var sp8=sp7;}
if (sp7>"35.01") {var sp8="Impossible";}
var sp9 = document.form1.vreuro.value; //vr?
var sp10 = ((sp2*sp8)/100); //VR ?HT
var sp11 = document.form1.aexp.value; // cellule petit a de ^
var sp12 = (1+(sp5/100/12)); //petit a de ^
var sp13 = document.form1.math.value; // cellulle de lexposant
var sp14 = Math.pow(sp12,sp3); // exposant
if (sp102>"0") {var sp15=-(((Number(sp5))/100/12)*(-(Number(sp10))+(Number(sp102))*((Number(sp14)))))/(((Number(sp12))*1)*(1-((Number(sp14)))));}
if (sp102<"0") {var sp15="Impossible";}
// calcul du loyer

document.form1.montant.value=Math.round(sp2*100)/100;
document.form1.soustotal.value=Math.round(sp102*100)/100;
document.form1.vreuro.value=Math.round(sp10*100)/100;
document.form1.aexp.value=Math.round(sp12*100)/100;
document.form1.math.value=Math.round(sp14*100)/100;
document.form1.resultat.value=Math.round(sp15*100)/100;}

Tous les calculs se font bien, par contre lorsque je tape un sp8 > 35.01, ca me met Nan et non pas "impossible" comme je le veux. (pareil pour sp15)

Comment faire ?

Merci

3 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 juil. 2007 à 15:10
Bonjour,

tous tes contrôles sont fait en string.
"0" n'est pas égal à 0.

    var sp1 = Number(document.form1.montant.value)....
    ...
    var sp8;
    if (sp7<35.01)    {sp8=sp7;}
         else             {sp8="Impossible";}

    ...



    if (sp102>0) {var sp15=-((((sp5))/100/12)*(-(   ....








<hr />                Cordialement                       Bul         [mon Site]         [M'écrire]<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 juil. 2007 à 15:12
soulignons aussi qu'un calcul avec "Impossible" donnera NaN ( Not a Number )
<hr />                Cordialement          Bul         [mon Site]     [M'écrire]<hr />
0
chrisslk Messages postés 5 Date d'inscription mercredi 18 juillet 2007 Statut Membre Dernière intervention 26 juillet 2007
18 juil. 2007 à 14:58
En fait, il te refuse tout simplement car tu lui dis  dans cette ligne :
document.form1.resultat.value=Math.round(sp15*100)/100;}

de faire un arrondis d'une chaine de caractère en faisant ceci car marche :

{
var sp1 = document.form1.montant.value; // montant
var sp2 = sp1.replace(",",".")// montant ss vir
var sp100 = document.form1.reprise.value; //reprise
var sp101 = sp100.replace(",",".")// reprise ss vir
var sp102 = (sp2-sp101); //montant financé - reprise
if (sp102>0) {var sp103=sp102;}
else {sp103=" Erreur ! Le montant de la reprise doit être inférieur au montant financé";}
var sp3 = document.form1.duree.value; // duree
var sp4 = document.form1.teg.value; //teg %
var sp5 = sp4.replace(",",".")// teg ss vir
var sp6 = document.form1.vrpourcent.value; //vr%
var sp7 = sp6.replace(",",".")//vr% ss vir
if (sp7<35.01) {var sp8=sp7;}
else {sp8="Impossible";}
var sp9 = document.form1.vreuro.value; //vr?
var sp10 = ((sp2*sp8)/100); //VR ?HT
var sp11 = document.form1.aexp.value; // cellule petit a de ^
var sp12 = (1+(sp5/100/12)); //petit a de ^
var sp13 = document.form1.math.value; // cellulle de lexposant
var sp14 = Math.pow(sp12,sp3); // exposant
if (sp103>0) {var sp15=-(((Number(sp5))/100/12)*(-(Number(sp10))+(Number(sp103))*((Number(sp14)))))/(((Number(sp12))*1)*(1-((Number(sp14)))));}
else {var sp15="Le loyer doit être supérieur à 0";}
// calcul du loyer





document.form1.montant.value=Math.round(sp2*100)/100;
document.form1.soustotal.value=Math.round(sp102*100)/100;
document.form1.mr.value=(sp103);
document.form1.vreuro.value=(sp10);
document.form1.aexp.value=Math.round(sp12*100)/100;
document.form1.math.value=Math.round(sp14*100)/100;

document.form1.resultat.value=(sp15);



}



Sinon, merci pour le code, je vais en avoir besoin

Au début de chaque instution, l'homme se demande ce qu'il peut faire pour elle, puis au bout d'un certain temps, ce qu'elle peut faire pour lui -->
0
Rejoignez-nous