[COLOR="DarkSlateGray"][B]Function nb_mois_jours(rd, rf, Optional dd& = 1, Optional ff& = 1)
Application.Volatile
Dim d&, f&, jd&, jf&
nb_mois_jours = ""
If IsDate(rd) And IsDate(rf) Then
d = rd.Value - dd + 1
f = rf.Value + ff
If d <= f Then
nb_mois_jours = CDbl(Val(nb_mois_jours))
If d < f Then
jd = DateSerial(Year(d), 1 + Month(d), 1)
jf = DateSerial(Year(f), Month(f), 1)
If Month(f - ff) = Month(d) And 12 * (Year(jf) - Year(jd)) + Month(jf) - Month(jd) - (d = DateSerial(Year(d), Month(d), 1)) <= 0 Then
nb_mois_jours = f - d & "/" & CInt(jd - DateSerial(Year(d), Month(d), 1))
Else
nb_mois_jours = IIf((d - jd) * (d <> DateSerial(Year(d), Month(d), 1)), (d - jd) * (d <> DateSerial(Year(d), Month(d), 1)) & "/" & _
CInt(jd - DateSerial(Year(d), Month(d), 1)), "") & _
IIf(Round(12 * (Year(jf) - Year(jd)) + Month(jf) - Month(jd) - (d = DateSerial(Year(d), Month(d), 1)), 12), _
IIf((d - jd) * (d <> DateSerial(Year(d), Month(d), 1)), " + ", "") & Round(12 * (Year(jf) - Year(jd)) + Month(jf) - Month(jd) - (d = DateSerial(Year(d), Month(d), 1)), 12), "") & _
IIf(f - jf, " + " & f - jf & "/" & CInt(DateSerial(Year(f), 1 + Month(f), 1) - jf), "")
End If
Else
nb_mois_jours = CStr(nb_mois_jours)
End If
End If
End If
End Function[/B][/COLOR]