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
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 =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"
Mais, drame, cela ne marche pas
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part lag Mod 1
Pouvez-vous m'éclairer et me dire où est-ce que j'ai commis une erreur ? et comment y remédier ?
Partager