Application d’APL*PLUS III versions 1.1 & 1.2

à un simple problème de prêt

par Daniel Massi

 

 

SOMMAIRE

 

1. Emprunt indivis remboursable par annuités constantes à terme échu  42

2. Remarques et hypothèses .......................... 42

3. Problème et Questions ............................ 42

4. Approche méthodologique........................... 43

4.1.  ENTRÉES : Données à introduire ................ 45

4.1.1. Premier Groupe ............................... 45

4.1.2. Deuxième Groupe  ............................. 45

4.1.3. Le Principe  3 ==> 4 ......................... 45

4.1.4. L’Autre Champ ................................ 46

4.2.  SORTIES : Fenêtres à constituer ............... 46

4.2.1. Fenêtre a .................................... 46

4.2.2. Fenêtre b .................................... 46

4.2.3. Descriptif de la fonction  FmAcPr ............ 47

4.2.4. Explications ................................. 47

4.3.  TRAITEMENT : Fonctions  « CallBack » .......... 50

4.3.1. Lancement de l’Application Emprunt ........... 50

4.3.2. Déclenchement d’un Événement ................. 51

4.3.3. Réponse à un Événement ....................... 51

4.3.3.1.  La fonction CallBack   FnAcPr1 ............ 51

4.3.4. Les Boutons .................................. 52

4.3.4.1.  bouton b n 1 .............................. 52

4.3.4.2.  bouton b n 2 .............................. 52

4.3.4.3.  bouton b n 3 .............................. 52

4.3.5. Les Fonctions Annexes ........................ 56

4.3.5.1.  Fonction  FnAcDt .......................... 56

4.3.5.2.  Fonction  FnAcKc .......................... 56

4.3.5.3.  Fonction  FnAcTx .......................... 58

4.3.5.4.  Fonction  FnAcTy .......................... 59

4.3.5.5.  Fonction  Ani ............................. 60

4.3.5.6.  Fonction  Sni ............................. 60

4.3.5.7. Relations remarquables ..................... 60

4.3.5.8.  Fonction  FnSais .......................... 61

4.3.5.9.  Fonction  FnPrin .......................... 62

4.3.6. Les Utilitaires .............................. 63

4.3.6.1.  Forme FmMsg ............................... 63

4.3.6.2.  Fonction de Lancement et d’Affichage ...... 64

4.3.6.3.  Fonction d’Effacement de la fenêtre ....... 64

5. Le Menu et les Commandes attachées ............... 64

5.1.  Menu ‘File’.................................... 64

5.2.  Menu ‘Calculs’................................. 64

6. Conclusion........................................ 65

BIBLIOGRAPHIE........................................ 65

A  N  N  E  X  E..................................... 66

 

 

1. Emprunt indivis remboursable par annuités constantes à terme échu

 

Dans la gamme étendue des prêts, plans d'épargne et autres plans de remboursement obligataires, choisissons d'effectuer un petit tour dans ce que les financiers ont coutume de dénommer ainsi.

 

Le problème est simple à mettre en œuvre : sa résolution a, alors, pour seule ambition de montrer une utilisation très concrète, mais, oh! combien puissante!, d' APL III, v1.1.

 

2. Remarques et hypothèses

Pour ne pas obvier au propos de l’article et, partant, alourdir la présentation, plusieurs hypothèses ont volontairement été posées :

 

H1.- La saisie des montants s’effectue sous le format exclusif : 99999999.99, c’est-à-dire  sans espace, ni séparateur de milliers, mais avec l'utilisation du point décimal.

H2.- Le taux saisi se présente sous le format exclusif  en %  : 99.99

         H3.- Le taux saisi sera recalculé, en fonction du type de l'annuité et du mode de calcul, c’est-à-dire en taux Équivalent, ou en taux Proportionnel.

H4.- Les données peuvent  être introduites en notation scientifique, de façon à ne pas se tromper dans le nombre de zéros à introduire :

1E6 = 1 million ; 1.1E6 = 1.100.000,00 ; 1.23E9 = 1.230.000.000,00

(la lettre E est obligatoirement en Majuscule)

H5.- Le taux à 0 % est le taux minimum imposé.

 

3. Problème et Questions

Ce problème de prêt peut se poser en ces termes :

 

 – J'emprunte un montant de K  Francs, au taux de i % l'an, qui sera  remboursé pendant  n annuités consécutives et constantes : quel sera, alors,  le   montant  a  de l'annuité à rembourser pour chaque période ? 

  Puis-je avoir un Plan de Remboursement  ? 

  Puis-je ajuster l’un des paramètres ?

 

Au-delà de cette mise en œuvre, nous pourrons aussi effectuer une simulation de certains paramètres, sous des contraintes déterminées.

 

Alors ?  Prêt à suivre le guide pas-à-pas .... pour partir vers d'autres aventures avec APL III, v1.1.?                                                

 

                 Allons.

 

4. Approche méthodologique

 

La séquence du travail à effectuer se décompose en trois étapes successives :

 

 

1.  Collationner les données nécessaires aux différents calculs :        les ENTRÉES.

2.  Constituer    les fenêtres destinées à l'affichage :                les SORTIES.

3.  Déterminer  les fonctions à écrire :                                        le TRAITEMENT.

 

La résolution du problème s'appuiera, tout au long de l'exposé, sur un écran unique, affiché dès le lancement de l’Application, et dont la représentation est proposée ci-après.

 

Cette image d'écran est constituée de deux parties:

 

       .. Fenêtre  a : permet de saisir et faire varier les informations nécessaires;

       .. Fenêtre  b : affiche le plan d'amortissement à la demande.

 

Le menu permet d’aligner des commandes destinées à fournir des calculs ponctuels – et qui pourront être implémentées dans de prochains numéros –.

 

La représentation des fenêtres peut prendre l’allure suivante :

 

 

4.1.  ENTRÉES : Données à introduire

 

Les données de base sont reparties en deux groupes logiques d’inégale importance :

4.1.1. Premier Groupe

Le premier groupe comprend les données obligatoires, nécessaires aux calculs :

 

Montant  du  prêt :  exprimé en Francs et/ou centimes, quelle que soit la
                                   monnaie :
Voir H1 et H4.

 

Nombre  d'annuités  :   nombre entier

 

Taux annuel du Prêt  : exprimé en %. Voir H2, H3 et H5.

 

Montant de l'Annuité : exprimé dans la même unité monétaire que le montant
                                  du prêt, et dans le même format.
