Calcul des amortissements en javascript

Fermé
JayP1 Messages postés 4 Date d'inscription mercredi 3 février 2016 Statut Membre Dernière intervention 5 novembre 2016 - Modifié par jordane45 le 5/11/2016 à 23:36
jordane45 Messages postés 38167 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 mai 2024 - 5 nov. 2016 à 23:49
Aidez moi svp,

Je suis entrain de faire une application qui calcule des amortissement Lineaire et degressif , mais quand je clique sur le bouton calculer, mon tableau ne s'affiche pas: voici mon code :

code HTML pour le formulaire :
 
<!DOCTYPE html>

<html lang="fr">
    <head>
        <meta charset="UTF-8">
        <script type="text/javascript" src="calculer.js"></script>

        <link LINK  REL="stylesheet" TYPE="text/css" HREF="css/bootstrap.css" />
        <link LINK  REL="stylesheet" TYPE="text/css" HREF="css/bootstrap-responsive.css" /> 
        <link LINK  REL="stylesheet" TYPE="text/css" HREF="css/body.css" />
        <script src="script.js"></script>
    </head>

    <body onload="recuperValeur()">
        <form action="#" method="#" name="form" style="padding: 10%;">

            <table width="50%" border ="1" cellspacing="1" cellpadding="1"><tr><td><div align=center>

                            <div class align ="center">  
                                <span style="color:#FF6060;font-weight:bold;text-decoration:underline;font-size:30px;">Calculs des amortissements </span> <br><br>


                                <table align="center" cellspacing="1" width="70%">
                                    <tr> 

                                        <td class="tiny">Type d'amortissement</td>
                                        <td>
                                            <select id ="lineaireDegressif"></select>

                                        </td>
                                    </tr>  


                                    <tr> 
                                        <td class="tiny">Base</td>
                                        <td nowrap> 

                                            <input class='selectbg' type="text" name="base" id="base">
                                            <b>€</b>
                                        </td>
                                    </tr>

                                    <tr>
                                        <td class="tiny">Prix de cession</td>
                                        <td nowrap> 

                                            <input class='selectbg' type="text" name="cession" id="cession">
                                            <b>€</b></td>
                                    </tr>

                                    <tr> 
                                        <td class="tiny">Durée d'utilisation</td>
                                        <td> 
                                            <select id="dureeSelectionnee"></select>

                                        </td>
                                    </tr>
                                    <tr> 
                                        <td class="tiny">Mois de début d'exerice</td>
                                        <td>
                                            <select id ="moisMiseEnService"></select>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="tiny">Date de mise en service</td>
                                        <td>
                                            <select class="champs" id ="jour"></select>
                                            <select class="champs" id ="mois"></select>
                                            <select class="champs" id ="annee"></select>

                                        </td>
                                    </tr>
                                    <tr>
                                        <td colspan="3" align="left" class="tiny"><br> 
                                        </td>
                                    </tr>
                                    <tr></table>

                            </div>
                        </div>

                        <table id="tab"  border="1px"></table>

                        <button onclick="afficher()">Calculer</button>
                        </form>

                        <div id="resume"></div>
                        </body>
                        </html>



code javascript pour recuperer les saisis:
function recuperValeur() {

    dureeSelectionnee();
    moisMiseEnService();
    lineaireDegressif();
    jour();
    mois();
    annee();
}
function lineaireDegressif() {

    var select = document.getElementById("lineaireDegressif");
    var choix = ["Linéaire", "Dégressif"];

    for (var i = 0; i < 2; i++) {
        var option = document.createElement("option");
        option.value = i + 1;
        option.text = choix[i];
        select.appendChild(option);
    }
}


function dureeSelectionnee() {

    var select = document.getElementById("dureeSelectionnee");

    for (var i = 1; i < 15; i++) {
        var option = document.createElement("option");
        option.value = i;
        option.text = i + " ans ";
        select.appendChild(option);
    }
}


