Discussion:
formule mathématique de VPM, VC et VA
Add Reply
glefranc
2004-01-26 11:21:08 UTC
Réponse
Permalink
je recherche les formules mathématiques pour les redévelopper en php
des fonctions suivantes VPM, VC, VA.
j'ai bien regardé et je n'ai pas trouvé de formules mathématiques
prenant en compte les différentes options de calculs surtout pour VPM
ou vc et type ne sont pas pris en compte.
merci de votre aide

GIL
glefranc
2004-01-29 11:33:25 UTC
Réponse
Permalink
Post by glefranc
je recherche les formules mathématiques pour les redévelopper en php
des fonctions suivantes VPM, VC, VA.
j'ai bien regardé et je n'ai pas trouvé de formules mathématiques
prenant en compte les différentes options de calculs surtout pour VPM
ou vc et type ne sont pas pris en compte.
merci de votre aide
GIL
je viens de trouver une formule mais ce n'est que de l'approchant
PMT = (PV + FV * (1+Rate)^-NPer) * (1+x*Rate) * Rate / (1 - (1+Rate)^-NPer))
VPM = (VA + VC * (1+Taux)^-NPer) * (1+x*Taux) * Taux / (1 - (1+Taux)^-Nper))

ou x est le type de la fonction VPM 0 ou 1 pour fin de période ou début de période

merci beaucoup pour une aide pour résoudre l'approchant
glefranc
2004-01-29 12:31:19 UTC
Réponse
Permalink
Post by glefranc
je recherche les formules mathématiques pour les redévelopper en php
des fonctions suivantes VPM, VC, VA.
j'ai bien regardé et je n'ai pas trouvé de formules mathématiques
prenant en compte les différentes options de calculs surtout pour VPM
ou vc et type ne sont pas pris en compte.
merci de votre aide
GIL
pour ceux que ça intéresse voici la formule exacte de VPM ou PMT en anglais

PMT = (rate*(FV+PV*(1+ rate)^NPER))/((1+rate*type)*(1-(1+ rate)^NPER))

VPM = (taux*(VC+VA*(1+taux)^NPER))/(1+taux*type)*(1-(1+taux)^NPER))

bon courage à ceux qui l'utilise
fragbis
2010-11-02 21:33:04 UTC
Réponse
Permalink
Post by glefranc
je recherche les formules mathématiques pour les redévelopper en php
des fonctions suivantes VPM, VC, VA.
j'ai bien regardé et je n'ai pas trouvé de formules
mathématiques
prenant en compte les différentes options de calculs surtout pour VPM
ou vc et type ne sont pas pris en compte.
merci de votre aide
GIL
J'ai cherché quelques temps pour trouver la formule exacte, mais franchement
j'ai dû la recomposer moi-même en prenant quelques indices "approchant
(d'ailleurs en reprenant un peu l'expression décrite par la répons
précédente).
En PHP, ça donne ça :

