Bonjour,
j'ai pris connaissance de votre question et je m'y interesse car j'ai réussi à faire un petit programme comportant des amortissements linéaires et dégressifs.
j'ai d'abord mis un userform dans lequel l'opérateur entre les données code compta, reference, etc. durée de l'amortissement et date et montant.
ensuite l'opérateur clqiue sur ok et un autre userform apparait linéaire ou dégressif. il clique sur le choix qu'il veut ou sur les deux si il le souhaite pour comparer.
dans la feuille 2 vient se positionner les calculs de l'amortissement linéaire basée sur le jour, le mois et l'année. avec le nombre de jour la l'année 1 et le nombre de jour pour l'année fin et le montant de l'annuité année 1 et année fin.
pour aller de l'année 1 à l'année 2 je me suis servie des opérations effectuées sur la feuille du tableau qui se remplit
pour la boucle j'ai fait ce petit programme
'Remplissage des années concernées par l'amortissement
Dim i As Integer
Range("A11").Select
For i = 1 To annees + 1 'donne le nombre d'années de l'amortissement
Selection = i
If Selection = 1 Then
ActiveCell.Offset(0, 1) = Range("C5").Value 'montant de l'amortissement
ActiveCell.Offset(0, 2) = Range("F5").Value 'montant de l'annuité N1
ActiveCell.Offset(0, 3) = Range("C11").Value 'annuité N1 dans le tableau reportée dans le cumul an 1
ActiveCell.Offset(0, 4) = Range("B11").Value - Range("C11").Value 'restant de la somme à amortir reportée dans le restant
ElseIf Selection = annees + 1 Then 'si l'année n'est pas égale à 1 alors ce programme entre en jeu :
ActiveCell.Offset(0, 1) = Range("C5").Value 'montant de l'amortissment
'ActiveCell.Offset(0, 1) = Range("C5").Value - ActiveCell.Offset(-1, 3)
ActiveCell.Offset(0, 2) = Range("G5").Value
ActiveCell.Offset(0, 3) = ActiveCell.Offset(-1, 3) + ActiveCell.Offset(0, 2)
ActiveCell.Offset(0, 4) = ActiveCell.Offset(0, 1) - ActiveCell.Offset(0, 3)
Else: ActiveCell.Offset(0, 1) = Range("C5").Value
'ActiveCell.Offset(0, 1) = ActiveCell.Offset(-1, 4)
ActiveCell.Offset(0, 2) = Range("I5").Value
ActiveCell.Offset(0, 3) = ActiveCell.Offset(-1, 3) + ActiveCell.Offset(0, 2)
ActiveCell.Offset(0, 4) = ActiveCell.Offset(0, 1) - ActiveCell.Offset(0, 3)
End If
ActiveCell.Offset(0, 5).Select
Selection = annees + 1 - i
ActiveCell.Offset(0, -5).Select
ActiveCell.Offset(1, 0).Select
Next
End Sub
bon courage