Tableau d'amortissement VBA

Résolu
meuhlol Messages postés 1896 Date d'inscription   Statut Membre Dernière intervention   -  
meuhlol Messages postés 1896 Date d'inscription   Statut Membre Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention   673
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > meuhlol Messages postés 1896 Date d'inscription   Statut Membre Dernière intervention  
 
le vba, c'est du basic.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > meuhlol Messages postés 1896 Date d'inscription   Statut Membre Dernière intervention  
 
montre-nous comment tu as utilisé i à la place de x.
0
meuhlol Messages postés 1896 Date d'inscription   Statut Membre Dernière intervention   673 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
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