Si vous utilisez Excel pour suivre les informations sur les projets, vous souhaiterez peut-être connaître la durée d’un projet donné en années, mois et jours. Si vous avez la date de début et la date de fin pour chaque projet, vous pouvez utiliser la fonction de feuille de calcul DATEDIF pour renvoyer les informations de la manière souhaitée.

Par exemple, supposons que vous ayez une date de début dans la cellule E7 et la date de fin dans la cellule F7. Vous pouvez calculer la différence entre les deux dates avec cette utilisation très simple de DATEDIF:

=DATEDIF(E7,F7,"d")

Cette fonction renvoie le nombre de jours entre les deux dates, à condition que la date dans E7 soit inférieure ou égale à la date dans F7. Le troisième argument, « d », oblige DATEDIF à renvoyer son résultat en jours. Vous pouvez également spécifier des mois (« m ») et des années (« y »). Pour les besoins de cet exemple, cependant, plusieurs autres arguments sont particulièrement utiles: mois hors années (« ym »), jours hors années ( « yd »), et les jours hors mois et années (« md »).

En utilisant ces différents arguments, vous pouvez concocter une formule qui renverra une réponse indiquant les jours écoulés en années, mois et jours.

(En raison de la longueur des formules de cette astuce, je les ai divisées en lignes séparées pour les rendre un peu plus faciles à lire. Il s’agit d’une formule unique, cependant, et doit être entrée comme tel dans Excel.)

=DATEDIF(E7,F7,"y") & " years, " & DATEDIF(E7,F7,"ym")

& " months, " & DATEDIF(E7,F7,"md") & " days "

Notez que cette formule renverra toujours des unités au pluriel, comme en années, mois et jours. Pour ceux qui veulent être grammaticalement correct et fournir des unités singulières quand il est demandé, la formule suivante fera l’affaire:

=IF(DATEDIF(E7,F7,"y")=1,DATEDIF(E7,F7,"y")&" year, ", DATEDIF(E7,F7,"y")&" years, ")&IF(DATEDIF(E7,F7,"ym")=1, DATEDIF(E7,F7,"ym") &" month, ",DATEDIF(E7,F7,"ym")

&" months, ")&IF(DATEDIF(E7,F7,"md")=1,DATEDIF(E7,F7,"md")

&" day",DATEDIF(E7,F7,"md")&" days")

Ce wor ks dans tous les cas, sauf lorsque les années, les mois ou les jours sont égaux à zéro. Pour se débarrasser de l’unité appropriée lorsqu’elle est égale à zéro, il faut une formule encore plus longue:

=IF(DATEDIF(E7,F7,"y")=0,"",IF(DATEDIF(E7,F7,"y")=1, DATEDIF(E7,F7,"y")&" year, ",DATEDIF(E7,F7,"y")&" years, "))

&IF(DATEDIF(E7,F7,"ym")=0,"",IF(DATEDIF(E7,F7,"ym")=1, DATEDIF(E7,F7,"ym")&" month, ",DATEDIF(E7,F7,"ym")&" months, "))

&IF(DATEDIF(E7,F7,"md")=0,"",IF(DATEDIF(E7,F7,"md")=0, DATEDIF(E7,F7,"md")&" day ",DATEDIF(E7,F7,"md")&" days"))

Cette formule devient assez longue, mais elle ne renverra que les unités pour lesquelles il existe une valeur. Ainsi, au lieu de renvoyer « 0 an, 2 mois, 1 jour », il retournera « 2 mois, 1 jour ».

Même ce n’est pas une formule parfaite, car elle affichera toujours les virgules entre les entrées dans certaines situations où elles ne sont pas justifiées. La mégaformule suivante devrait corriger les pluriels et les virgules et supprimer zéro entrée.

=IF(DATEDIF(E7,F7,"y")=0,"",IF(DATEDIF(E7,F7,"y")=1, DATEDIF(E7,F7,"y")&"year",DATEDIF(E7,F7,"y")&"years"))

&IF(AND(DATEDIF(E7,F7,"y")<>0,DATEDIF(E7,F7,"ym")<>0),", ","")

&IF(DATEDIF(E7,F7,"ym")=0,"",IF(DATEDIF(E7,F7,"ym")=1, DATEDIF(E7,F7,"ym")&" month",DATEDIF(E7,F7,"ym")&" months"))

&IF(AND(OR(DATEDIF(E7,F7,"y")<>0,DATEDIF(E7,F7,"ym")<>0), DATEDIF(E7,F7,"md")<>0),", ","")&IF(DATEDIF(E7,F7,"md")=0,"", IF(DATEDIF(E7,F7,"md")=1,DATEDIF(E7,F7,"md")&" day", DATEDIF(E7,F7,"md")&" days"))

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2184) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Elapsed_Days_as_Years_Months_and_Days [Jours écoulés en années, mois et jours].