1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| Option Explicit
Function degressif(Dureedevie As Integer, dateAcquis As Date, valeur As Integer) As Integer
'Création d'un tableau
Dim debut_count As Integer
Dim nb_annees_amt As Integer
Dim i As Integer
Dim total As Double
Dim duree_amt_deg As Double
'on définit le nom des colonnes du tableau
Cells(3, 4) = "Période Restante"
Cells(4, 4) = Dureedevie
Cells(3, 5) = "Années"
Cells(3, 6) = "Base Amt"
Cells(3, 7) = "Taux Linaire"
Cells(3, 8) = "Taux degressif"
Cells(3, 9) = "Annuité"
Cells(3, 10) = "Valeur nette comptable"
'Complète la valeur d'achat
Cells(4, 5) = Year(dateAcquis)
'Affiche les années d'amortisement restantes
debut_count = 5
nb_annees_amt = (debut_count + (Dureedevie - 2))
For debut_count = 5 To nb_annees_amt
Cells(debut_count, 5).Value = Cells(debut_count - 1, 5).Value + 1
Next debut_count
'Affiche les dotations restantes
For debut_count = 5 To nb_annees_amt
Cells(debut_count, 4).Value = Cells(debut_count - 1, 4).Value - 1
Next debut_count
'Affiche le taux linéaire
For debut_count = 4 To nb_annees_amt
Cells(debut_count, 7).Value = (1 / Cells(debut_count, 4).Value) * 100
Next debut_count
'Affiche le taux degressif avec prise en compte des taux en fonction de la durée de vie
For debut_count = 4 To nb_annees_amt
If Dureedevie <= 4 Then
Cells(debut_count, 8).Value = ((1 / Dureedevie * 1.25) * 100)
ElseIf Dureedevie <= 6 Then
Cells(debut_count, 8).Value = ((1 / Dureedevie * 1.75) * 100)
Else:
Cells(debut_count, 8).Value = ((1 / Dureedevie * 2.25) * 100)
End If
Next debut_count
'Affiche la base amortissable les annuités et VNC
Cells(4, 6).Value = valeur
For debut_count = 4 To nb_annees_amt
If Cells(debut_count, 8).Value > Cells(debut_count, 7).Value Then
Cells(debut_count, 9).Value = Cells(debut_count, 6).Value * Cells(debut_count, 8).Value / 100
Cells(debut_count, 10).Value = Cells(debut_count, 6) - Cells(debut_count, 9)
Else: Cells(debut_count, 9).Value = Cells(debut_count, 6).Value / 100 * Cells(debut_count, 7).Value
Cells(debut_count, 10).Value = Cells(debut_count, 6) - Cells(debut_count, 9)
End If
Cells(debut_count + 1, 6).Value = Cells(debut_count, 10).Value
Next debut_count
'Trouve si l'année en cours est dans le tableau d'amortissement
duree_amt_deg = Year(Now()) - Year(dateAcquis)
For debut_count = 4 To nb_annees_amt
If Year(Now()) = Cells(debut_count, 5) Then
'Si on trouve l'année en cours dans le tableau alors on ajoute les annuités jusqu'à l'année en cours
For i = 0 To duree_amt_deg
total = total + Cells(4 + i, 9)
Next i
'Sinon on ajoute toutes les annuités
Else
For i = 0 To Dureedevie
total = total + Cells(4 + i, 9)
Next i
End If
Next debut_count
'On insère le montant des amortissements en fin de périodes
degressif = total
End Function |
Partager