Voir H1 et H4.

 

- Type de l'annuité : à choisir éventuellement dans la table correspondante car la valeur   « Annuité,  Équivalent » est choisie par défaut.

Le substantif     "annuité"   est un terme générique désignant une suite de règlements effectués à intervalles de temps égaux.  La fréquence de paiement s’étale de mensuelle à annuelle.  Cette suite de règlements constitue une « rente » pour celui qui en bénéficie.

 

4.1.2. Deuxième Groupe

 

 Le deuxième groupe est constitué simplement de :

 

.  Date de Départ : utilisée lors de l'établissement  du plan d’amortissement.

                            Sa forme est  JJ/MM/AA  ou JJ-MM-AA.

                            Si le champ n'est pas renseigné  :

                          les chiffres, allant de 1 à n, seront, alors, générés.

4.1.3. Le Principe  3 ==> 4

Dans une première approche, trois données seulement du premier groupe doivent être introduites : la quatrième sera alors calculée (Voir les formules de calcul, en Annexe).

Ultérieurement, nous pourrons simuler deux ou trois de ces paramètres en indiquant une fourchette ou une tendance.

 

Il est bien sûr possible de tenter plusieurs essais pour ajuster telle ou telle donnée

       – les trois données sont modifiables à l'infini,

       – mais la quatrième doit être effacée  avant chaque recalcul.

 

