Ancienneté, âge: La facilité de DATEDIF (fonction non documentée... et donc peu connue!)
par
, 29/01/2018 à 20h27 (2042 Affichages)
Bonjour tout le monde,
Dans ce billet, je vous propose de nous amuser avec Excel pour calculer certains intervalles de temps. (principalement les années complètes)
Aujourd'hui 29 janvier 2018, quel est l'âge d'Anatole, né le 15 avril 1966? Si vous prenez simplement l'écart entre les années, vous vieillissez Anatole d'un an, car aujourd'hui, il n'a pas encore tout à fait 52 ans, il ne les aura qu'à partir du 15 avril...
Idem, bien sûr, pour une personne entrée dans l'entreprise le 17 juin 2013. Une simple différence entre 2018 et 2013 va lui donner cinq ans d'ancienneté, alors qu'elle n'a encore que quatre ans et des poussières.
Bien sûr, on peut s'amuser avec de chouettes formules pour tester qu'on a dépassé ou non la date anniversaire. Ca pourrait être avec une formule de ce genre qui utilise MOIS.DECALER() (199 caractères et un peu de jonglerie logique):
On peut aussi se passer de MOIS.DECALER() et recomposer l'année avec la fonction DATE(), qui demande l'année, le mois et le jour (191 caractères):
Si on, veut, pour 196 caractères, on peut tester la position du mois et du jour de la date de naissance par rapport à ces mêmes positions pour AUJOURDHUI(). c'est assez rigolo aussi...
ET...
Pour 46 caractères et beaucoup moins de gesticulations, on peut utiliser DATEDIF, qui n'est pas "connu" par l'assistant fonction ni pas la saisie semi-automatique...
Mais que Excel comprend très bien (pour peu que l'on sache que Année se dit Year en anglais):
Ouf. on s'épargne toute la réflexion logique pour tester la date anniversaire avec la date du jour...
Attention : Dans l'aide en ligne, Excel nous livre cette fonction "à des fins de compatibilité" et nous avertit que certaines erreurs peuvent être rencontrées. De plus, le tableau de l'aide en ligne reprend les codes en français alors que sur mon poste, c'est l'anglais qui prime.
Attention également que l'aide en ligne est parfois approximative:
FAUX: le 31/12/1899 a le numéro de série 0 dans Excel et la date n'est pas reconnue en tant que telle dans Excel. D'autres erreurs existent dans Excel pour les jours allant du 01/01/1900 au 28/02/1900 (notamment le fait qu'Excel considère que 1900 est une année bissextile et accepte le 29/02/1900 comme date valide alors que 1900 n'est pas une année bissextile.Les dates sont stockées sous forme de numéros de série séquentiels pour pouvoir être utilisées dans les calculs. Par défaut, le 31 décembre 1899 a le numéro de série 1 et le 1er janvier 2008 a le numéro de série 39448, étant donné que cette date arrive 39 448 jours après le 1er janvier 1900.
Néanmoins, DATEDIF reste pratique, notamment pour calculer l'écart en années complètes...
A la semaine prochaine...![]()