Bonjour à tous,

Je travaille actuellement sur un tableau de bord comptable, dans lequel je dois mensualiser des charges d'amortissement.
Pour ceux qui ne connaissent pas, pas de panique, dans la pratique, je cherche juste à comparer des dates et en fonction du résultat, de me faire un calcul.
Avec les SI imbriqués de base de Excel, je faisais une usine à gaz tellement y'avait de cellules et ça ne fonctionnait pas de toute façon.
Je me suis donc orienté vers une formule personnalisée.

En l'état, elle se présente comme ceci :
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
 
Function AmtMensuel(DebutExercice, FinExercice, DebutAmt, FinAmt, DebutMois, FinMois, VO, Plan, Jours, Coeff) As Single
 
' ==> CAS D'UN BIEN PRESENT A L'ACTIF PENDANT TOUT L'EXERCICE
' ==> La ligne suivante calcule l'amortissement si le bien est à amortir sur TOUT L'EXERCICE
If DebutExercice = DebutAmt And FinAmt = FinExercice Then AmtMensuel = VO / Plan * (FinMois + 1 - DebutMois) / Jours * Coeff
 
' ====>> CAS DES ACQUISITIONS DANS L'EXERCICE <<====
' ==> La ligne suivante rend impossible l'amortissement d'un bien LES MOIS PRECEDANT AVANT SON ACQUISITION
If DebutExercice < DebutAmt < FinExercice And DebutMois < FinMois < DebutAmt Then AmtMensuel = 0
 
' ==> La ligne suivante calcule l'amortissement d'un bien ACQUIS DANS LE MOIS
If DebutExercice < DebutAmt < FinExercice And DebutMois < DebutAmt < FinMois Then AmtMensuel = VO / Plan * (FinMois + 1 - DebutAmt) / Jours * Coeff
 
' ==> La ligne suivante calcul l'amortissement d'un bien LES MOIS SUIVANT SA CESSION
If DebutExercice < DebutAmt < FinExercice And DebutAmt < DebutMois < FinMois Then AmtMensuel = VO / Plan * (FinMois + 1 - DebutMois) / Jours * Coeff
 
' ====>> CAS DES CESSIONS/FINS D'AMORTISSEMENT DANS L'EXERCICE <<====
' ==> La ligne suivante calcul l'amortissement d'un bien LES MOIS PRECEDENT SA CESSION
If DebutExercice < FinAmt < FinExercice And DebutMois < FinMois < FinAmt Then AmtMensuel = VO / Plan * (FinMois + 1 - DebutMois) / Jours * Coeff
 
' ==> La ligne suivante calcul l'amortissement d'un bien CEDE DANS LE MOIS
If DebutExercice < FinAmt < FinExercice And DebutMois < FinAmt < FinMois Then AmtMensuel = VO / Plan * (FinAmt + 1 - DebutMois) / Jours * Coeff
 
' ==> La ligne suivante rend impossible l'amortissement d'un bien LES MOIS SUIVANT SA CESSION/FIN D'AMT
If DebutExercice < FinAmt < FinExercice And FinAmt < DebutMois < FinMois Then AmtMensuel = 0
 
End If
End Function
L'idée est simple :
- j'ai une date de début et de fin d'exercice (01/01/08 au 31/12/08)
- je peux avoir une date d'acquisition d'un bien (peut se situer avant le 01/01/08)
- je peux avoir une date de cession d'un bien (peut se situer dans l'exercice)
- je cherche à rapporter le calcul au mois, donc du 01/01/08 au 31/01/08...

Les annotations avant chaque lignes de codes expliquent le calcul recherché...
Seulement au final, ma fonction ne fonctionne pas !!
Genre si le bien est acquis dans l'exercice, au 01/07/08 par exemple, la formule me calcule aussi l'amortissement avant l'acquisition, ce qui est incohérent.
Je pense que c'est une erreur de syntaxe, mais mes cours de Excel remontant un peu, je suis paumé...
Quelqu'un peut-il m'aider?
Je peux développer si vous ne comprenez pas...

Edit : si nécessaire, je peux joindre une page du Tableau de Bord en question avec la formule appliquée pour être explicite...