Tableau d'amortissement VBA

Résolu/Fermé
meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021 - Modifié le 30 nov. 2021 à 15:05
meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021 - 30 nov. 2021 à 20:14
Bonjour les amis,

Je suis en train de me prendre la tête à fabriquer un petit tableau excel/VBA
pour les taux d'amortissements.

J'ai 3 TextBox (pour taux, le montant et la durée) desquels je récupère les données.

Sub PMT()
Dim capital As Integer
Dim Taux As Double
Dim Duree As Double

Dim total() As Variant
Dim maximo As Double
Dim i As Double
Dim x As Double

capital = tbMontant.Value
Taux = Format(Val(tbTaux.Value) / 100) / 12
Duree = tbDuree.Value

Range("E6").Value = -Application.WorksheetFunction.PMT(Taux, Duree, capital)

maximo = Duree
ReDim total(1 To maximo, 1 To 1)

For i = 1 To maximo
total(i, 1) = i
x = 1
Range("B9").Resize(UBound(total)).Value = total '1
Range("C9").Resize(UBound(total)).Value = Round((Range("E6").Value), 2) '2
Range("D9").Resize(UBound(total)).Value = Round((-PPmt(Taux, x, maximo, capital)), 2) '3
Next i

End Sub


Dans la cellule E6 après le calcul il stocke le montant de mensualité. C'est bon.

1) En partant de la cellule B9 il numérote le nombre de lignes selon le nombre indiqué dans le tbDuree. Super.

2) C9, il remplit les cellules du montant de mensualité calculé précédemment. C'est bon aussi

3) D9... Là, c'est mon casse-tête... Là où il y a le X dans PPmt c'est le numéro correspondant à la période. J'ai besoin que ce numéro soit repris à chaque ligne.
B9 n° 1 ; x = 1
B10 n° 2 ; x = 2
B11 n° 3 ; x = 3
et ainsi de suite jusqu'au nombre maximal de lignes (qui équivaut le nombre de mois)

Par la suite j'aurais la même galère avec les intérêts et le capital restant dû je pense xD

Et peut-être vous saurez me dire si il n'y a pas une solution plus simple, du genre :

Tiens, Excel, tu vois la case B9 ? Bah tu mets dedans le chiffre 1 puis tu vas à la case C9 et tu copies dedans le montant de la mensualité que tu trouves en E6, puis tu vas dans la case D9 et tu mets dedans le montant du capital remboursé, dans la case E9 les intérêts et dans F9 tu mets le capital restant dû. Puis, cher Excel, tu vas à la ligne et dans la case B10 tu mets le numéro de la ligne, tu répètes les opérations jusqu'au l'arrivée à la dernière ligne dont le numéro tu trouveras dans la TextBox xD

Merci par avance et bonne journée !
A voir également:

1 réponse

yg_be Messages postés 23472 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 Ambassadeur 1 568
30 nov. 2021 à 17:02
bonjour,
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Pourquoi n'utilises-tu pas i à la place de x?
1
meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021 672
30 nov. 2021 à 17:10
Bonjour,

le i à la place de x produit le même résultat :/

p.s. j'ai pas trouvé de code "vba" dans la liste des codes proposés
0
yg_be Messages postés 23472 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 1 568
30 nov. 2021 à 17:14
peut-être ainsi:
For i = 1 To Duree
        Cells(8+i,"b") = i
        Cells(8+i,"c") = Round((Range("E6").Value), 2) '2
        Cells(8+i,"d") = Round((-PPmt(Taux, i, Durée, capital)), 2) '3
Next i
0
yg_be Messages postés 23472 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 1 568 > meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021
30 nov. 2021 à 17:51
le vba, c'est du basic.
0
yg_be Messages postés 23472 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 1 568 > meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021
30 nov. 2021 à 17:51
montre-nous comment tu as utilisé i à la place de x.
0
meuhlol Messages postés 1896 Date d'inscription mardi 24 juillet 2007 Statut Membre Dernière intervention 30 novembre 2021 672 > yg_be Messages postés 23472 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025
30 nov. 2021 à 17:56
Génial !!!!!! Ca marche à merveille ! Enfin, presque ^_^


Petit soucis au niveau des arrondis il fait disparaître les zéros à la fin. 165,9, 171,5

    For i = 1 To Duree
        Cells(8 + i, "b") = i
        Cells(8 + i, "c") = Round((Range("E6").Value), 2)
        Cells(8 + i, "d") = Round((-PPmt(Taux, i, Duree, capital)), 2)
        Cells(8 + i, "e") = Round((-IPmt(Taux, i, Duree, capital)), 2)
        Cells(8 + i, "f") = "restant" '  Hummmm
    Next i


Deux petites questions :

Comment lui dire que les zéros à la fin c'est plus joli, même si on comprend bien que 165,9 = 165,90 ? xD
Et le plus important :
Equivalent de la fonction CUMUL.PRINCPER en vba c'est quoi svp ?

Merci encore !
0