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

 Delphi Discussion :

Equivalent VPM d'excel .


Sujet :

Delphi

  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Par défaut Equivalent VPM d'excel .
    Bonsoir,
    Voilà je suis à la recherche d'un calcul sous delphi
    celui d'un remboursement d'emprunt (equivalent de la fonction VPM d'excel)
    Jusque ici tout allait bien j'ai trouve une formule permettant de calculer une prime mensuelle à partir de kelkes donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    res3 := m*(d/(1-(1+d)^-res2));
      // m= montant,d= duree en année,res2 = duree en mois
    // Formule => Mensualité = Emprûnt*(Tx_période/(1-(1+Tx_période)^-NbEchéances))
    Voyez vous sous delphi la fonction ^ exposant n'est pas reprise (equivalent power)
    Mon probleme se situe dans là façon d'exposer ma formule car lorsque je la décompose et que j'essaye de calcule mon exposant, mon resultat n'est pas correct... enfin voilà merci

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Pour les exposants en Delphi la fonction est power, extrait de l'aide :

    function Power(const Base, Exponent: Extended): Extended;


    Tu peux passer ton code que l'on te dise où tu as fait une erreur.

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Par défaut
    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
     
    procedure Tform4.OKClick(Sender: TObject);
    var
    m,p,d,pbis, res1,res2,res3,res4,coutemprunt,resnormal,resconcept30,total,total1, m1,p1,d1,pbis1,dureeperiode1: extended;
     
     
     
     
    begin
     
        pbis:=StrTofloat(pourcentage.Text)/100;
        m := StrToFloat(montant.Text);
        p := StrTofloat(pourcentage.Text);
        d := StrToFloat(duree.Text);
        pbis1:=StrTofloat(pourcentage1.Text)/100;
        m1 := StrToFloat(montant1.Text);
        p1 := StrTofloat(pourcentage1.Text);
        d1 := StrToFloat(duree1.Text);
        dureeperiode1:=StrTofloat (dureep1.text);
     
     
    //------------MATH----------------------
     
    res1:=power(1+pbis,(1/12))-1;           {formule: ((1+p)^(1/12)-1)}
    res2:= (d*12);                    // {duree en mois}
    res3:=power(1+pbis1,(1/12))-1;           {formule: ((1+p)^(1/12)-1)}
    res4:= (d1*12);                    // {duree en mois}
    //resnormal:= (m/res2);              //-------------------
    //resconcept30:= (m1/res4);
    coutemprunt:= (m);               
    resnormal := m*(d/(1-(1+d)^-res2));     //   VPM trouve equivalent pascal.
    resnormal := m*(d1/(1-(1+d1)^-res4)); // ICI  // m= montant,d= duree en année,res2 = duree en mois
    // Total:= m*(d/(1-(1+d)));
    // total1:= power (total,-res2) ;
     
     
     
     
    {---------------LABEL, EDIT--------------}
    primemens.caption:=  FloatToStr(roundto (resnormal,-2))+'€';
    primemens1.caption:=  FloatToStr(roundto (resconcept30,-2))+'€';
    interetmensuel1.caption:=floattostr(roundto(res3*100,-4))+'%'   ;
    interetmensuel.caption:=floattostr(roundto(res1*100,-4))+'%'   ;
    nombremois.Caption:=Floattostr (res2);
    nombremois1.Caption:=Floattostr (res4);
    du1.text:= Floattostr (res4);
    du2.text:= Floattostr (res4);
    du3.text:= Floattostr (res4);
    coutemprunt0.text:= Floattostr (coutemprunt);
    coutemprunt1.text:= Floattostr (coutemprunt);
    coutemprunt2.text:= Floattostr (coutemprunt);
    coutemprunt3.text:= Floattostr (coutemprunt);
    couttotalduree.text:= Floattostr (dureeperiode1);
    difference.text:= Floattostr (roundto (resnormal-resconcept30,-2));
    budjet.text:= Floattostr (roundto (resconcept30,-2));;
    budjet1.text:= Floattostr (roundto (resconcept30,-2));;
    budjet2.text:= Floattostr (roundto (resconcept30,-2));;
    sommep1.text:= Floattostr (roundto (resnormal-resconcept30,-2));
    end;
    en fait pour resnormal et resconcept30 c'est la meme formule ...
    enfin j'ai reussi pour la premiere fonction power, mais ici pas moyen de trouver la bonne formule , je ne suis pas parvenu à traduire cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mensualitée =Emprûnt*(Tx_période/(1-(1+Tx_période)^-NbEchéances))
    enfin voilà

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut

    Citation Envoyé par ecobarito Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mensualitée =Emprûnt*(Tx_période/(1-(1+Tx_période)^-NbEchéances))
    essaie ceci (non testé ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mensualitee =Emprunt*(Tx_période/(1-Power((1+Tx_période),-NbEchéances)))

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Par défaut
    bah ca ne fonctionne pas ...
    manifestement c'est impossible de faire fonctionner cette primemensuelle
    je vais essayer d'arranger ca avec une autre commande la fonction payment qui devrait en logique me calculer une prime mensuelle mais c'est qd meme pas normal qu'une formule mathématique ne puisse pas être traduite sous delphi ...

    comprend pas ?¿?

    enfin tout de meme pour vos réponses merci

  6. #6
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Sans rentrer dans les détails de ta formule si tu fais simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit3.Text := FloatToStr( power(StrToFloat(Edit2.Text),StrToFloat(Edit1.Text)));
    ça donne quoi ?

  7. #7
    Membre averti
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Par défaut
    ben c'est une fonction exposant qui fonctionne, mais bon mon problème n'est pas là, je cherche une sorte d'algorythme qui me donnerai l'equivalent de la fonction VPM d'excel ou une methode mathématique, sans devoir passer par la fonction payment ... afin de calculer une prime mensuelle d'un emprunt ...

  8. #8
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par ecobarito Voir le message
    bah ca ne fonctionne pas ...
    manifestement c'est impossible de faire fonctionner cette primemensuelle
    je vais essayer d'arranger ca avec une autre commande la fonction payment qui devrait en logique me calculer une prime mensuelle mais c'est qd meme pas normal qu'une formule mathématique ne puisse pas être traduite sous delphi ...

    comprend pas ?¿?

    enfin tout de meme pour vos réponses merci
    bon, ça ne fonctionne pas mais encore ? il y a un message d'erreur ? c'est le code qui ne fonctionne pas ou bien c'est le résultat attendu qui n'est pas bon ? la formule donnée est elle celle issue d'Excel ?

  9. #9
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Essaye ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    uses Math;
     
    function VPM(const TauxAnnuel: Extended; const Duree: Integer;
                 const Emprunt: Currency): Currency;
    var
      TauxMensuel: Extended;
    begin
      Assert(TauxInteret > 0, 'Le taux d''intérêt doit être > à 0');
      Assert(Duree > 0, 'La durée de l''emprunt doit être > à 0');
     
      TauxMensuel := TauxAnnuel / 12;
      result := Emprunt * (TauxMensuel / (1 - Power(1 + TauxMensuel, -Duree)));
    end;
    @+ Claudius

Discussions similaires

  1. [AC-2010] Equivalent de recherchev excel
    Par dubdub1 dans le forum IHM
    Réponses: 15
    Dernier message: 26/03/2014, 15h33
  2. Equivalent recherche V Excel
    Par pauliner dans le forum Débuter
    Réponses: 3
    Dernier message: 03/12/2012, 09h43
  3. Réponses: 2
    Dernier message: 02/11/2012, 14h41
  4. Equivalant à STXT() sous excel
    Par supai dans le forum Débuter
    Réponses: 1
    Dernier message: 25/11/2009, 18h11
  5. Réponses: 5
    Dernier message: 13/12/2005, 22h10

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