/**
* Calcule et retourne le Versement p
fragbis
2010-11-02 21:39:04 UTC
Réponse
Permalink
Post by glefranc
je recherche les formules mathématiques pour les redévelopper en php
des fonctions suivantes VPM, VC, VA.
j'ai bien regardé et je n'ai pas trouvé de formules
mathématiques
prenant en compte les différentes options de calculs surtout pour VPM
ou vc et type ne sont pas pris en compte.
merci de votre aide
GIL
J'ai cherché quelques temps pour trouver la formule exacte, mais franchement
j'ai dû la recomposer moi-même en prenant quelques indices "approchant" (e
reprenant un peu l'expression décrite par la réponse précédente,d'ailleurs).
En PHP, ça donne une fonction comme ça, qui donne exactement le même résulta
que Excel (NB : c'est une fonction statique, donc si vous l'utiliser hors d'un
classe, enlevez "static") :

/**
* Calcule et retourne le Versement périodique d'un remboursement ou d'u
loyer.
* @param $tx, Intérêt. Il est souvent donné annuellement (le diviser par 1
si l'on veut un calcul par mois).
* @param $npm, Nombre de périodes de capitalisation (souvent en mois)
* @param $va, Valeur actuelle (capital investi)
* @param $vc, Valeur capitalisée (capital acquis) facultative, c'est à dir
la valeur future (si omise la valeur est = 0)
* @param $typeRembt, 1 si paiement en début de période (généralement le
emprunts hypothécaires), 0 sinon (valeur par défaut)
* @return double < 0
*/
public static function VPM($tx, $npm, $va, $vc=0, $typeRembt=0){
i
(!is_numeric($tx)||!is_numeric($npm)||!is_numeric($va)||!is_numeric($vc)||!is_numeric($typeRembt)
return false;
if ($typeRembt>1||$typeRembt<0) return false;
$txActuariel = pow(1+$tx, -$npm);
if ((1-$txActuariel)==0) return 0;
$vpm = ( ($va + $vc * $txActuariel) * $tx / (1 - $txActuariel) ) / (1 + $tx
$typeRembt);
return -$vpm;//Attention : on retourne une valeur négative !
}
fragbis
2010-11-02 21:51:00 UTC
Réponse
Permalink
Post by fragbis
Post by glefranc
je recherche les formules mathématiques pour les redévelopper en php
des fonctions suivantes VPM, VC, VA.
j'ai bien regardé et je n'ai pas trouvé de formules
mathématiques
prenant en compte les différentes options de calculs surtout pour VPM
ou vc et type ne sont pas pris en compte.
merci de votre aide
GIL
J'ai cherché quelques temps pour trouver la formule exacte, mais
franchement, j'ai dû la recomposer moi-même en prenant quelques
indices "approchant" (en reprenant un peu l'expression décrite
par la réponse précédente,d'ailleurs).
En PHP, ça donne une fonction comme ça, qui donne exactement le
même résultat que Excel (NB : c'est une fonction statique, donc si
/**
* Calcule et retourne le Versement périodique d'un remboursement ou d'un
loyer.
(le diviser par 12 si l'on veut un calcul par mois).
à dire la valeur future (si omise la valeur est = 0)
(généralement les emprunts hypothécaires), 0 sinon (valeur
par défaut)
*/
public static function VPM($tx, $npm, $va, $vc=0, $typeRembt=0){
if
(!is_numeric($tx)||!is_numeric($npm)||!is_numeric($va)||!is_numeric($vc)||!is_numeric($typeRembt))
Post by fragbis
return false;
if ($typeRembt>1||$typeRembt<0) return false;
$txActuariel = pow(1+$tx, -$npm);
if ((1-$txActuariel)==0) return 0;
$vpm = ( ($va + $vc * $txActuariel) * $tx / (1 - $txActuariel) ) / (1 + $t
*
Post by fragbis
$typeRembt);
return -$vpm;//Attention : on retourne une valeur négative !
}
Notez qu'on peut du coup retrouver l'algo du calcul de la VA.
Bon... même si ma réponse intervient 6 ans après le premier post, j'imagine qu
d'autres personnes sont susceptibles de chercher encore la même chose.
De plus, la réponse est ici en PHP, mais elle n'est pas difficile à adapte
dans les autres langages.
b***@gmail.com
2020-06-29 15:27:12 UTC
Réponse
Permalink
Bonjour,
A mon tour de me heurter au problème VPM a développer en PHP en tenant compte des variables VC et Type, déterrant ce post 10 ans plus tard.

J'ai explore le net en long en large et en travers, trouvé des fonctions PHP loufoques et farfelues qui donnaient des résultats tout aussi équivoques et je suis tombé ici ou la lecture de la formule "VPM = (VA + VC * (1+Taux)^-NPer) * (1+x*Taux) * Taux / (1 - (1+Taux)^-Nper))" m'a donné espoir d'avoir trouvé la solution, alors que même des sites de finance et de mathématiques financières ne traitaient pas des variables VC et Type...

Et c'est presque la bonne solution car après l'avoir transcrite en PHP j'ai remarqué quelques problèmes.

Voici la formule corrigée Pour ceux qui cherche une mensualité en fonction d'un taux, d'une durée, d'une valeur initiale et d'une valeur capitalisé.

Version normal
VPM=( (VA - VC * (1 + Taux )^-NPer) * Taux / (1 - (1 + Taux)^-NPer)) / (1 + Taux* type)
Version mensualisée
VPM=( (VA - VC * (1 + (Taux / 12) )^-NPer) * (Taux / 12) / (1 - (1 + (Taux / 12))^-NPer)) / (1 + (Taux / 12) * type)

Et la version PHP de base à laquelle j'ai ajouté le choix de la périodicité même si le plus courant est la mensualisation.
function VPM($taux, $npm, $va, $vc, $type, $Periode='M'){

if ($Periode=='A'){
//Annuel
$ValeurPeriode=1;
} else if ($Periode=='S'){
//Semestriel
$ValeurPeriode=2;
} else if ($Periode=='T'){
//Trimestriel
$ValeurPeriode=4;
} else if ($Periode=='M'){
//Mensuel
$ValeurPeriode=12;
}

$tauxMensuel=$taux/$ValeurPeriode;
$tauxPeriode=pow(1+$tauxMensuel,-$npm);
$mensualite = (($va - $vc * $tauxPeriode) * $tauxMensuel / (1 - $tauxPeriode) ) / (1 + $tauxMensuel *$type);
return abs($mensualite);
}
echo vpm(0.05, 48, 45000, 22000, 1, "M");

Exemple donné pour une location de véhicule sur 48 mois à 5% payable en fin de période, dont la valeur initial du véhicule est de 45000€ et la valeur capitalisée de 22000.

Merci à vous pour m'avoir mis sur la piste.

Loading...