Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

formule mathématique de VPM, VC et VA

667 views
Skip to first unread message

glefranc

unread,
Jan 26, 2004, 6:21:08 AM1/26/04
to
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

unread,
Jan 29, 2004, 6:33:25 AM1/29/04
to
glef...@alcyone.fr (glefranc) wrote in message news:<b566930b.04012...@posting.google.com>...

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

unread,
Jan 29, 2004, 7:31:19 AM1/29/04
to
glef...@alcyone.fr (glefranc) wrote in message news:<b566930b.04012...@posting.google.com>...

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

unread,
Nov 2, 2010, 5:33:04 PM11/2/10
to
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éponse
précédente).
En PHP, ça donne ça :

/**
* Calcule et retourne le Versement p

fragbis

unread,
Nov 2, 2010, 5:39:04 PM11/2/10
to
glefranc a écrit le 26/01/2004 à 12h21 :
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 vous l'utiliser hors d'une
classe, enlevez "static") :

/**
* Calcule et retourne le Versement périodique d'un remboursement ou d'un
loyer.
* @param $tx, Intérêt. Il est souvent donné annuellement (le diviser par 12
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 à dire
la valeur future (si omise la valeur est = 0)
* @param $typeRembt, 1 si paiement en début de période (généralement les
emprunts hypothécaires), 0 sinon (valeur par défaut)
* @return double < 0
*/
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))
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

unread,
Nov 2, 2010, 5:51:00 PM11/2/10
to
fragbis a écrit le 02/11/2010 à 22h39 :
> glefranc a écrit le 26/01/2004 à 12h21 :
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 que
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 à adapter
dans les autres langages.

b3r...@gmail.com

unread,
Jun 29, 2020, 11:27:13 AM6/29/20
to
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.
0 new messages