Sub test()
Date1 = CDate("01/05/1874")
date2 = CDate("02/08/1974")
'et bien on décale jusqu'en 1904
yeardécalée = Abs((Year(Date1) - 1900)) + 4
Date1 = DateSerial(Year(Date1) + yeardécalée, Month(Date1), Day(Date1))
date2 = DateSerial(Year(date2) + yeardécalée, Month(date2), Day(date2))
'les dates sont décalées la date 1 est maintenant en 1904
' et à la date2 on a ajouté la même différence
'MsgBox Year(date2) - Year(date1) & " ans"
'elles sont donc valides pour les passer dans ma fonction utilisant datediff
MsgBox DateDiffAMJ3$(Date1, date2)
End Sub
Function DateDiffAMJ3$(dat1, dat2)
Dim A$, M$, J$, Dtemp$, et$
If dat1 > dat2 Then Dtemp = dat1: dat1 = dat2: dat2 = Dtemp
A = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""y"")")
M = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""ym"")")
J = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""md"")")
A = IIf(A = 0, "", IIf(A = 1, A & " an", A & " ans"))
M = IIf(M = 0, "", IIf(M = 1, M & " mois", M & " mois"))
J = IIf(J = 0, "", IIf(J = 1, "1 jour", J & " jours"))
et = IIf(Val(A) > 0 Or Val(M) > 0, IIf(Val(J) > 0, " et ", " "), "")
DateDiffAMJ3 = Application.Trim(A & " " & M & " " & et & J)
End Function
Sub test()
date2 = CDate("01/01/1774")
date1 = CDate("31/12/1974")
MsgBox DateDiffAMJ4$(date1, date2)
End Sub
Function DateDiffAMJ4$(dat1, dat2)
Dim A$, M$, J$, Dtemp$, et$, yeardécalée&
If dat1 > dat2 Then Dtemp = dat2: dat2 = dat1: dat1 = Dtemp
If Year(dat1) < 1904 Or Year(dat2) < 1904 Then
'on decale la date la plus ancienne (Dat1)à l'année 1904
yeardécalée = Abs((Year(dat1) - 1900)) + 4
dat1 = DateSerial(Year(dat1) + yeardécalée, Month(dat1), Day(dat1))
dat2 = DateSerial(Year(dat2) + yeardécalée, Month(dat2), Day(dat2))
End If
A = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""y"")")
M = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""ym"")")
J = Evaluate("=DATEDIF(" & CLng(dat1) & "," & CLng(dat2) & ",""md"")")
A = IIf(A = 0, "", IIf(A = 1, A & " an", A & " ans"))
M = IIf(M = 0, "", IIf(M = 1, M & " mois", M & " mois"))
J = IIf(J = 0, "", IIf(J = 1, "1 jour", J & " jours"))
et = IIf(Val(A) > 0 Or Val(M) > 0, IIf(Val(J) > 0, " et ", " "), "")
DateDiffAMJ4 = Application.Trim(A & " " & M & " " & et & J)
End Function
Sub test()
date2 = CDate("01/01/0100")
date1 = CDate("31/12/1974")
MsgBox DateDiffAMJ4$(date1, date2)
End Sub
Sub test()
date2 = CDate("01/01/0100")
date1 = CDate("31/12/0304")
MsgBox DateDiffAMJ4$(date1, date2)
End Sub