function moisMiseEnService() {

    var select = document.getElementById("moisMiseEnService");
    var tabMois = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];

    for (var i = 0; i < tabMois.length; i++) {
        var option = document.createElement("option");
        option.value = i + 1;
        option.text = tabMois[i];
        select.appendChild(option);
    }
}

function jour() {
    var select = document.getElementById("jour");
    var jour = 32;

    for (var i = 0; i < jour; i++) {

        var option = document.createElement("option");
        option.value = i;
        option.text = i;
        select.appendChild(option);


    }

}
function mois() {

    var select = document.getElementById("mois");
    var tabMois = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"];

    for (var i = 0; i < tabMois.length; i++) {
        var option = document.createElement("option");
        option.value = i + 1;
        option.text = tabMois[i];
        select.appendChild(option);
    }
}

function annee() {

    var select = document.getElementById("annee");
    var date = new Date();
    var annee = date.getFullYear();
    var cpt = -10;

    for (var i = 0; i <= 20; i++) {
        var option = document.createElement("option");
        option.value = (annee + cpt);
        option.text = (annee + cpt);
        select.appendChild(option);
        cpt += 1;
    }
}

Deuxieme fichier javascript pour les calculs :


/* global moisService, dateService, moisExo */

function titre(choix) {
    if (choix === "1") {
        var tab = ["Année", "Base d'amortissement", "Annuités", "Valeur comptable"];
    } else if (choix === "2") {
        var tab = ["Année", "Base d'amortissement", "Taux linéaire", "Taux dégressif", "Annuités", "Valeur comptable"];
    }
    return tab;
}

function reinitialiser() {
    var taille = document.getElementById("tab").rows.length;

    for (i = 0; i < taille; i++) {
        document.getElementById("tab").deleteRow(0);
    }
}


function prorata(moisService, moisExo, dateService) {

    var service = parseInt(moisService);
    var exo = parseInt(moisExo);
    var date = parseInt(dateService);

    if (service < exo) {
        var ecart = (exo - service) - 1;
        var prorata = (30 - date + ecart * 30) + 1;
    } else {
        var ecart = (12 - service + exo) - 1;
        var prorata = (30 - date + ecart * 30) + 1;
    }

    return prorata;
}



function tDegressif(duree) {
    //Calcul du taux dégressif
    if (duree < 5) {
        coefficient = 1.25;
    } else if (duree > 4 && duree < 7) {
        coefficient = 1.75;
    } else {
        coefficient = 2.25;
    }
    var tDeg = ((1 / duree) * coefficient) * 100;
    return tDeg;
}

