Rechercher : dans
Par :

Pb: VBA-Calcul emprunt, crédit, annuités....

Dernière réponse le 2 jan 2009 à 14:09:57 Elo97133, le 18 mai 2008 à 14:43:09 
 Signaler ce message aux modérateurs

Bonjour,

Je suis novice en VBA et j'ai un petit souci sur ma programmation.
Je souhaite en effet que l'utilisateur entre le montant du capital emprunté, son taux d'intérêt, le nombre d'années de l'emprunt ainsi que le coût de son assurance pour pouvoir calculé le coût total de son emprunt.

Je pense que l'algorithme est bon mais en fait j'ai un problème de déclaration de variables je crois pour a(), i(), c()...
Il ne voit pas ce que c'est....

Comment dois-je faire?
Je vous envoie toute ma programmation car je ne suis pas non plus certaine que l'erreur vienne de ça:


Voici la programmation:

Sub CommandButton1_Click()


'Aquisition des informations
Dim ca As Integer, n As Integer, tx As Integer

ca = Val(TextBox1) 'Capital emprunté (Euros)
n = Val(TextBox2) 'Nombre de périodes (en mois)
tx = Val(TextBox3) 'Taux fixe d'emprunt (%)
If tx = 0 Then tx = 0.0000001
txm = tx / 100 / 12


'Amortissement le 1er mois
a(1) = ca * txm / ((1 + txm) ^ n - 1)

'Intérêt 1er mois
i(1) = ca * txm

'somme prélevée mensuelle
pr = i(1) + a(1)

'Début de la boucle du tableau d'amortissement
'Le tableaux c() contiendra le capital restant dû période après période (mois après mois) en euros.
'Le tableaux i() contiendra les intérets filés à la banque sur chaque période, en euros
'Le tableaux a() contiendra le capital remboursé sur chaque période, en euros.
c(1) = ca
totalint = 0

For xx = 2 To n
c(xx) = c(xx - 1) - a(xx - 1)
i(xx) = c(xx) * txm
a(xx) = pr - i(xx)
totalint = totalint + i(xx)
Next xx

derr = a(n) - c(n)
a(n) = c(n)
i(n) = i(n) + derr

If tx = 0.000001 Then
i(1) = 0
For xx = 2 To n
a(xx) = c(1) / n
i(xx) = 0
c(xx) = c(xx - 1) - a(xx)
Next xx
totalint = 0
derr = 0
a(n) = c(n)
End If

totalint = totalint + i(1) + derr


'Affichage du résultat
Label6 = Int(totalint * 100 + 0.5) / 100 'Total des intérets



'Création de deux OptionBox : Option1 et Option2
'On ne testera que Option1 qui cochée permet d'indiquer au programme
'le prix de l'assurance par période (Euros/mois) si l'on coche Option1
'le prix de l'assurance en % du capital si l'on coche l'Option2

If OptionButton1.Value = True Then
TextBox5 = Int((Val(TextBox4) * 100 / Val(TextBox1)) * 100) / 100
'On a donné le prix de l'assurance par période
'Affichage pour information en % du capital
Else
TextBox4 = Int((Val(TextBox5) / 100 * Val(TextBox1)) * 100) / 100
'On a donné le prix de l'assurance en % du capital
'Affichage pour informationpar de ce prix par période
End If

'Affichage des résultats
Label10 = Val(TextBox4) * Val(TextBox2) 'Assurance totale à payer
Label13 = Int((pr + Val(TextBox4)) * 100 + 0.5) / 100 'Echéance mensuelle

Label15 = Val(Label10) + Val(Label6) 'Cout total du crédit, assurance et intérets compris.




End Sub







Je sais qu'il y'a des personnes supers balaises sur ce forum donc..... à vos ordis!! Merci bcp d'avance!

A très bientôt ;-)

Elo

Configuration: Windows XP
Firefox 2.0.0.6

Meilleures réponses pour « Pb: VBA Calcul emprunt, crédit, annuités.... » dans :
VBA et les collections d'objets. VoirVBA et les collections d'objets Quand plusieurs (beaucoup de) contrôles sont mis sur une feuille ou un Userform il est parfois fastidieux d'écrire du code dans chaque évènement des contrôles. Ce Tuto vous permet de traiter vos contrôles comme...
[Excel] Chemin et nom de stockage de feuille de calcul VoirIndiquer automatiquement le chemin d'accès (path) et le nom de stockage de toute feuille de calcul Noter dans une cellule (A& par exemple) la formule : =cellule("nomfichier";A1) A chaque sauvegarde et/ou déplacement de fichier dans votre...
VBA Un timer une seconde tout simple VoirEn VBA, il n'y a pas (du moins à ma connaissance) de composant Timer. On peut en créer un très facilement. Dans un module de feuille Activer/ dés activer le timer : Placer un bouton sur Feuil1 et mettre le code... Private Sub...
Télécharger E-calcul VoirLes maths sont pour certains un jeux, alors que pour la majorité, c’est tout un parcours du combattant. Alors si vous devez utiliser des formules mathématiques sans trop vous cassez la tête, essayer ce programme. E-calcul est premièrement une...
Tableur - Les feuilles de calcul VoirLa notion de feuille de calcul Un tableur présente les données et les formules sous forme d'un tableau (lignes et colonnes) appelé feuille de calcul. Une feuille de calcul est constitué de lignes (numérotées à l'aide de chiffres) et de colonnes...
Tableur - La saisie de données VoirSAISIE DE DONNEES LITTERALES Vous êtes prêt à entrer des données dans votre feuille de calcul. Nous vous déconseillons toutefois de le faire avant d’avoir réfléchi soigneusement à ce que vous voulez obtenir : de façon générale, mieux vaut bâtir sur...

