Bonjour,

Je ne le souhaite à personne, mais certains d’entre vous vont un jour être confronté à un petit problème : convertir un fichier de configuration excel en PHP. Si les calculs dans ce fichier restent simple, alors ça ne pose pas de soucis, on trouve rapidement les équivalent des fonctions Excels basiques en PHP, comme ARRONDI.INF ou SUM. Mais dès que l’on va un peu plus loin dans les formules excels, là, c’est la catastrophe.

En effet, excel est un logiciel très poussé pour tout ce qui concerne les calculs financiers, et il suffit qu’une des fonctions disponibles dans la librairie financière soit utilisée pour que PHP ne suive plus dans ses fonctions. Il m’est arrivé ce problème aujourd’hui et les réponses sont quasi inexistantes sur google. Après quelques heures de lutte acharnées, de recherche infructueuses et de remémoration de mes cours de terminal S qui remontent bien loins, j’ai réussi à traduire les 3 fonctions les plus utilisées de cette bibliothèque.

Fonction VPM

Cette fonction calcule le remboursement d’un emprunt sur la base de remboursements et d’un taux d’intérêt constants. Retrouvez la documentation de la fonction VPM sous Excel.


function vpm($taux, $npm, $va, $vc = 0, $type = 0){
if(!is_numeric($taux) || !is_numeric($npm) || !is_numeric($va) || !is_numeric($vc) || !is_numeric($type)):
return false;
endif;

if($type > 1|| $type < 0):
return false;
endif;

$tauxAct = pow(1 + $taux, -$npm);

if((1 - $tauxAct) == 0):
return 0;
endif;

$vpm = ( ($va + $vc * $tauxAct) * $taux / (1 - $tauxAct) ) / (1 + $taux * $type);
return -$vpm;
}

Fonction VA

Cette fonction calcule la valeur actuelle d’un investissement. La valeur actuelle correspond à la somme que représente aujourd’hui un ensemble de remboursements futurs. Par exemple, lorsque vous faites un emprunt, le montant de l’emprunt représente la valeur actuelle pour le prêteur. Retrouvez la documentation de la fonction VA sous Excel.


function va($taux, $npm, $vpm, $vc = 0, $type = 0){
if(!is_numeric($taux) || !is_numeric($npm) || !is_numeric($vpm) || !is_numeric($vc) || !is_numeric($type)):
return false;
endif;

if($type > 1|| $type < 0):
return false;
endif;

$tauxAct = pow(1 + $taux, -$npm);

if((1 - $tauxAct) == 0):
return 0;
endif;

$va = $vpm * (1 + $taux * $type) * (1 - $tauxAct) / $taux - $vc * $tauxAct;
return $va;
}

Fonction TAUX

Calcule le taux d’intérêt par période d’un investissement donné. La fonction TAUX est calculée par itération et peut n’avoir aucune solution ou en avoir plusieurs. Retrouvez la documentation de la fonction Taux sous Excel.

function taux($nper, $pmt, $pv, $fv = 0.0, $type = 0, $guess = 0.1) {

$rate = $guess;
if (abs($rate) < 20):
$y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
else:
$f = exp($nper * log(1 + $rate));
$y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
endif;
$y0 = $pv + $pmt * $nper + $fv;
$y1 = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;

$i = $x0 = 0.0;
$x1 = $rate;
while ((abs($y0 - $y1) > 0.0000001) &amp;amp;&amp;amp; ($i < 20)):
$rate = ($y1 * $x0 - $y0 * $x1) / ($y1 - $y0);
$x0 = $x1;
$x1 = $rate;

if(abs($rate) < 0.0000001):
$y = $pv * (1 + $nper * $rate) + $pmt * (1 + $rate * $type) * $nper + $fv;
else:
$f = exp($nper * log(1 + $rate));
$y = $pv * $f + $pmt * (1 / $rate + $type) * ($f - 1) + $fv;
endif;

$y0 = $y1;
$y1 = $y;
++$i;
endwhile;

return $rate;
}

Je ne sais pas pour vous, mais je suis à deux doigts de l’indigestion. Mais en tous les cas, j’espère avoir évité à quelqu’un d’entre vous des heures de recherches inutiles.

Bon courage !