Bonjour à tous

J'ai un petit problème avec une fonction que j'essai de créer.

C'est une fonction permettant de calculer un amortissement dégressif en fonction de 3 critères : la date d'acquisition, la durée de vie, et la valeur de l'immobilisation.

Il est pas possible de calculer cet amortissement directement et c'est pourquoi je voulais passer par la création d'un tableau sous VBA pour pouvoir prendre les données souhaitées et les arranger.

Voici mon code et je ne sais pas ou est l'erreur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Je vous remercie de votre temps et de votre attention.