Monsieur Excel
Pour tout savoir faire sur Excel !

04 avril 2006

Découvrez la fonction DateDif()

J’ai reçu plusieurs mails de lecteurs suite à mes messages du 16 et du 22 janvier, tous pour me parler de la fonction DateDif. Certes, ma solution du 16 janvier était une démonstration des possibilités des fonctions de date dans Excel, mais il est vrai que – si l’on ne s’intéresse qu’au résultat – la fonction DateDif fait l’affaire de façon bien plus simple.

La fonction DateDif() est une de ces fonctions mystérieuses dont Excel a le secret. Elle existe depuis la version 5 d’Excel, mais n’a été documentée que dans la version 2000, pas dans les versions 97, ni 98, ni 2002, ni 2003, allez donc savoir pourquoi !

Avec Excel 2003, si vous entrez dans une cellule =datedif puis que vous faites [Ctrl]-a pour obtenir l’assistant fonction (cf. notre rubrique du 30 novembre), vous obtenez l’écran suivant qui, ensuite, mène à un écran vide quand on clique dans « Aide sur cette fonction ».

La fonction est donc reconnue, sinon l’assistant n’apparaîtrait pas. Mais alors, carton rouge pour Microsoft qui affirme qu’il n’y a pas d’argument (!) et dont le bouton d’aide mène au Triangle des Bermudes…

La syntaxe de la fonction est =datedif(date_1;date_2;mode) avec date_1<
date_2. Pour l’argument « mode », voyez la table ci-dessous :

Si vous avez entré les deux dates dont vous souhaitez calculer l’écart en A1 et A2, la formule à utiliser est : =datedif(A1;A2;"y")&si(datedif(A1;A2;"y")>1;" ans, ";" an, ")&datedif(A1;A2;"ym") &" mois et "&datedif(A1;A2;"md")&si(datedif(
A1;A2;"md")>1;" jours";" jour")
.

10 Commentaire(s):

  • tout simplement j'ai voulu dire que j'ai pas trouvé la fonction DATEDIF sous MS EXCEL 2000.

    By Anonymous Anonyme, sur 12:23 AM  

  • Comme je l'explique au début de l'article, cette fonction n'est pas documentée. On ne la "trouve" donc pas !

    Ceci dit, essayez donc la formule que j'indique et voyez ce que cela donne...

    By Blogger Hervé Thiriez, sur 8:35 AM  

  • Bonjour M.Thiriez,
    Je viens de découvrir votre excellent blog.
    J'ai appliqué la fonction datedif dans mes fichiers de généalogie.
    Pour les dates inférieures à 1900 la fonction datedif est inopérante.
    Quelle serait la solution ?
    Cordialement

    By Anonymous ROCHE Jean Paul, sur 3:10 PM  

  • Les dates antérieures au 0 janvier 1900 (cf. mon article du 14 décembre 2005) sont considérées par Excel comme du texte.

    Il faut alors utiliser les fonctions de traitement de texte pour en faire ce que vous voulez. Bon courage !

    By Blogger Hervé Thiriez, sur 9:51 AM  

  • comment pourai-je calculer en Excel, par exemple l'age aujourd'hui d'une personne née le 28/05/1969 en le faisant avec la fonction datedif?chaque fois que je le fais j'ai 39 ans, alors que dans la solution c'est 40 ans je vous remercie d'avance pour votre aide...........

    By Blogger samad, sur 2:11 PM  

  • Bonjour,

    merci beaucoup pour toutes ces explications sur la fonction DATEDIF. Je connaissais la fonction mais je n'arrivais pas à comprendre pourquoi elle était acceptée par Excel (2003 pour moi) mais non intégrée à la liste des fonctions proposées.

    Je ne connais pas Access, mais on m'a dit que la fonction DATEDIF n'était pas acceptée, est-ce normal ? Etant un produit microsoft, elle devrait l'être, non ?
    Du coup cette personne doit passer par la fonction =ENT((A2-A1)/365,25)&SI((A2-A1)/365,25<2;" an ";" ans ")&MOIS(A2-A1)&" mois". Or cette fonction n'arrive pas à résoudre entièrement le problème des années bissextiles et donne un nombre de "mois" plutôt erroné. De plus dans cette fonction, j'ai essayé d'y intégrer le nombre de "jour(s)" mais sans y parvenir.

    Petite réponse pour Samad :
    Dans ton exemple, la solution apportée par DATEDIF est bonne. Si la personne est née le 28/05/1969, elle a bien 39 ans actuellement. Elle n'aura 40 ans que le 28/05/2009.

    By Anonymous Anonyme, sur 11:24 AM  

  • Bonjour,

    Je connaissais cette fonction géniale, mais je me pose une question: excel permet-il de calculer le nombre de semaine entière entre 2 dates?
    J'ai essayé en mettant un "w", sans succès...

    Merci de votre aide!

    By Anonymous Anonyme, sur 7:27 PM  

  • Bonjour,

    Merci pour tous ces trucs et astuces et aides sur excel :)

    J'avais une question concernant la fonction datedif : je souhaiterais obtenir en résultat le nombre de mois total et non pas le détail des années, mois et jours.

    Merci

    By Blogger aude, sur 1:50 PM  

  • Bonjour, =datedif(A1;A2;"y")&si(datedif(A1;A2;"y")>1;" ans, ";" an, ")&datedif(A1;A2;"ym") &" mois et "&datedif(A1;A2;"md")&si(datedif(
    A1;A2;"md")>1;" jours";" jour"). M'indique qu'il y a une erreur dans la formule (Excel 2003). J'essaye de toute les maniére pour que DATEDIF fonctionne mais la plupart du temps j'ai un problème FORMAT. Je veux un truc tout simple : différence entre ce jour =AUJOURDUI() et la date d'échéance 29/02/2029. Hé oui, en plus une année bissextile. Merci de m'indiquer un exemple valable. Je reconnais, je suis presque nul.

    By Anonymous Anonyme, sur 4:42 PM  

  • 2029 une année bissextile ?
    avec le 29/2/2028 ça fonctionne!

    By Anonymous Anonyme, sur 10:19 AM  

Enregistrer un commentaire

<< Accueil