(Au moyen  de la touche de tabulation, ou par double-clic du bouton gauche de la souris, en ayant positionné, au préalable, le curseur n'importe où dans la zone : les chiffres sont sélectionnés ; puis, en appuyant sur la touche "DEL", effacés : il est alors possible d'appuyer à nouveau sur le bouton  " Calcul_4° ", avec génération d'une nouvelle valeur).

 

4.1.4. L’Autre Champ

 

Le Type de l'annuité est positionné, par défaut, sur "Annuel, Équivalent" :
le choix, s'il ne correspond pas au désir de l'emprunteur, doit s'effectuer par simple clic sur le libellé adéquat, en utilisant les touches fléchées.

 

4.2.  SORTIES : Fenêtres à constituer

 

Les données nécessaires aux calculs sont, à ce stade, connues.

Étudions la manière de les recevoir et de les traiter, au travers des différentes fonctions à écrire.

 

Les Fenêtres  a et b   sont crées, constituées et générées dans la fonction 

FmAcPr.

 

4.2.1. Fenêtre a

 

La Fenêtre  a  est destinée  à établir un dialogue avec l'utilisateur.

 

Elle est donc constituée de trois types de zone :

 

       .  Label : pour afficher un descriptif de la zone située en vis-à-vis.

 

       .  Edit   : destinée à recevoir  les données numériques.

[Ces binômes ont été  regroupés, au sein de la fonction, pour faciliter leur lecture et leur repérage]

 

       .  Liste  : pour sélectionner un libellé, sans risque de se tromper. 

4.2.2. Fenêtre b 

La  Fenêtre b ne servira qu'en fin de parcours puisqu’elle est destinée à recevoir le  Plan d'Amortissement.

4.2.3. Descriptif de la fonction  FmAcPr

 

L'image, représentée au paragraphe 4., et qui est celle qui s'affiche sur votre écran dès le lancement de la fonction, est créée par la fonction FmAcPr .

 

Elle génère une forme  fmAcPr constituée de :

 

Lignes     3 -   94          :  description de la forme : Fenêtre  a

Lignes     3 -     6          :  création de la forme

Lignes     8 -   24          :  description de la barre de menu : voir § 5.

                                      (Ici, s’ajouteront d’autres commandes à la demande).
         Lignes   26 -   83          :  description des zones de saisie (cf. § 4.1.).

Lignes   66 -   83          :  description des types d’annuités et de taux

Lignes   74 -   80          :  préparent la liste des libellés devant être

                                               affichée pour sélectionner le type d’annuité.

Lignes   96 - 109           :  description des trois boutons (cf. § 4.3.4.).

Lignes 110 - 139           :  description de l'en-tête du Plan de l'emprunt

Lignes 141 - 145           : description du corps du Plan devant recevoir 
                                                    les données du Plan : Fenêtre  b.

4.2.4. Explications

 

Le descriptif de la  "Forme"  a été écrit  sous  forme didactique, c'est-à-dire en ne présentant qu’un paramètre par ligne.

 

Cependant,  il  est possible de regrouper ces Propriétés sur une seule ligne ... en ajoutant  la  "Méthode  Set"  et en la portant juste après la Fonction Système  Œwi, comme indiqué dans les premières lignes de la fonction.

 

 ’ FmAcPr;M;N;Z

[1]   © 01-11-1995

[2]   'fmAcPr' Œwi 'Delete'

[3]   Œwself „ 'fmAcPr' Œwi 'New' 'Form' 'Close'

[4]   Œwi 'where' 0 0 30 80

[5]   Œwi 'caption' 'Prêt simple'

[6]   Œwi 'border' 113

[7]   

[8]   M „ (Œwself,'.mFile') Œwi 'New' 'Menu' 'Close'

[9]   M Œwi 'Set' ('caption' 'File')

[10]  N „(M,'.mVac') Œwi 'New' 'Menu' 'Close'

[11]  N Œwi 'Set' ('caption' 'Impression Tableau')

       ('onClick' 'FnPrin')

[12]  N „(M,'.mSep1') Œwi 'New' 'Menu' 'Close'

[13]  N  Œwi 'separator' 1

[14]  N „ (M,'.mQut') Œwi 'New' 'Menu' 'Close'

[15]  N Œwi 'Set' ('caption' 'Quit') ('onClick' 'FnAcKc')

[16]  

[17]  M „ (Œwself,'.mCalc') Œwi 'New' 'Menu' 'Close'

[18]  M Œwi 'Set' ('caption' 'Calculs')

[19]  N (M,'mVac')Œwi 'New' 'Menu' 'Close'

[20]  N Œwi 'Set' ('caption' 'Valeur Acquise') ('onClick''FbAcKc')

[21]  N (M,'.mSep1') Œwi 'New' 'Menu' 'Close'

[22]  N  Œwi 'separator' 1

[23]  N (M,'.mInt') Œwi 'New' 'Menu' ' Close'

[24]  N Œwi 'Set' ('caption' 'Total Intérêts') ('onClick''FnAcKc')

[25]

[26]  M „ (Œwself,'.lb1') Œwi 'New' 'Label' 'Close'

[27]  M Œwi 'where' .2 .2 .9 14

[28]  M Œwi 'style' 1

[29]  M Œwi 'caption' 'Montant du Prêt'

[30]  M Œwi 'font' 'Arial' 1 1

[31]  M „ (Œwself,'.ed1') Œwi 'New' 'Edit'

[32]  M Œwi 'where' .2 15.5 1.5 11

[33]  M Œwi 'style' 1

[34]  M Œwi 'font' 'Arial' 1 1

[35]  

[36]  M „ (Œwself,'.lb2') Œwi 'New' 'Label' 'Close'

[37]  M Œwi 'where' 2 .2 .9 15

[38]  M Œwi 'style' 1

[39]  M Œwi 'caption' 'Nombre d''annuités'

[40]  M Œwi 'font' 'Arial' 1 1

[41]  M „ (Œwself,'.ed2') Œwi 'New' 'Edit' 'Close'

[42]  M Œwi 'where' 2 15.5 1.5 6

[43]  M Œwi 'style' 1

[44]  M Œwi 'font' 'Arial' 1 1

[45]  

[46]  M „ (Œwself,'.lb3') Œwi 'New' 'Label' 'Close'

[47]  M Œwi 'where' .2 27 .9 17

[48]  M Œwi 'style' 1

[49]  M Œwi 'caption' 'Taux Annuel du Prêt'

[50]  M Œwi 'font' 'Arial' 1 1

[51]  M „ (Œwself,'.ed3') Œwi 'New' 'Edit' 'Close'

[52]  M Œwi 'where' .2 45 1.5 10

[53]  M Œwi 'style' 1

[54]  M Œwi 'font' 'Arial' 1 1

[55]  

[56]  M „ (Œwself,'.lb4') Œwi 'New' 'Label' 'Close'

[57]  M Œwi 'where' 2 27 .9 17

[58]  M Œwi 'style' 1

[59]  M Œwi 'caption' 'Montant de l''Annuité'

[60]  M Œwi 'font' 'Arial' 1 1

[61]  M „ (Œwself,'.ed4') Œwi 'New' 'Edit'

[62]  M Œwi 'where' 2 45 1.5 10

[63]  M Œwi 'style' 1

[64]  M Œwi 'font' 'Arial' 1 1

[65]  

[66]  M „ (Œwself,'.lb10') Œwi 'New' 'Label' 'Close'

[67]  M Œwi 'where' .2 60 .9 12

[68]  M Œwi 'style' 1

[69]  M Œwi 'caption' 'Type d''Annuités'

[70]  M Œwi 'font' 'Arial' .9 1

[71]  M „ (Œwself,'.ls10') Œwi 'New' 'List'

[72]  M Œwi 'where' 1.7 56 3.5 23

[73]  M Œwi 'style' 0

[74]  Z„'Annuel équivalent' 'Mensuel équivalent'

[75]  Z„Z,'Bimestriel équivalent' 'Trimestriel équivalent'

[76]  Z„Z,'Quadrimestriel équivalent' 'Semestriel équivalent'

[77]  Z„Z,'Annuel proportionnel' 'Mensuel proportionnel'

[78]  Z„Z,'Bimestriel proportionnel' 'Trimestriel proportionnel'

[79]  Z„Z,'Quadrimestriel proportionnel' 'Semestriel proportionnel'

[80]  Z„œZ

[81]  M Œwi 'list' Z

[82]  M Œwi 'value' 1

[83]  M Œwi 'font' 'Courier New' 1.05 1

[84]  

[85]  M „ (Œwself,'.lb11') Œwi 'New' 'Label' 'Close'

[86]  M Œwi 'where' 4.3 60 .9 17

[87]  M Œwi 'style' 1

[88]  M Œwi 'caption' 'Date de Départ J/M/A'

[89]  M Œwi 'font' 'Arial' 1 1

[90]  M „ (Œwself,'.ed11') Œwi 'New' 'Edit'

[91]  M Œwi 'where' 5.3 60 1.4 13

[92]  M Œwi 'style' 0

[93]  M Œwi 'text' (' ')

[94]  M Œwi 'font' 'Courier New' 1.1 1

[95]  

[96]  M „ (Œwself,'.bn1') Œwi 'New' 'Button' 'Close'

[97]  M Œwi 'caption' 'Exit'

[98]  M Œwi 'where' 4 .2 1.5 7

[99]  M Œwi 'onClick' 'FnAcPr1'

[100]

[101] M „ (Œwself,'.bn2') Œwi 'New' 'Button' 'Close'

[102] M Œwi 'caption' 'Calcul 4°'

[103] M Œwi 'where' 4 8.2 1.5 11

[104] M Œwi 'onClick' 'FnAcPr1'

[105]

[106] M „ (Œwself,'.bn3') Œwi 'New' 'Button' 'Close'

[107] M Œwi 'caption' 'Tableau Amt'

[108] M Œwi 'where' 4 20 1.5 11

[109] M Œwi 'onClick' 'FnAcPr1'

[110]

[111] M „ (Œwself,'.lb5') Œwi 'New' 'Label' 'Close'

[112] M Œwi 'where' 8 .1 1 6

[113] M Œwi 'style' 1

[114] M Œwi 'caption' 'Date'

[115] M Œwi 'font' 'Arial' 1 1

[116]

[117] M „ (Œwself,'.lb6') Œwi 'New' 'Label' 'Close'

[118] M Œwi 'where' 8 13 1 15

[119] M Œwi 'style' 1

[120] M Œwi 'caption' 'Capital restant dû'

[121] M Œwi 'font' 'Arial' 1 1

[122]

[123] M „ (Œwself,'.lb7') Œwi 'New' 'Label' 'Close'

[124] M Œwi 'where' 8 30 1 12

[125] M Œwi 'style' 1

[126] M Œwi 'caption' 'Amortissement'

[127] M Œwi 'font' 'Arial' 1 1

[128]

[129] M „ (Œwself,'.lb8') Œwi 'New' 'Label' 'Close'

[130] M Œwi 'where' 8 47 1 12

[131] M Œwi 'style' 1

[132] M Œwi 'caption' 'Intérêt'

[133] M Œwi 'font' 'Arial' 1 1

[134]

[135] M „ (Œwself,'.lb9') Œwi 'New' 'Label' 'Close'

[136] M Œwi 'where' 8 64 1 9

[137] M Œwi 'style' 1

[138] M Œwi 'caption' 'T O T A L'

[139] M Œwi 'font' 'Arial' 1 1

[140]

[141] M „ (Œwself,'.ls1') Œwi 'New' 'List' 'Close'

[142] M Œwi 'where' 9 .1 18 80

[143] M Œwi 'style' 0

[144] M Œwi 'list' ' '

[145] M Œwi 'font' 'Courier New' 1.05 1

    

4.3.  TRAITEMENT : Fonctions  « CallBack »

 

Le but de l'étude et la manière de procéder étant connus, nous pouvons aborder la réalisation de l'œuvre,  pas-à-pas.

 

4.3.1. Lancement de l’Application Emprunt

 

– La fonction FnAcPr, (dont le nom peut se trouver, à la fois, dans ŒLX –pour un lancement automatique lors d’un double-clic sur l’icône– et/ou dans une touche de fonction Ctrl Fx –créée dans Option / Tools, Add suivi de Lx Ctrl+F1 dans ‘Menu Item’ et lx dans ‘Command’...–), permet de lancer les opérations :

elle affiche la forme fmAcPr et se met en attente d'une action de l'utilisateur.

 

    ’ FnAcPr

[1]   © 03-11-1995

[2]   Œio„1

[3]   0 0½Œex 'K a i n t p'

[4]   Œpw„55

[5]   FmAcPr

[6]   FmMsg

[7]   

[8]   'fmAcPr' Œwi 'Open'

[9]   'fmAcPr.ed1' Œwi 'Focus'

[10]  0 0½Œex 'K a i n t p'

    

 

  Les lignes 5 et 6 exécutent les fonctions de création des Formes et les rendent disponibles pour une utilisation ultérieure.

– La ligne 8 rend opérationnelle  la forme  fmAcPr, et permet d'afficher les fenêtres visualisées au paragraphe 4.,

– La ligne 9 permet de positionner le curseur dans le champ  'Montant du prêt'.

 

4.3.2. Déclenchement d’un Événement

 

Lorsque les fenêtres sont affichées, la main est alors donnée à l'utilisateur.

 

Il peut se servir, soit de la souris, soit du clavier; et son action déclenche alors un événement qui est traité comme suit :

 

- Le clavier sera tout d'abord être sollicité pour qu’il puisse introduire ses données.

                Les champs respectifs sont alors renseignés : trois sur quatre ; plus le cinquième, si besoin est.

- La souris sera alors utilisée pour actionner l'un des trois boutons, à travers le simple clic de  son bouton gauche, ou, toujours le clavier, avec la touche de tabulation.

 

4.3.3. Réponse à un Événement

 

Une action a été déclenchée : clavier ou souris.

Comment traiter cet événement et quelles réponses sont apportées ?

 

Cet événement a permis d'activer la fonction CallBack FnAcPr1 qui est chargée de répondre à la sollicitation.

(Pour éviter le test de la variable système Œwself, il est possible de créer une fonction par événement ; ce choix n’a pas été retenu ici pour des raisons de place, mais il est évident que cela simplifie le travail, et permet de réutiliser ces fonctions dans d’autres WS, pour d'autres causes.).

 

4.3.3.1.  La fonction CallBack   FnAcPr1

 

Cette fonction concentre les réponses à toutes les sollicitations.

 

Elles sont au nombre de trois et répondent à l'enfoncement  d'un des trois boutons qui sont situés dans la fenêtre  a.

 

Le moyen de déterminer quel est le bouton enfoncé est de tester la variable-système Œwself, qui fournit l'information utile :  quel événement  en a été le déclencheur ?

 

Ici, les déclencheurs sont dénommés  bn1, bn2 et bn3 pour les trois boutons de la forme, et sont présentés dans le paragraphe suivant.

4.3.4. Les Boutons

 

Chaque bouton a une action spécifique qui a été distribuée lors de la conception du projet : le libellé (‘caption’) permet de préciser cette action à l’utilisateur.

4.3.4.1.  bouton b n 1

 

Le bouton bn1  "Exit"  permet d'arrêter l'exécution du programme, de fermer toutes les formes précédemment ouvertes,  et de revenir à APL III. Il est traité aux lignes 4 à 6.

4.3.4.2.  bouton b n 2

 

Le bouton bn2  "Calcul 4° " permet de calculer et d'afficher la valeur du quatrième paramètre qui est resté vide d'information.

 

Le traitement va déterminer et colorier le champ calculé pour le distinguer des champs initiaux.

 

Il est traité aux lignes 8 à 59.

 

– La ligne 9 permet l'appel à la fonction de saisie et de contrôle des cinq      champs. 

   Elle renvoie la valeur zéro si aucune erreur n'a été détectée, et a initialisé les

   variables K, a, n et i.

 

– Les lignes 11 à 59 permettent de calculer la valeur 'manquante' :

 

Þ    11 à 22 pour la montant de l'annuité,

Þ    24 à 35 pour le montant du prêt

Þ    37 à 51 pour le nombre d'annuités

Þ    53 à 59 pour la valeur du taux annuel.

 

 

4.3.4.3.  bouton b n 3

 

Le bouton bn3  "Tableau Amt" permet de lancer la constitution et l'affichage du Plan d'Amortissement de l'emprunt. Il est traité aux lignes 61 à 106.

– La ligne 62 permet l'appel à la fonction de saisie et de contrôle des cinq champs. Elle renvoie la valeur zéro si aucune erreur n'a été étectée, et a initialisé les variables K, a, n, i  et p.

 

– Les lignes  63 - 80  initialisent les valeurs nécessaires à la génération du tableau.

 

  La ligne 79   génère soit les nombres de 1 à n –nombre d'annuités–, soit les dates de remboursement, calculées  à partir du quatrième champ, si la date de départ est présente, et valide, dans le champ 5.

 

  Lignes 81 - 103 effectuent les calculs nécessaires à la constitution du corps du tableau, et le présente à la visualisation.

 

 

Afin de minimiser les erreurs dues aux arrondis, les calculs doivent être effectués dans un ordre précis :

 

Þ   la première ligne du tableau est d'abord calculée; les colonnes 2, 'Capital Restant Dû', et 3, 'Amortissement', sont ensuite         déterminées;

 

Þ   la colonne 4, 'Intérêts', est la différence, par ligne, des deux précédentes      colonnes;

 

Þ   la colonne 5 reçoit le montant de l'annuité.

 

  La ligne 98 met le tableau numérique sous forme de caractères, c'est-à-dire      propre à être visualisé et/ou édité;

 

  La ligne  100  s'occupe de l'affichage du tableau dans la fenêtre b.

 

L'impression du tableau ne doit poser aucun problème :

 

. Il est possible d'imprimer le tableau en direct, au moyen de la commande « Impression Tableau » du menu « File » : voir § 5.

 

. Il est peut-être plus intéressant de porter le tableau, au moyen d'un DDE,          

       * dans une feuille de tableur de type EXCEL,

       *  et, toujours à partir d'APL III, d'agrémenter et compléter

           l'environnement  du tableau proprement dit, avant son édition.

 

 ’ FnAcPr1;D;F;G;J;S;T;X;Y;Œio

[1]   © 01-11-1995

[2]   Œio„1 ª S„¯3†G„Œwself

[3]   :SELECT S

[4]      :CASE 'bn1'

[5]         0 0½Œex 'K a i n t p'

[6]         '#' Œwi 'Reset'

[7]   

[8]      :CASE 'bn2'

[9]         …(FnSais 1)/0

[10]  

[11]        :IF 0 = ½a

[12]           :IF 0 = i

[13]              a „ 0.005 + K ÷ n

[14]           :ELSE

[15]              i „ .01 × i

[16]              i „ FnAcTx (t n i)

[17]              a „ –15 2•  K ÷ Ani n i

[18]           :ENDIF

[19]           ((7†G),'ed4') Œwi 'text' ((15 2•a)~' ')

[20]           ((7†G),'ed4') Œwi 'color' 0 255 0

[21]           …0

[22]        :ENDIF

[23]  

[24]        :IF 0 = ½K

[25]           :IF 0 = i

[26]              K „ a × n

[27]           :ELSE

[28]              i „.01 × i

[29]              i „ FnAcTx (t n i)

[30]              K „ –15 2• a × Ani n i

[31]           :ENDIF

[32]           ((7†G),'ed1') Œwi 'text' ((15 2•K)~' ')

[33]           ((7†G),'ed1') Œwi 'color' 0 255 0

[34]           …0

[35]        :ENDIF

[36]  

[37]        :IF 0 = ½n

[38]           :IF 0 = i

[39]              n „ ˜ K ÷ a

[40]           :ELSE

[41]              i „.01 × i ª i „ FnAcTx (t t i)

[42]              :IF 0 > 1 - K×i÷a

     [43] FnMsg1 (31†'  Impossible. Changer la'),(31†'valeur d''un des paramètres'),31†'pour le calcul de n'

[44]                 …0

[45]              :ENDIF

[46]       n „ –15 0• ˜ .5+( - µ (1- ((K×i)÷a))) ÷ µ (1 + i)

[47]           :ENDIF

[48]           ((7†G),'ed2') Œwi 'text' ((15 0•n)~' ')

[49]           ((7†G),'ed2') Œwi 'color' 0 255 0

[50]           …0

[51]        :ENDIF

[52]  

[53]        :IF 0 = ½i

[54]           i „ .01

[55]           i „ ¯1†FnKaTx (K a n i)

[56]           i „  FnAcTy (t n i)

[57]           ((7†G),'ed3') Œwi 'text' ((15 2• 100 × – 6†•i)~' ')

[58]           ((7†G),'ed3') Œwi 'color' 0 255 0

[59]        :ENDIF

[60]  

[61]     :CASE 'bn3'

[62]        …(FnSais 2)/0

[63]        i „ .01 × i

[64]        Y „ 1 + i „ FnAcTx (t n i)

[65]        p„((n+1),7)½0

[66]        D„((7†G),'ed11') Œwi 'text'

[67]        :IF D^.=' '

[68]           p[¼n;3]  „ ¼n

[69]        :ELSE

[70]           D[(~D¹Œav[48+¼10])/¼½D]„' '

[71]           :IF 3 ¬ ½D„–D

[72] FnMsg1 (30†'Date incertaine ou incorrecte.'),(30†'Retaper la Date sous la forme'),30†'JJ/MM/AA ou J         J-MM-AA.'

[73]              …0

[74]           :ENDIF

[75]           :IF ~^/1 1 ³ </D°.<3 2½ 1 32 1 13 80 99

[76] FnMsg1 (30†' Date fausse.'),(30†'Retaper la Date sous la forme'),30†'JJ/MM/AA ou JJ-MM-AA.'

[77]              …0

[78]           :ENDIF

[79]           p[¼n;1 2 3] „ FnAcDt(n D t)

[80]        :ENDIF

[81]        p[1;4] „ K

[82]        p[¼n;7]  „ a

[83]        p[1;6] „ –15 2•K × i

[84]        p[1;5] „ –15 2•-/p[1;7 6]

[85]        p[2;4] „ –15 2•-/p[1;4 5]

[86]        :FOR J :IN 2+¼n-2

[87]           :IF i=0

[88]              p[J;4] „ –15 2•  p[J-1;4] - a

[89]           :ELSE

[90]              p[J;4] „ –15 2•  a × Ani (n-J-1) i

[91]           :ENDIF

[92]        :ENDFOR

[93]        :FOR J :IN 1+¼n-1

[94]           p[J;5] „ –15 2• p[J-1;5] × Y

[95]           p[J;6] „ –15 2• a - p[J;5]

[96]        :ENDFOR

[97]        p[n;5] „  –15 2•p[n;5] +K-–15 2•+/p[¼n;5]

[98]        p[n;6] „  –15 2• -/p[n;7 5]

[99]        p[n+1;5] „  –15 2•+/p[¼n;5]

[100]       p[n+1;6] „+/p[¼n; 6]

[101]       p[n+1;7] „+/p[¼n; 7]

[102]       p„•p[;1 2 3],'4K2G<ZZZ.ZZZ.ZZZ,Z9 >'Œfmt  p[;3+¼4]

[103]        p[n+1;¼9]„'T O T A L'

[104]       ((7†G),'ls1') Œwi 'list' p

[105]       …0

[106] :ENDSELECT

    

 

La fonction FnMsg1 permet de prévenir l’utilisateur d’une anomalie détectée ou d’une impossibilité de continuer le traitement du fait de la rencontre d’une valeur erronée ou hors limites.

 

 

4.3.5. Les Fonctions Annexes

4.3.5.1.  Fonction  FnAcDt

 

La fonction FnAcDt  permet de générer toutes les dates pour la première colonne du plan d'amortissement.

Pour rester dans le droit fil de notre propos et ne pas alourdir la présentation, JJ est supposé être au plus égal à 28 : des contrôles de structures doivent être introduits pour traiter un JJ supérieur à 28 en fonction du mois et du caractère  bissextile de l'année traitée.

 

    ’ R„FnAcDt P;A;B;F;I;J;K;M;N;S;T;V;X;Z

[1]   © 03-11-1995

[2]   X„12 3½'JanFévMarAvrMaiJuiJulAoûSepOctNovDéc'

[3]   (J M A)„2œP ª S„1œP ª F„3œP

[4]   Z„12 1 2 3 4 6 12 1 2 3 4 6[3œP]

[5]   T„12½1 12 6 4 3 2

[6]   K„S½J

[7]   V„(M-Z)+Z×¼12÷Z

[8]   N„ S½V-12×V>12

[9]   B„100|A,A++™(¯1‡N)‰1‡N

[10]  :FOR I :IN ¼S

[11]     N[I] „ ›X[N[I];]

[12]  :ENDFOR

[13]  R„³K®N,[0.5]B

    

4.3.5.2.  Fonction  FnAcKc

 

La fonction FnAcKc permet de calculer, pour l’instant, deux valeurs :

-  la Valeur Acquise, par rapport à une date donnée, par un montant  K francs,  n années plus tard  et au taux constant de i % l'an.

- le Total des Intérêts qui aura été versé au terme habituel de l’emprunt.

 

Elle est disponible dans le Menu, sous la rubrique "Calculs"

(ce menu est destiné à recevoir ultérieurement d'autres commandes, selon l'intérêt porté à ce propos).

 

      ’ FnAcKc;G;S

[1]   © 03-11-1995

[2]   G„Œwself ª S„G Œwi 'name'

[3]   :SELECT  S

[4]   :CASE 'mVac'

[5]       :IF 6 = +/Œnc 'K n i'

[6]           T K × (1+i)n

[7]           :IF 15 < ½•|˜T

[8] FnMsg1 (31†'Un des paramètres est'),(31'outrancier.'),31'Veuillez le corriger'

[9]           :ELSE

[10]          FnMsg1 (31La Valeur Acquise est de:'),,'K2G<ZZZ.ZZZ.ZZZ.ZZ9,99>'Œfmt T

[11]          :ENDIF

[12]      :ENDIF

[13]  :CASE 'mQut'

[14]      0 0 ½ Œex 'K n i a t'

[15]      '#' Œwi 'Reset'

[16]  :CASE 'mInt'

[17]      :IF 6 = +/Œnc 'K n a'

[18]          T (n × a) - K

[19]          :IF 15 < ½•|˜T

[20]    FnMsg1 (31†'Un des paramètres est'),(31'outrancier.'),31Veuillez le corriger'

[21]          :ELSE

[22]     FnMsg1 (31Le Total  des Intérêts payés'), 31'est de',,'K2G<ZZZ.ZZZ.ZZZ.ZZ9,99>'Œfmt T

[23]

[24]          :ENDIF

[25]      :ENDIF

[26]

[27]  :ENDSELECT

       

La ligne 5 s'assure de la présence des trois valeurs nécessaires aux calculs :

- le montant,

- le nombre d'annuités,

- le taux par période.

 

Les lignes 8 et 20 indiquent à l’utilisateur que l’une des valeurs saisies ne permet pas de calculer correctement la valeur demandée : il suffit de saisir une nouvelle valeur et de relancer la commande.

4.3.5.3.  Fonction  FnAcTx

 

La fonction FnAcTx  est utilisée dans le calcul d'un taux dont l'annuité ne correspond pas à une année (prise ici comme type d'annuité par défaut) :

ce taux est le taux, équivalent ou proportionnel, choisi et remplace le taux annuel  i initial, dans les formules (voir Annexe).

Les données en entrée sont le type d’annuités choisi, le nombre d’annuités et le taux de la période.

 

    ’ R„FnAcTx P

[1]   © 03-11-1995  t n i

[2]   P„,œP

[3]   :SELECT 1œP

[4]      :CASE 1

[5]         R„ 3œP

[6]      :CASE 2

[7]        R „ ¯1+(1+3œP)*÷12

[8]      :CASE 3

[9]         R „ ¯1+(1+3œP)*÷6

[10]     :CASE 4

[11]        R „ ¯1+(1+3œP)*÷4

[12]     :CASE 5

[13]        R „ ¯1+(1+3œP)*÷3

[14]     :CASE 6

[15]        R „ ¯1+(1+3œP)*÷2

[16]     :CASE 7

[17]        R„ (3œP) × Sni 1, 3œP

[18]     :CASE 8

[19]       R „ (3œP) × Sni (÷12), 3œP

[20]     :CASE 9

[21]       R „ (3œP) × Sni (÷6), 3œP

[22]     :CASE 10

[23]       R „ (3œP) × Sni (÷4), 3œP

[24]     :CASE 11

[25]       R „ (3œP) × Sni (÷3) ,3œP

[26]     :CASE 12

[27]       R „ (3œP) × Sni (÷2) ,3œP

[28]  :ENDSELECT

[29]  R „–17 8• R

    

4.3.5.4.  Fonction  FnAcTy

 

       La fonction FnAcTy  est utilisée en contrepoint de FnAcTx, dans le calcul d'un taux dont l'annuité ne correspond pas à une année, et le restitue sous forme de taux annualisé.

 

        ’ R„FnAcTy P

[1]   © 03-11-1995

[2]   P„,œP

[3]   :SELECT 1œP

[4]      :CASE 1

[5]         R„ 3œP

[6]      :CASE 2

[7]         R „¯1+(1+3œP)*12

[8]      :CASE 3

[9]         R „¯1+(1+3œP)*6

[10]     :CASE 4

[11]        R „¯1+(1+3œP)*4

[12]     :CASE 5

[13]        R „¯1+(1+3œP)*3

[14]     :CASE 6

[15]        R „¯1+(1+3œP)*2

[16]     :CASE 7

[17]        R„ 3œP

[18]     :CASE 8

[19]        R„ 12 × 3œP

[20]     :CASE 9

[21]        R„ 6 × 3œP

[22]     :CASE 10

[23]        R„ 4 × 3œP

[24]     :CASE 11

[25]        R„ 3 × 3œP

[26]     :CASE 12

[27]        R„ 2 × 3œP

[28]  :ENDSELECT

[29]  :IF R > 100

[30]    FnMsg1 (30†¯25†'Erreur.'),(30†'  Taux annuel supérieur à 100.'),¯10†'Ignorer.'

[31]    R „ 0

[32]  :ENDIF

[33]  R „ –15 8• R

    

4.3.5.5.  Fonction  Ani

 

Cette fonction permet de calculer  la Valeur actuelle de n versements de 1 F, et qui, divisée de K permet de calculer la valeur de l'annuité (voir formule en Annexe).

Les données en entrée sont le nombre d’annuités et le taux de la période.

 

    ’ R„Ani P

[1]   ©  03-11-1995   n i

[2]   R „ –15 8• (1 - (1 + 2œP) * -1œP) ÷ 2œP

    

4.3.5.6.  Fonction  Sni

 

Cette fonction permet de calculer  la Valeur Acquise par n versements de 1 F (voir formule en Annexe).

Les données en entrée sont le nombre d’annuités et le taux de la période.

 

   ’ R„Sni P

[1]   ©  01-11-1995    n i

[2]   R „ –15 8• (((1 + 2œP) * 1œP) - 1)  ÷ 2œP

    

4.3.5.7. Relations remarquables

 

Il est intéressant de noter que :

 

Ani P  =  ( 1 + i) * –n   ×   Sni P

 

Sni P  =  ( 1 + i) * n   ×   Ani P

 

i  =  (Ani P ) –1     (Sni P ) –1

 

4.3.5.8.           Fonction  FnSais

 

Cette fonction concerne la saisie et le contrôle des trois ou quatre données du premier groupe : voir § 4.1.1.

 

– Les lignes 3 à 6 initialisent la couleur des champs.

– Les lignes 8 à 21 traitent du montant K de l'emprunt  : lecture en 8, contrôles         ensuite, si le champ a une valeur significative et numérique.

– Les lignes 23 à 31 traitent du nombre n d'annuités : lecture en 23, contrôles      ensuite, si le champ a une valeur significative et numérique.

– Les lignes 33 à 41 traitent du taux i annuel : lecture en 33, contrôles ensuite, si      le champ a une valeur significative et numérique.

– Les lignes 43 à 51 traitent du montant a de l'annuité : lecture en 43, contrôles      ensuite, si le champ a une valeur significative et numérique.

– La ligne 53 s'occupe de récupérer le type d'annuité sous forme d'index.

– Les lignes 55 à 65 testent la présence ou l'absence des trois ou quatre zones obligatoires,     selon la valeur passée par la fonction appelante.

 

   ’ R„FnSais P;G;T;Œio

[1]   © 03-11-1995

[2]   Œio„R„1 ª G„Œwself

[3]   ((7†G),'ed1') Œwi 'color' 255 255 255

[4]   ((7†G),'ed2') Œwi 'color' 255 255 255

[5]   ((7†G),'ed3') Œwi 'color' 255 255 255

[6]   ((7†G),'ed4') Œwi 'color' 255 255 255

[7]   

[8]   K„((7†G),'ed1') Œwi 'text'

[9]   :IF 0 < ½K

[10]     :IF 0 < ½T„(Œvi K)/Œfi K

[11]        K „ T

[12]        :IF 99999999 < K

[13]        :ORIF 999 ‰ K

[14] FnMsg1 (31†¯25†'Attention !'),(31†'Le Montant doit être compris entre '),31†'1.000 et 99.999.999'

[15]           …0

[16]        :ENDIF

[17]     :ELSE

[18]        FnMsg1 (31†¯25†'Attention !'),(31†' Le Montant'),31†'n''est pas  numérique'

[19]        …0

[20]     :ENDIF

[21]  :ENDIF

[22]  

[23]  n„((7†G),'ed2') Œwi 'text'

[24]  :IF 0 < ½n

[25]     :IF 0 < ½T„(Œvi n)/Œfi n

[26]        n „ T

[27]     :ELSE

[28]        FnMsg1 (31†¯25†'Attention !'),(31†' Le nombre d''annuités'),31†'n''est pas numérique'

[29]        …0

[30]     :ENDIF

[31]  :ENDIF

[32]  

[33]  i„((7†G),'ed3') Œwi 'text'

[34]  :IF 0 < ½i

[35]     :IF 0 ˆ ½T„(Œvi i)/Œfi i

[36]        i „ T

[37]     :ELSE

[38]        FnMsg1 (31†¯25†'Attention !'),(31†' Le taux annuel'),31†'n''est pas numérique'

[39]        …0

[40]     :ENDIF

[41]  :ENDIF

[42]  

[43]  a„((7†G),'ed4') Œwi 'text'

[44]  :IF 0 < ½a

[45]     :IF 0 < ½T„(Œvi a)/Œfi a

[46]        a „ T

[47]     :ELSE

[48]        FnMsg1 (31†¯25†'Attention !'),(31†'L''annuité'),31†'n''est pas numérique'

[49]        …0

[50]     :ENDIF

[51]  :ENDIF

[52]  

[53]  t„(((7†G),'ls10') Œwi 'value')~' '

[54]  

[55]  :IF P = 1

[56]     :IF 3 ¬ +/(K>0),(n>0),(i‰0),a>0

[57]        FnMsg1 (31†¯25†'Attention !'),(31†'Il faut 3  paramétres sur 4'),31†'signicatifs.'

[58]        …0

[59]     :ENDIF

[60]  :ELSEIF P = 2

[61]     :IF 4 ¬ +/(K>0),(n>0),(i‰0),a>0

[62]      FnMsg1 (31†¯25†'Attention !'),(31†'Il faut les 4 paramétres'),31†'signicatifs.'

[63]        …0

[64]     :ENDIF

[65]  :ENDIF

[66]  R„0

 

4.3.5.9.  Fonction  FnPrin

Le Tableau d'Amortissement ayant été constitué, il est possible de l'imprimer, agrémenté d'un en-tête rappelant les paramètres introduits.

 

– La ligne 3  initialise la variable, devant recevoir le tableau destiné à être imprimé, de sept lignes à blanc pour l'en-tête, suivies du Plan d'Amortissement.

  Les lignes 4-7 créent l'en-tête.

  La ligne 9 lance l'ordre d'impression en utilisant l'utilitaire correspondant.

 

    ’ FnPrin;A;I;T

[1] © 03-11-1995

[2] I„½p ª Œpw„I[2]

[3] A„((7,I[2])½' ')®p

[4] A[1;]„I[2]†,((2×½T)½1 0)\T„'Amortissement d''un PRET indivis'

[5] A[3;]„I[2]†,'K2G<Capital : ZZ.ZZZ.ZZ9,99>,K4G<Taux de Z9,99 %>' Œfmt K (FnAcTy t n i)

[6] A[4;]„I[2]†,'G<Nombre de périodes : Z.ZZ9>,K2G<Montant de l''Annuité ZZ.ZZZ.ZZ9,99>'Œfmt n a

[7] A[6;]„I[2]†,'D a t e    Capital     Amortissement       Intérêts       Annuité'

[8]   

[9] ŒUCMD ']PRINT A /F'

    

4.3.6. Les Utilitaires

Un mot seulement sur la forme et sur les deux fonctions suivantes.

Elles sont issues d’un espace de travail personnel, commun à plusieurs WS.

Elles  permettent d'afficher un message (le test de la réponse a été volontairement supprimé, mais existe dans la fonction générique).

 

4.3.6.1.  Forme FmMsg

 

    ’ FmMsg

[1]   © 03-11-1995

[2]   'fmMsg' Œwi 'Delete'

[3]   

[4]   Œwself „ 'fmMsg' Œwi 'New' 'Form' 'Close'

[5]   Œwi 'where' 6 19 11 40

[6]   Œwi 'caption' 'M E S S A G E R I E'

[7]   

[8]   Œwself„ 'fmMsg.lb1' Œwi 'New' 'Label' 'Close'

[9]   Œwi 'where' 0.2 0.2 2 38

[10]  Œwi  'style' 0

[11]  Œwi 'font' 'Arial' 1.3 1 'ansi'

[12]  

[13]  Œwself„ 'fmMsg.lb2' Œwi 'New' 'Label' 'Close'

[14]  Œwi 'where' 2.2 0.2 2 38

[15]  Œwi  'style' 0

[16]  Œwi 'font' 'Arial' 1.3 1 'ansi'

[17]  

[18]  Œwself„ 'fmMsg.lb3' Œwi 'New' 'Label' 'Close'

[19]  Œwi 'where' 4.2 0.2 2 38

[20]  Œwi  'style' 0

[21]  Œwi 'font' 'Arial' 1.3 1 'ansi'

[22]  

[23]  Œwself „ 'fmMsg.bn1' Œwi 'New' 'Button' 'Close'

[24]  Œwi 'where' 7 11 1.3 7

[25]  Œwi 'caption' 'OUI'

[26]  Œwi 'onClick' 'FnMsg0'

[27]  

    

4.3.6.2.  Fonction de Lancement et d’Affichage

 

    ’ FnMsg1 P

[1]   © 03-11-1995

[2]   'fmMsg' Œwi 'Open' 'visible' 1

[3]   

[4]   'fmMsg.lb1' Œwi 'caption' (30†P)

[5]   'fmMsg.lb2' Œwi 'caption' (30†30‡P)

[6]   'fmMsg.lb3' Œwi 'caption' (30†60‡P)

[7]   

[8]   0 0½ 'fmMsg' Œwi 'Wait'

    

 

4.3.6.3.  Fonction d’Effacement de la fenêtre

 

    ’ FnMsg0;G;S;Y

[1]   © 03-11-1995

[2]   G„6†S„Œwself

[3]   Y„¯1†S

[4]   

[5]   (G,'bn1') Œwi 'data' Y

[6]   

[7]   0 0½ 'fmMsg' Œwi 'Close'

    

 

 5. Le Menu  et les  Commandes attachées

 

La barre de Menu, située en deuxième ligne de la première fenêtre, comporte deux Menus nommés "File"  et  "Calculs". 

5.1. Menu 'File'

Le menu 'File' est destiné à gérer les Entrées / Sorties générales de l'application.

Il comporte deux commandes en son sein.

 

La commande 'Impression Tableau' permet de lister le tableau d'Amortissement, précédé d'un en-tête récapitulant les données fournies.

 

La commande 'Quitter' permet de quitter l'Application.

5.2. Menu 'Calculs'

Le menu 'Calculs' recense certains calculs intéressants, immédiatement déduits des calculs relatifs à la détermination du plan d'amortissement.

 

6. Conclusion 

 

Cet exercice banal a été écrit en une après-midi pluvieuse : nous reconnaissons, ici,  la puissance et la simplicité de mise en œuvre d'APL III[1].

 

Il a permis de mettre en pratique plusieurs concepts nouveaux d'APL III et d'en étudier pleinement les différentes articulations:

conception-réalisation, forme-fonction, déclenchement-réponse, ....

 

Au-delà de cet exemple, il est loisible de compliquer cet ensemble et d'introduire les développements idoines –et conséquents–  pour répondre à d'autres besoins :

 

       – emprunts à taux multiples;

       – emprunts à taux variant selon une ou plusieurs lois;

       – emprunts ayant des particularités relatif à son mode de remboursement.

 

mais aussi :

       – simulations de tous les paramètres pour répondre à certaines contraintes;

       – versements apériodiques;

       – comparaison graphique entre les montants remboursés selon le Type
              d'Annuités choisi, le taux,...

 

Cette liste –non exhaustive– fournit des éléments pour des développements rapides et... peut-être ultérieurs, si le besoin s'en faisait sentir au niveau des lecteurs.

 

Alors ?

 

       Convaincu (e) ?

 

                         A vos claviers !

 

BIBLIOGRAPHIE  

 

BONNEAU  :    Mathématiques Financières, DUNOD.

 

E. LESCASSE,  Première Application en APL*PLUS III, Les Nouvelles d'APL, No 12-13 (sept.-déc. 1994).

 

ANNEXE

 

Les formules mathématiques de base, utilisées dans le corps du texte,  sont présentées ci-dessous.

 

 

La relation, entre le capital K  et l'annuité a, est donnée par la formule suivante :

 

               

               

      

 

              avec (voir fonctions Ani et Sni) :

 

      

 

                                  

i   étant le Taux correspondant au type d’annuités

n   le nombre d’annuités de remboursement

 

                                                                                            

Le taux équivalent, devant remplacer le taux annuel i de la formule [ I ], si le paiement de l’annuité n’est pas de type annuel,   s'obtient selon : 

               

 

 

Le taux proportionnel s'obtient par la formule : 

 

 

avec                    m = 12  si  type annuité =   mensuel

jusqu'à       m =   2                          =   semestriel

 

[1] Il a été vérifié que le logiciel, écrit pour la version 1.1, s’exécute correctement aussi avec la version 1.2 d’APL*PLUS III