Il est souvent frustrant de constater que certaines formules financières, parfaitement intégrées aux grands tableurs comme Lotus 1-2-3 et Quattro Pro, permettent d'obtenir instantanément des résultats complexes alors qu'il devient beaucoup plus difficile de reproduire les mêmes calculs dans un programme développé sur mesure. Parmi ces fonctions particulièrement utiles figure la fonction IPaymt (ou Intérêt dans la version française), qui sert à déterminer la portion des intérêts comprise dans un versement donné d'un prêt ou d'un emprunt. Bien que cette fonction soit disponible directement dans plusieurs tableurs, son algorithme interne demeure souvent méconnu des programmeurs désirant l'intégrer à leurs propres applications. Heureusement, il est possible de recréer ce comportement à l'aide de quelques fonctions mathématiques relativement simples. Le code source QuickBASIC/QBasic présenté ci-dessous implémente non seulement la fonction IPAYMT, mais également les fonctions auxiliaires nécessaires au calcul de la valeur future d'un prêt ainsi qu'au calcul du montant périodique des versements. Grâce à ces routines, vous pourrez reproduire fidèlement les résultats obtenus dans les logiciels de feuille de calcul et les intégrer directement dans vos propres programmes financiers. L'exemple fourni démontre le calcul des intérêts correspondant à un prêt hypothécaire de 200 000 dollars amorti sur 30 ans à un taux annuel de 15 %, permettant ainsi de vérifier facilement l'exactitude de l'algorithme et de mieux comprendre le fonctionnement des calculs d'amortissement.
A l'aide du code source QuickBASIC/QBasic suivant, vous trouverez la réponse que vous souhaitez :
- DECLARE FUNCTION FVal! (Rate!, NPer!, pmt!, PV!, PType!)
- DECLARE FUNCTION Paymt! (Rate!, NPer!, PV!, FV!, PType!)
- DECLARE FUNCTION IPAYMT! (Rate!, Per!, NPer!, PV!, FV!, PType!)
-
- PRINT "Prêt hypothécaire de 30 ans à 15% de 200 000$:"
- PRINT STR$(IPAYMT(.15 / 12!, 2! * 12!, 30! * 12!, 200000!, 2!, 0!))
-
- FUNCTION FVal (Rate, NPer, pmt, PV, PType)
- F = EXP(NPer * LOG(1! + Rate))
- IF ABS(Rate) < .000001 THEN
- FVal = -pmt * NPer * (1! + (NPer - 1!) * Rate / 2!) * (1! + Rate * PType) - PV * F
- ELSE
- FVal = pmt * (1 - F) * (1 / Rate + PType) - PV * F
- END IF
- END FUNCTION
-
- FUNCTION IPAYMT (Rate, Per, NPer, PV, FV, PType)
- IPAYMT = Rate * FVal(Rate, Per - PType - 1!, Paymt(Rate, NPer, PV, FV, PType), PV, PType)
- END FUNCTION
-
- FUNCTION Paymt (Rate, NPer, PV, FV, PType)
- F = EXP(NPer * LOG(1! + Rate))
- Paymt = (FV + PV * F) * Rate / ((1 + Rate * PType) * (1! - F))
- END FUNCTION
on obtiendra le résultat suivant :
Prêt hypothécaire de 30 ans à 15% de 200 000$:-2490.45$