Calculer le nb de mois entiers entre 2 dates

Fermé
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 - 26 déc. 2013 à 12:30
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 27 déc. 2013 à 16:28
Bonjour,
Je cherche à calculer le nb de mois entiers entre 2 dates.
Je ne peux pas utiliser la formule DateDif ex :
D1 = 02/03/2013 et D2 = 30/08/2013 : DateDif(D1;D2;"M") = 5
or les mois entiers sont 04;05;06 donc 3 mois et non 5
ou encore
D1=01/03/2013 et D2=31/08/2013 : DateDif(D1;D2;"M") = 5
or les mois entiers sont 03;04;05;06;07;08 donc 6 mois et non 5
Merci pour votre aide


A voir également:

8 réponses

.Grincheux. Messages postés 211 Date d'inscription vendredi 10 mai 2013 Statut Membre Dernière intervention 22 octobre 2016 84
26 déc. 2013 à 13:52
Bonjour,

Pour compléter la formule de "g" qui renvoie -1 dans le cas où les deux dates sont sur le même mois (ex : 14/01 et 18/01), je propose d'ajouter la formule MAX :
=MAX(0;MOIS(D2)-MOIS(D1)+1-SI(JOUR(D1)>1;1;0)-SI(FIN.MOIS(D2;0)>D2;1;0))

Par ailleurs, il peut être intéressant de prendre en compte les années.
Cette formule devrait fonctionner dans tous les cas :
=MAX(0;(ANNEE(D2+1)-ANNEE(D1-1))*12+MOIS(D2+1)-MOIS(D1-1)-1)

Bonne journée !
2
g Messages postés 1262 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 15 mai 2017 572
26 déc. 2013 à 14:10
Comme ma formule renvoie -1, je te mets +1 :-))
0
g Messages postés 1262 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 15 mai 2017 572
26 déc. 2013 à 13:20
Bonjour,

=MOIS(D2)-MOIS(D1)+1-SI(JOUR(D1)>1;1;0)-SI(FIN.MOIS(D2;0)>D2;1;0)

A noter que du 02/03/2013 au 30/08/2013 il y a 4 mois entiers et non 3.

Cordialement.
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
26 déc. 2013 à 15:16
Bonjour et merci à vous deux.
La formule de g semble fonctionner dans tous les cas (même sur un même mois) ; elle donne les mêmes résultats que celle de Grincheux (=MAX(0;MOIS(D2)-MOIS(D1)+1-SI(JOUR(D1)>1;1;0)-SI(FIN.MOIS(D2;0)>D2;1;0))

Effectivement, la formule avec les années peut-être intéressante.

Maintenant, je bute sur une autre formule, qui doit calculer le nb de jours entre 2 dates, sauf s'il s'agit d'un mois entier.
Je ne peux toujours pas utiliser la formule DateDif ex :
D1 = 01/03/2013 et D2 = 01/09/2013 : DateDif(D1;D2;"MD") = 0
or mars est entier et je voudrais avoir un résultat de 1
Ou encore
D1=01/03/2013 et D2=31/08/2013 : DateDif(D1;D2;"M") = 30
or les mois sont entiers, je voudrais un résultat à 0

Je ne maîtrise pas du tout "SI(FIN.MOIS(D2;0)>D2" ; je ne vois pas comment l'aménager ici

Encire merci beaucoup
0
g Messages postés 1262 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 15 mai 2017 572
27 déc. 2013 à 10:08
Bonjour,

Il y a peut être plus simple, mais cela doit tout de même fonctionner:

=SI(MOIS(D5)=MOIS(D6);SI(JOUR(FIN.MOIS(D6;0))=JOUR(D6);0;1);SI(JOUR(D5)>1;1;0)+SI(FIN.MOIS(D6;0)=D6;0;1))

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
Modifié par Mouftie le 27/12/2013 à 11:56
Bonjour G,
Merci pour votre réponse, mais il y a une erreur dans la formule, il doit manquer la soustraction des jours entre D2 et D1

je joins un fichier test
https://www.cjoint.com/13dc/CLBlWpJdBhZ_datedif.xlsx
0
g Messages postés 1262 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 15 mai 2017 572
27 déc. 2013 à 13:36
Re,

Il y a effectivement erreur, je me suis basé sur les mois et non sur les jours.
Alors peut être ceci:

=SI(MOIS(D5)=MOIS(D6);JOUR(D6)-JOUR(D5);SI(JOUR(D5)>1;JOUR(D5);0)+SI(FIN.MOIS(D6;0)=D6;0;JOUR(D6)))

Cordialement.
0
Mouftie Messages postés 215 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 6 septembre 2020 15
27 déc. 2013 à 14:52
Re,
Il y a toujours une erreur, car j'ai des réponses supérieures à 31...
Je pense avoir trouvé une solution

=SI(MOIS(D1)=MOIS(D2);JOUR(D2)-JOUR(D1);SI(JOUR(D1)>1;JOUR(D1);0)+SI(FIN.MOIS(D2;0)=D2;0;JOUR(D2)))

est-ce que cela vous paraît correct ?
0
g Messages postés 1262 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 15 mai 2017 572
27 déc. 2013 à 16:17
Oui, c'est tout bon, c'était juste une adaptation de rangée.
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
27 déc. 2013 à 16:28
Bonjour le fil,

date Min en A1 et Date Max en A3

à tester
=(MOIS(DATE(ANNEE(A3);MOIS(A3);1)-1)+1)-(MOIS(DATE(ANNEE(A1);MOIS(A1)+1;0)+1))
0