Souci avec la fonction DATEDIF

Résolu
Lili03100 Messages postés 157 Statut Membre -  
Raymond PENTIER Messages postés 71823 Statut Contributeur -
Bonsoir,

Je rencontre un souci avec la fonction DATEDIF : quand je veux calculer en mois la différence entre le 1er janvier 2021 et le 31 décembre 2021 soit dans la cellule B1 la fonction suivante =DATEDIF(A1;A2;"m"), le résultat obtenu donne 11 mois au lieu de 12 mois.

Savez-vous comment je peux résoudre cela ?



Configuration: Windows / Chrome 92.0.4515.131
A voir également:

3 réponses

Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
Bonjour Lili.

Dans sa logique, la fonction DATEDIF compte bien 11 mois en faisant décembre-janvier, soit 12-1.
Mets plutôt comme formule =DATEDIF(A1;A2;"j")/12
1
brucine Messages postés 23006 Statut Membre 3 574
 
Bonjour,

Non puisque DATEDIF est au format anglo-saxon: D et pas J et qu'il y a lieu (format nombre sans décimale) de diviser non par 12 mais par 30.
0
Raymond PENTIER Messages postés 71823 Statut Contributeur 17 376
 
Veuillez m'excuser : brucine a corrigé ma faute d'inattention !
0
via55 Messages postés 14730 Statut Membre 2 749
 
Bonsoir

=DATEDIF(A1;A2+1;"m")

Cdlmnt
Via
0
Lili03100 Messages postés 157 Statut Membre 1
 
Merci infinement Via55 mais ça ne fonctionne pas si par exemple je mets le 28/01/2021 et le 31/12/2021, ça affiche 11 mois
0
brucine Messages postés 23006 Statut Membre 3 574
 
Bonsoir,

Via55 a raison: DATEDIF n'inclut pas la date "non terminée" (la dernière date) dans le calcul; pour ce faire en partant du 1er janvier, il faut donc soit ajouter 1 à la date de sortie, soit la mettre non pas au 31 décembre mais au 1er janvier de l'année suivante.

Si maintenant je pars du 28 janvier, je contredis ce comportement puisque, que je choisisse +1 ou à la main 01/01/22 ou 31/12/21, le résultat est le même, 11 mois et correct, montrant qu'alors que la "date non terminée" est cette fois-ci prise en compte.

Microsoft lui-même met en garde du comportement erratique de DATEDIF qui n'existe plus que pour rétrocompatibilité Lotus.

Il paraît donc plus sain d'utiliser:

=MAX(0;(ANNEE(B2+1)-ANNEE(A2-1))*12+MOIS(B2+1)-MOIS(A2-1)-1)

qui rend un résultat cohérent dans les 2 cas.
0
Lili03100 Messages postés 157 Statut Membre 1 > brucine Messages postés 23006 Statut Membre
 
Merci brucine pour cette précision
0