Bonjour,

Je souhaite avoir une "fonction" Excel me permettant de calculer au plus juste une date.
Dans certains contrat nous avons ce genre d'information : Date de signature + 1,5 Mois.

En navigant un peu j'ai pu trouver une formule, pas forcément simple, faisant le travail
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
=WORKDAY(DATE(YEAR($D$3);MONTH($D$3)+INT(C5);DAY($D$3)+MOD(C5;1)*30)-1;1)
$D$3 contient la date de référence
C5 : l'écart en nombre de mois "pouvant être entier ou non"
Ca marche bien. Toutefois pour essayer d'améliorer la lisibilité pour l'utilisateur, l'idée m'est venue d'utiliser les formules personnalisée. Et ce en recodant la formule ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Function calcMilestoneDate(ReferenceDate As Variant, lag As Variant)
'Function to caculate a date from a reference Date and associate lag in "month"
'The month can be a decimal number (1, 2, 3.5,-2...)
Application.Volatile
 
With Application.WorksheetFunction
    calcMilestoneDate = .WorkDay(DateSerial(Year(ReferenceDate), Month(ReferenceDate) + Int(lag), Day(ReferenceDate) + (lag Mod 1) * 30) - 1, 1)
End With
End Function
Mais, drame, cela ne marche pas

La formule Excel (sans vba) me retourne : 19-Oct-2015 + 1,5 mois = 4-Dec-2015
La formule Excel (avec vba) me retourne : 19-Oct-2015 + 1,5 mois = 19-Nov-2015

J'ai l'impression que probleme se situe sur :
Cela ne retourne pas le résulat que j'espérais en tout cas le même résultat que : MOD(C5;1) en formule excel

Pouvez-vous m'éclairer et me dire où est-ce que j'ai commis une erreur ? et comment y remédier ?