1

michel_m, le 18 mai 2008 à 16:09:40
  • +1

Bonjour,

Ton texte:
"Je sais qu'il y'a des personnes supers balaises sur ce forum donc..... à vos ordis"

est complètement débile et a l'air de dire: si je n'y arrive pas , c'est qu'il faut être super balaise

d'autre part, on n'est absolument forcé d'être sensible aux fayots.


Bon petit topo sur les variables (pour les détails, c'est dans l'aide microsoft)

Tx est décimal donc le type est single et non integer
Ca ton capital est limité à 32767 si veux aller plus loin :type long
n esst déclaré byte donc limité à 256 soit >=21 ans, si tu veux aller au delà prend un intéger

ta transformation de textbox par la fonction val est sure mais très lourde, fais des essais avec les fonctions de conversion (voir l'aide)

Voilà, utiliser VBA pour un calcul d'emprunt est luxueux les formules suffiraient mais on t'a peut être demandé de le faire par VBA

Michel

Répondre à michel_m

2

Elo97133, le 18 mai 2008 à 16:27:31

Bonjour Michel,

Ton poste m'a fait sourrire.... Loin de moi cette idée!
C'est juste que je me suis rendue compte que sur ce site.... l'exemple est du coup vérifié.... de nombreuses personnes sont très réactives à toutes les demandes d'aide et répondent dans des temps reccords.
Je n'ai donc pas du tout voulu dire que "si je n'y arrive pas , c'est qu'il faut être super balaise" car comme je l'ai dit je suis novice et n'ai pas du tout peur de dire que je suis un boulet en VBA et que si ça se trouve l'erreur sera ridicule pour la personne qui m'aidera.

"d'autre part, on n'est absolument forcé d'être sensible aux fayots." ... un peu d'humour!!... il ne faut pas voir le mal partout! Quand je vois à la vitesse où je vais, en restant bloquée plusieurs heures sur un problème qu'une personne arrive à résoudre en 10 min... je ne peux alors que dire que je la trouve balaise! loool

En effet, je n'ai pas le choix... on doit rendre ce projet dans le cadre d'un cours....
Merci pour les liens... j'y vais sur le champ!

Merci pour ton aide !

Répondre à Elo97133

3

Elo97133, le 18 mai 2008 à 16:32:01

Je reviens juste pour mettre l'accent sur quelque-chose.... je pense que le souci vient de c(), a() et i() qui ne sont pas déclarées car lorsque je fais le deboggage il s'arrête dessus.

Que dois-je rajouter pour que le programme soit fonctionnel?

Répondre à Elo97133

4

michel_m, le 18 mai 2008 à 17:01:41

Le mieux est que tu éxécutes ton prog en pas à pas par la touche F8

tu peux voir la valeur de tes variables en passant la souris (en amont du surlignage jaune) ou en installant l'espion (debogage-ajouter un esion), tu verras ainsi les erreurs
D'autre part, évite au maximum les variables à 1 lettre car on est obligé de se remémorer leur signification lors d'une recherche d'erreur ou une maintenance pourquoi pas ("interet_verse" plutot que "i"?). Un bon prog est d'abord un code prévu pour la maintenance facile.

Répondre à michel_m

5

michel_m, le 18 mai 2008 à 17:05:34

Le mieux est que tu éxécutes ton prog en pas à pas par la touche F8

tu peux voir la valeur de tes variables en passant la souris (en amont du surlignage jaune) ou en installant l'espion (debogage-ajouter un esion), tu verras ainsi les erreurs
D'autre part, évite au maximum les variables à 1 lettre car on est obligé de se remémorer leur signification lors d'une recherche d'erreur ou une maintenance pourquoi pas ("interet_verse" plutot que "i"?). Un bon prog est d'abord un code prévu pour la maintenance facile.

Répondre à michel_m

6

Elo97133, le 19 mai 2008 à 10:10:57

C'est bon...

Problème résolu...
C'était bien ça, je devais déclarer mes variables a(), c() et i() en tableau.

Dim ca As Long, n As Integer, tx As Single
Dim a(1000) As Single, i(1000) As Single, c(1000) As Single

Parfait ça marche très bien

Merci!

Répondre à Elo97133

7

 lucile, le 2 jan 2009 à 14:09:57

Je cherche a faire la même chose que toi mais sans tableau tu crois que c'est possible


ca serais pour géré mes emprunts

Répondre à lucile