function afficher() {

    reinitialiser();


    var jourS = document.getElementById("jour").options[document.getElementById("jour").selectedIndex].value;
    var moisS = document.getElementById("mois").options[document.getElementById("mois").selectedIndex].value;
    var anneeS = document.getElementById("annee").options[document.getElementById("annee").selectedIndex].value;

    var exoS = document.getElementById("moisMiseEnService").options[document.getElementById("moisMiseEnService").selectedIndex].value;
    var base = document.getElementById("base").value;
    var prixCession = document.getElementById("cession").value;
    var duree = document.getElementById("dureeSelectionnee").options[document.getElementById("dureeSelectionnee").selectedIndex].value;
    var plan = document.getElementById("lineaireDegressif").options[document.getElementById("lineaireDegressif").selectedIndex].value;




    var prorata = prorata(moisService, moisExo, dateService);
    var tDeg = tDegressif(duree);
    var valeurResiduel = base - prixCession;



    var resume = "Valeur brute : " + base + " €" + " <br> " +
            "Prix de cession : " + prixCession + " €" + "<br>" +
            "Durée d'utilisation : " + duree + " ans" + "<br>" +
            "Plan choisi : " + plan + "<br>" +
            "La date de mise en service : " + jourS + "/" + moisS + "/" + anneeS + "<br>" +
            "Le mois de mise en service : " + exoS + "<br>" +
            "Prorata : " + prorata + "<br>" +
            "Valeur résiduelle : " + valeurResiduel;

    document.getElementById("resume").innerHTML = resume;


    var tab = entete(plan);

    var i = 0;
    var ligne = document.getElementById("tab");
    ligne.insertRow(i).insertCell(0).innerHTML = tab[0];
    for (j = 1; j < tab.length; j++) {

        ligne.rows[i].insertCell(j).innerHTML = tab[j];
    }
    if (parseInt(moisService) === parseInt(moisExo)) {
        var anneedapres = false;
    } else if (parseInt(moisService) < parseInt(moisExo)) {
        var anneedapres = false;
    } else {
        var anneedapres = true;
    }

    //Amortissement lineaire
    if (plan === "1") {

        var unAnDePlus = parseInt(duree) + 1;
        for (k = 0; k < unAnDePlus; k++) {
            document.getElementById("tab").insertRow(k + 1).insertCell(0).innerHTML = k + 1;
            document.getElementById("tab").rows[k + 1].insertCell(1).innerHTML = base + " - " + prixCession + " = " + valeurResiduel;
            if (k === 0) {
                var res = (((valeurResiduel / parseInt(duree)) * prorata) / 360).toPrecision(5);
                document.getElementById("tab").rows[k + 1].insertCell(2).innerHTML = valeurResiduel + " / " + duree + " x " + prorata + " / " + 360 + " = " + res;
                var valcomptable = (base - res).toPrecision(5);
                document.getElementById("tab").rows[k + 1].insertCell(3).innerHTML = base + " - " + res + " = " + valcomptable;
            } else if (k === unAnDePlus - 1) {
                if (prixCession === 0) {
                    var reste = 360 - prorata;
                    var valfinale = valeurcomptable - valcomptable;
                    var res = (((valeurResiduel / parseInt(duree)) * reste) / 360);
                    document.getElementById("tab").rows[k + 1].insertCell(2).innerHTML = valeurResiduel + " / " + duree + " x " + reste + " / " + 360
                            + " = " + res.toPrecision(5);
                    document.getElementById("tab").rows[k + 1].insertCell(3).innerHTML = res.toPrecision(5) + " - " + valcomptable + " = " + valfinale;
                } else {
                    var derannuite = (((valeurResiduel / parseInt(duree)) * prorata) / 360).toPrecision(5);
                    var annuitefinale = (res - derannuite);
                    document.getElementById("tab").rows[k + 1].insertCell(2).innerHTML = res.toPrecision(5) + " - " + derannuite + " = " + annuitefinale.toPrecision(5);
                    document.getElementById("tab").rows[k + 1].insertCell(3).innerHTML = valeurcomptable + " - " + annuitefinale.toPrecision(5) + " = " + (valcomptable - annuitefinale).toPrecision(5);
                }
            } else {
                var res = (valeurResiduel / parseInt(duree));
                var valeurcomptable = (valcomptable - res).toPrecision(5);
                document.getElementById("tab").rows[k + 1].insertCell(2).innerHTML = valeurResiduel + " / " + duree + " = " + res.toPrecision(5);
                document.getElementById("tab").rows[k + 1].insertCell(3).innerHTML = valcomptable + " - " + res.toPrecision(5) + " = " + valeurcomptable;
                var valcomptable = valeurcomptable;
            }

        }
    }

//amortissement degressif
    else if (plan === "2") {
        for (k = 0; k < duree; k++) {
            document.getElementById("tab").insertRow(k + 1).insertCell(0).innerHTML = k + 1;
        }
        var cpt = duree;

        for (l = 0; l < duree; l++) {
            var tauxl = (1 / cpt * 100);
            if (l === 0) {
                document.getElementById("tab").rows[l + 1].insertCell(1).innerHTML = base;
            } else {
                document.getElementById("tab").rows[l + 1].insertCell(1).innerHTML = valeurcomptable.toPrecision(5);
            }
            document.getElementById("tab").rows[l + 1].insertCell(2).innerHTML = 1 + "/" + cpt + " = " + tauxl.toPrecision(3) + "%";
            document.getElementById("tab").rows[l + 1].insertCell(3).innerHTML = tDeg.toPrecision(2) + "%";

            var ecart = (12 - parseInt(moisService) + parseInt(moisExo)) - 1;
            if (tauxl < tDeg) {
                if (l === 0) {
                    if (anneedapres === true) {
                        var ecart = (12 - parseInt(moisService) + parseInt(moisExo)) - 1;
                    } else {
                        var ecart = (parseInt(moisExo) - parseInt(moisService));
                    }
                    var annuite = base * (tDeg / 100) * ecart / 12;
                    document.getElementById("tab").rows[l + 1].insertCell(4).innerHTML = base + " * " + tDeg + "% *" + ecart + "/" + 12 + " = " + annuite.toPrecision(5);
                    var valeurcomptable = base - annuite;
                    document.getElementById("tab").rows[l + 1].insertCell(5).innerHTML = base + " - " + annuite.toPrecision(5) + " = " + valeurcomptable.toPrecision(5);
                } else {
                    var annuite = valeurcomptable * (tDeg / 100);
                    document.getElementById("tab").rows[l + 1].insertCell(4).innerHTML = valeurcomptable.toPrecision(5) + " * " + tDeg.toPrecision(5) + "% = " + annuite.toPrecision(5);
                    var valcomptable = valeurcomptable - annuite;
                    document.getElementById("tab").rows[l + 1].insertCell(5).innerHTML = valeurcomptable.toPrecision(5) + " - " + annuite.toPrecision(5) + " = " + valcomptable.toPrecision(5);
                    valeurcomptable = valcomptable;
                }

            } else {
                if (l === duree - 1) {
                    var annuite = valeurcomptable - prixCession;
                    document.getElementById("tab").rows[l + 1].insertCell(4).innerHTML = valeurcomptable.toPrecision(5) + " - " + prixCession + " = " + annuite.toPrecision(5);
                    var valcomptable = valeurcomptable - annuite;
                    document.getElementById("tab").rows[l + 1].insertCell(5).innerHTML = valeurcomptable.toPrecision(5) + " - " + annuite.toPrecision(5) + " = " + valcomptable.toPrecision(5);
                    var valeurcomptable = valcomptable;
                } else {
                    var annuite = valeurcomptable * (tauxl / 100);
                    document.getElementById("tab").rows[l + 1].insertCell(4).innerHTML = valeurcomptable.toPrecision(5) + " * " + tauxl.toPrecision(5) + "% = " + annuite.toPrecision(5);
                    var valcomptable = valeurcomptable - annuite;
                    document.getElementById("tab").rows[l + 1].insertCell(5).innerHTML = valeurcomptable.toPrecision(5) + " - " + annuite.toPrecision(5) + " = " + valcomptable.toPrecision(5);
                    var valeurcomptable = valcomptable;

                }
            }

            cpt = cpt - 1;
        }
    }


    // }
}


EDIT : Ajout des balises de code

Je vous remercie./config>
A voir également:

1 réponse

jordane45 Messages postés 38167 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 mai 2024 4 659
5 nov. 2016 à 23:49
Bonjour,

Affiche donc la console de ton navigateur et regarde si tu n'y verrais pas des erreurs...
Par exemple .... la variable moiservice est utilisée... alors qu'elle n'est initialisée nul part...

Pour ce qui est de ton code... tu pourrais le simplifier grandement.
Par exemple... pourquoi faire un boucle pour vider ton tableau.. alors qu'il suffit d'y mettre innerHTML à vide.
Et puis.. tu as pleins de lignes de code en double.. tu pourrais sûrement redécouper ta fonction "afficher" en sous-fonctions histoire de rendre ton code plus lisible et plus maintenable.

0