Re,
Je renvoie le fichier avec des commentaires dans la procédure.
A te relire.
Cdlt.
Sub Amortissement_dégressif()
'Déclaration des variables
Dim année As Integer, mois As Integer
Dim achat As Double, tx_linéaire As Double, tx_dégressif As Double, tx_retenu As Double, amt As Double, vnc As Double
Dim durée As Byte, i As Byte, k As Byte, m As Byte
With ActiveSheet
'On efface les données existantes
.Cells(11, 1).CurrentRegion.Offset(1).ClearContents
'Initialisation des variables
achat = .Cells(4, 5) 'E4
année = .Cells(5, 7) 'G5
mois = .Cells(5, 6) 'F5
durée = .Cells(6, 5) 'E6
tx_linéaire = 1 / durée
.Cells(7, 5).Value = tx_linéaire 'E7
k = 12
Select Case durée
Case 1: Exit Sub
Case 2 To 4: tx_dégressif = tx_linéaire * 1.25
Case 5 To 6: tx_dégressif = tx_linéaire * 1.75
Case Else: tx_dégressif = tx_linéaire * 2.25
End Select
.Cells(8, 5).Value = tx_dégressif 'E8
.Cells(12, 1).Value = année 'A12
.Cells(12, 2) = achat 'B12
amt = achat * tx_dégressif * (12 - mois + 1) / 12
.Cells(12, 3) = amt 'C12
vnc = achat - amt
.Cells(12, 4) = vnc 'D12
'On boucle sur le nombre d'années
For i = 2 To durée
'Redéfinition du taux linéaire équivalent
tx_linéaire = 1 / (durée - i + 1)
'On retient le taux le plus élevé
tx_retenu = Application.Max(tx_dégressif, tx_linéaire)
k = k + 1: m = m + 1
.Cells(k, 1).Value = année + m 'A13, A14, etc...
.Cells(k, 2).Value = vnc
amt = vnc * tx_retenu
.Cells(k, 3).Value = amt
vnc = vnc - amt
.Cells(k, 4) = vnc
Next i
End With
End Sub