IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Formule de mensualité


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Femme Profil pro
    Passionnée de l'inconu
    Inscrit en
    Décembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Passionnée de l'inconu

    Informations forums :
    Inscription : Décembre 2022
    Messages : 3
    Par défaut Formule de mensualité
    Bonjour à vous

    Je suis actuellement en train de désespérer... cela fait maintenant quelques semaines que je tourne autours du pot afin de résoudre une énigme.
    Je suis une grande débutante dans le JS, j'apprends à tatillon en "expérimentant", en décortiquant, et en récoltant des bouts que je modifie en fonction de mes besoins.
    Je vous explique ma problématique :

    Je souhaite retranscrire une formule excel en JS, le but étant d'obtenir le nombre de mensualité exacte en ayant les données suivantes :
    -Le capital à financer : 600€
    -Le taux : 16,8%
    -La mensualité/mois en € : 50€
    (J'ai mis des données afin de mieux décrire mon exemple)

    Je pars de la formule suivante : NPM((1+16,89999%)^(1/12)-1;-50;600)
    Le résultat obtenu sur Excel est : 13,14

    Hors lorsque je passe sur JS avec la formule suivante (ligne 32):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    const inputs = {
      k: 600, //Montant financé
      t: 16.89999, // TAUX
      n: 50, // Budget mensuel
      ptz: 0,
    }
     
    const $wrapper = document.querySelector('.wrapper');
    const $inputs = [...document.querySelectorAll('input')];
     
    // Create
    const $result = document.createElement('div');
    const $result2 = document.createElement('div');
     
    // Append to Dom
    $wrapper.appendChild($result);
    $wrapper.appendChild($result2);
     
    function render() {
      // DO SOME MATHS
      const k = parseFloat(inputs.k);
      // Capital en euros
      // Duree en années
      let ptz = inputs.ptz; // max ptz;
      let m = parseFloat(0); // Mensualité en euros
     
     
     
     
      t = parseFloat(inputs.t) / 100; // Taux
      n = parseInt(inputs.n);  // Nombre de mensualité
      m = Math.round((( k * t / 100)/(1-( Math.pow(( 1 + t / 100 ),( -n ))))) * 100 ) / 100; // Mensualité en euros
     
     
     
      const k1 = (( m - m ) * n);  // Calcul dernier mois
      const k2 = k - ptz; // Je n'utilise pas
      const m2 = parseFloat(k2 * (t / 12) / (1 - Math.pow(1 + ( t / 12), -n)).toFixed(2)); // Je n'utilise pas
      const m3 = ptz / n; // Je n'utilise pas
     
      const c = (m * n) - k; // Je n'utilise pas
      const c2 = (m2 * n) - k2; // Je n'utilise pas
     
      // Add or Update Data
      $result.innerHTML = `
      <strong>${m.toFixed(2)}</strong> <sup>mois</sup> à <strong>${parseFloat(n).toFixed(0)}</strong> €</strong>
      `;
     
      $result2.innerHTML = `
    <strong>1</strong> <sup>mois</sup> à <strong>${parseFloat(k1).toFixed(2)}</strong> €</strong>
    `;
    }
     
    render();
     
    $inputs.forEach($input => {
      $input.addEventListener('keyup', e => {
        const target = e.target;
        const type = target.dataset.key;
        inputs[type] = target.value;
        render();
      }, false);
    });
    Mon résultat JS ne retombe pas sur mon résultat sous excel... J'obtiens 12,52 au lieu de 13,14
    Pouvez vous m'aider svp ?
    Merci d'avance


  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 624
    Par défaut
    dans votre code les variables k t et n contiennent apparemment les bonnes valeurs donc ce n'est pas un souci de javascript mais un souci de formule.
    quelle est la formule au format mathématique ?

  3. #3
    Candidat au Club
    Femme Profil pro
    Passionnée de l'inconu
    Inscrit en
    Décembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Passionnée de l'inconu

    Informations forums :
    Inscription : Décembre 2022
    Messages : 3
    Par défaut
    Merci pour votre retour Mathieu !
    Alors en fouinant sur internet je viens de retrouver ceci :

    n = (ln((12*E)/(12*E-t*K)))/(ln(1+t/12))

    m : mensualité
    K : capital emprunté
    t : taux annuel proportionnel
    n : nombre de mensualités
    E : la mensualité

    Soit pour moi, cela donnerait quelque chose comme :

    n = (ln((12*50)/(12*50-0,168*600)))/(ln(1+0,168/12))

  4. #4
    Candidat au Club
    Femme Profil pro
    Passionnée de l'inconu
    Inscrit en
    Décembre 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Passionnée de l'inconu

    Informations forums :
    Inscription : Décembre 2022
    Messages : 3
    Par défaut
    Hello !
    J'ai continué de travailler dessus de mon côté :



    Quelqu'un saurait me dire pourquoi il n'y aucun résultat qui apparait en dessous de mes inputs malgré avoir mis :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      <div class="wrapper">
     
      <div id="result"></div>
      <div id="result2"></div>
    </div>

    Merci d'avance

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut
    Citation Envoyé par Marie_L'aventurière Voir le message
    ...Quelqu'un saurait me dire pourquoi il n'y aucun résultat qui apparait en dessous de mes inputs malgré avoir mis : ...
    Chez moi le code fonctionne très bien, au démarrage mais aussi dés que l'on modifie une des entrées input.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Calcul de l'intérêt dans la formule de la mensualité constante
    Par valenedian dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 30/01/2008, 15h04
  2. [Crystal] Formules ...
    Par Antichoc dans le forum Formules
    Réponses: 3
    Dernier message: 25/11/2003, 10h52
  3. évaluateur de formule mathématique
    Par lyrau dans le forum Générateurs de compilateur
    Réponses: 5
    Dernier message: 28/03/2003, 22h50
  4. [Formule] Lever et coucher du soleil
    Par psl dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/10/2002, 16h37
  5. [reseaux] Comment creer un compte user à partir d'un formul avec perl
    Par oulai_evado dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 01/10/2002, 19h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo