Salut JNP,Bonjour,
Sur 2016
=DATEDIF(DATEVAL("01/01/1900");MAINTENANT();"Y")
fonctionne très bien..
hoh là la formule n'est pas aussi simple !!!!!Bonjour @patricktoulon,
Les mois seront donnés par "M" comme Month, les jours par "D" comme Day... Je constatais surtout que cette formule fonctionnait bien toujours avec les bons arguments.
=DATEDIF(DATEVAL("01/01/1900");MAINTENANT();"Y")&" ans ou "&DATEDIF(DATEVAL("01/01/1900");MAINTENANT();"M")&" mois ou "&DATEDIF(DATEVAL("01/01/1900");MAINTENANT();"D")&" jours."
donnera les 3, mais je ne vois pas l'intérêt...
=ENT((AUJOURDHUI()-B4)/365,25)& " ans "&MOIS(AUJOURDHUI()-B4)-1&" mois "&ENT(JOUR(AUJOURDHUI()-B4)/7)&" semaines et "&MOD(JOUR(AUJOURDHUI()-B4);7)&" jours"
Function Datediff_AMJ$(ByVal dat1, Optional ByVal dat2 = 0)
Dim a%, m%, j%, dtemp As Date, Erreur$
If dat2 = 0 Then dat2 = Date
Erreur = IIf(Not IsDate(dat1), "(1)", ""): Erreur = Erreur & IIf(Not IsDate(dat2), "(2)", ""): Erreur = IIf(Erreur <> "", "Invalid Argmt(" & Erreur & ")", "")
If Erreur <> "" Then Datediff_AMJ = Erreur: Exit Function
dat1 = CDate(dat1): dat2 = CDate(dat2)
If dat1 > dat2 Then dtemp = dat1: dat1 = dat2: dat2 = dtemp
a = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""y"")")
m = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""ym"")")
j = Abs(DateSerial(Year(dat1) + a, Month(dat1) + m, Day(dat1)) - dat2)
Datediff_AMJ = RTrim(IIf(a, a & " an" & IIf(a = 1, " ", "s "), "") & IIf(m, m & " mois ", "") & IIf(m Or a, "et ", "") & IIf(j, j & " jour" & IIf(j = 1, "", "s"), ""))
End Function
allez encore un petit effortje l'ai encore un peu amélioré avec le "et " optionel selon le résultat
Function Datediff_AMJ$(ByVal dat1, Optional ByVal dat2 = 0)
Dim a%, m%, j%, dtemp As Date, Erreur$
If dat2 = 0 Then dat2 = Date
Erreur = IIf(Not IsDate(dat1), "(1)", ""): Erreur = Erreur & IIf(Not IsDate(dat2), "(2)", ""): Erreur = IIf(Erreur <> "", "Invalid Argmt(" & Erreur & ")", "")
If Erreur <> "" Then Datediff_AMJ = Erreur: Exit Function
dat1 = CDate(dat1): dat2 = CDate(dat2)
If dat1 > dat2 Then dtemp = dat1: dat1 = dat2: dat2 = dtemp
a = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""y"")")
m = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""ym"")")
j = Abs(DateSerial(Year(dat1) + a, Month(dat1) + m, Day(dat1)) - dat2)
Datediff_AMJ = RTrim(IIf(a, a & " an" & IIf(a = 1, " ", "s "), "") & IIf(m, m & " mois ", "") & IIf(m Or a And j > 0, "et ", "") & IIf(j, j & " jour" & IIf(j = 1, "", "s"), ""))
End Function
Function Datediff_AMJ$(ByVal dat1, Optional ByVal dat2 = 0)
Dim a%, m%, j%, dtemp As Date, Erreur$
If dat2 = 0 Then dat2 = Date
Erreur = IIf(Not IsDate(dat1), "(1)", ""): Erreur = Erreur & IIf(Not IsDate(dat2), "(2)", ""): Erreur = IIf(Erreur <> "", "Invalid Argmt(" & Erreur & ")", "")
If Erreur <> "" Then Datediff_AMJ = Erreur: Exit Function
dat1 = CDate(dat1): dat2 = CDate(dat2)
If dat1 > dat2 Then dtemp = dat1: dat1 = dat2: dat2 = dtemp
a = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""y"")")
m = Evaluate("DATEDIF(" & CDbl(dat1) & "," & CDbl(dat2) & ",""ym"")")
j = Abs(DateSerial(Year(dat1) + a, Month(dat1) + m, Day(dat1)) - dat2)
Datediff_AMJ = RTrim(IIf(a, a & " an" & IIf(a = 1, " ", "s "), "") & IIf(m, m & " mois ", "") & IIf(m Or a, IIf(j > 0, "et ", ""), "") & IIf(j, j & " jour" & IIf(j = 1, "", "s"), ""))
End Function
=DATEDIF(DATEVAL("01/01/1900");MAINTENANT();"Y")