Il est souvent frustrant de constater que de nombreuses fonctions financières sophistiquées sont disponibles dans les tableurs les plus populaires, mais qu'elles deviennent beaucoup plus difficiles à reproduire lorsqu'on souhaite les utiliser dans un programme informatique. Des logiciels tels que Lotus 1-2-3, Quattro Pro et leurs successeurs modernes offrent une vaste collection de fonctions prêtes à l'emploi permettant d'effectuer des calculs financiers complexes en quelques secondes. Pourtant, lorsqu'un développeur désire intégrer ces mêmes calculs dans une application Delphi, Kylix ou Lazarus, il doit généralement recréer lui-même les formules et les mécanismes mathématiques qui se cachent derrière ces outils.
Parmi ces fonctions particulièrement utiles figure la fonction PPaymt, connue sous le nom de « Principal Payment » en anglais ou simplement « Principal » dans certaines versions françaises des tableurs. Cette fonction permet de déterminer la portion d'un versement qui est réellement appliquée au remboursement du capital emprunté. En effet, dans la plupart des prêts, chaque paiement périodique est constitué de deux composantes distinctes : une partie destinée au paiement des intérêts et une autre servant à réduire le solde du prêt. La fonction PPaymt permet précisément de calculer cette seconde composante.
Cet outil est très utilisé dans les domaines de la finance, de la comptabilité, de la gestion hypothécaire et de l'analyse de prêts. Il permet de comprendre comment un emprunt évolue au fil du temps et d'observer la progression du remboursement du capital. Dans les premières périodes d'un prêt, une grande partie du paiement est généralement consacrée aux intérêts, tandis que la portion affectée au capital augmente graduellement à mesure que le solde diminue. La fonction PPaymt offre ainsi une vision détaillée de cette répartition.
Le programme Delphi présenté ci-dessous reproduit le fonctionnement de cette fonction financière en s'appuyant sur plusieurs calculs intermédiaires, notamment la valeur future d'un emprunt et le montant des versements périodiques. Grâce à cette approche, il devient possible de déterminer avec précision quelle partie d'un paiement contribue réellement à réduire la dette. Les exemples fournis illustrent le calcul du remboursement du capital pour différents scénarios de financement, notamment un prêt de 10 000 dollars avec versements trimestriels et un prêt hypothécaire de 100 000 dollars remboursé mensuellement. À l'aide de ce code source Delphi suivant, vous trouverez la réponse que vous souhaitez tout en découvrant les principes mathématiques qui permettent aux tableurs d'effectuer automatiquement ce type d'analyse financière avancée :
- Program PPaymtSource;
-
- {$APPTYPE CONSOLE}
-
- Uses SysUtils;
-
- Function FVal(Rate,Nper,Pmt,PV,PType:Real):Real;
- Var
- F:Real;
- Begin
- F:=Exp(NPer*Ln(1+Rate));
- If Abs(Rate)<1E-6Then
- FVal:=-Pmt*Nper*(1+(Nper-1)*Rate/2)*(1+Rate*PType)-PV*F
- Else
- FVal:=Pmt*(1-F)*(1/Rate+PType)-PV*F;
- End;
-
- Function Paymt(Rate,NPer,PV,FV,PType:Real):Real;
- Var
- F:Real;
- Begin
- F:=Exp(Nper*Ln(1+Rate));
- Paymt:=(FV+PV*F)*Rate/((1+Rate*PType)*(1-F));
- End;
-
- Function PPaymt(Rate,Per,NPer,PV,FV,PType:Real):Real;
- Var
- F:Real;
- Begin
- F:=Paymt(Rate,NPer,PV,FV,PType);
- PPaymt:=F-Rate*FVal(Rate,Per-PType-1,F,PV,PType);
- End;
-
- BEGIN
- WriteLn('Exemple de versements trimestriels d''un prêt de 10 000$ à 15% par trimestre:');
- WriteLn(PPaymt(0.15/4,24,40,10000,0,1):3:3,'$');
- WriteLn('Exemple de versements d''un prêt de 100 000$ à 10% par mois:');
- WriteLn(PPaymt(0.1/12,2*12,30*12,100000,0,0):3:3,'$');
- END.
on obtiendra le résultat suivant :
Exemple de versements trimestriels d'un prêt de 10 000$ à 15% par trimestre:-233.243
Exemple de versements d'un prêt de 100 000$ à 10% par mois:
-53.542