XL 2019 Calculer l'écart entre 2 dates (en jours ou mois et jours ou années et mois et jours)

anthoYS

XLDnaute Barbatruc
Bonjour,


prenons un exemple 12/05 - 10/05 ça doit donner 2 jours.
Si on prends 17/05/2021 - 13/04/2017 ça doit calculer le décompte.

ne pas afficher 0 jours, si c'est 2 mois (on va dire un mois est égal à 30 jours ou alors au mois près...), ça devra afficher 2 mois.
etc. etc.


Merci !
 
Solution
re
et ben tu l’enlève de la formule c'est tout tu supprime simplement "il y a "&
=SI(P2="";"";SI(P2-AUJOURDHUI()=0;"Aujourd'hui";SI(P2-AUJOURDHUI()=1;"Demain";SI(AUJOURDHUI()-P2=1;"Hier";SI(P2>AUJOURDHUI();"Dans "&SI(DATEDIF(AUJOURDHUI();P2;"y")>0;DATEDIF(AUJOURDHUI();P2;"y")&" ans ";"")&SI(DATEDIF(AUJOURDHUI();P2;"ym")>0;DATEDIF(AUJOURDHUI();P2;"ym")&" mois ";"")&SI(DATEDIF(AUJOURDHUI();P2;"md")>0;DATEDIF(AUJOURDHUI();P2;"md")&" jours ";"");SI(DATEDIF(P2;AUJOURDHUI();"y")>0;DATEDIF(P2;AUJOURDHUI();"y")&" ans, ";"")&SI(DATEDIF(P2;AUJOURDHUI();"ym")>0;DATEDIF(P2;AUJOURDHUI();"ym")&" mois et ";"")&SI(DATEDIF(P2;AUJOURDHUI();"md")>0;DATEDIF(P2;AUJOURDHUI();"md")&" jours";"tout juste"))))))
1621681115153.png

patricktoulon

XLDnaute Barbatruc
re
c'est expliqué me semble t il dans la discussion
tu colle ça dans un module
VB:
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

exemple entre 2 dates
en A1 je met 12/03/1987
en B1 je met 23/09/1999
en C1 je met = Datediff_AMJ(B1;A1)
'l'ordre importe peu

si tu veux juste la différence entre A1 et aujourd'hui en C1 tu met
=Datediff_AMJ(A1)
c'est pas compliqué
 

anthoYS

XLDnaute Barbatruc
re
c'est expliqué me semble t il dans la discussion
tu colle ça dans un module
VB:
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

exemple entre 2 dates
en A1 je met 12/03/1987
en B1 je met 23/09/1999
en C1 je met = Datediff_AMJ(B1;A1)
'l'ordre importe peu

si tu veux juste la différence entre A1 et aujourd'hui en C1 tu met
=Datediff_AMJ(A1)
c'est pas compliqué
ce qu'il y a, c'est que je veux incrémenter, et que les dates changent... comme ceci ...

rajouter des dates au fur et à mesure...
je sais pas si c'est clair dans le fichier voir formule :

merci !
 

Pièces jointes

  • Classeur3.xlsx
    9.9 KB · Affichages: 8

patricktoulon

XLDnaute Barbatruc
re
et ben tu l’enlève de la formule c'est tout tu supprime simplement "il y a "&
=SI(P2="";"";SI(P2-AUJOURDHUI()=0;"Aujourd'hui";SI(P2-AUJOURDHUI()=1;"Demain";SI(AUJOURDHUI()-P2=1;"Hier";SI(P2>AUJOURDHUI();"Dans "&SI(DATEDIF(AUJOURDHUI();P2;"y")>0;DATEDIF(AUJOURDHUI();P2;"y")&" ans ";"")&SI(DATEDIF(AUJOURDHUI();P2;"ym")>0;DATEDIF(AUJOURDHUI();P2;"ym")&" mois ";"")&SI(DATEDIF(AUJOURDHUI();P2;"md")>0;DATEDIF(AUJOURDHUI();P2;"md")&" jours ";"");SI(DATEDIF(P2;AUJOURDHUI();"y")>0;DATEDIF(P2;AUJOURDHUI();"y")&" ans, ";"")&SI(DATEDIF(P2;AUJOURDHUI();"ym")>0;DATEDIF(P2;AUJOURDHUI();"ym")&" mois et ";"")&SI(DATEDIF(P2;AUJOURDHUI();"md")>0;DATEDIF(P2;AUJOURDHUI();"md")&" jours";"tout juste"))))))
1621681115153.png
 

Discussions similaires

Réponses
15
Affichages
1 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 771
dernier inscrit
mikadu49