Calculer le nb de mois entiers entre 2 dates

Mouftie Messages postés 234 Statut Membre -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
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

8 réponses

  1. .Grincheux. Messages postés 211 Date d'inscription   Statut Membre Dernière intervention   84
     
    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
    1. g Messages postés 1285 Statut Membre 578
       
      Comme ma formule renvoie -1, je te mets +1 :-))
      0
  2. g Messages postés 1285 Statut Membre 578
     
    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
  3. Mouftie Messages postés 234 Statut Membre 17
     
    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
  4. g Messages postés 1285 Statut Membre 578
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. g Messages postés 1285 Statut Membre 578
     
    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
  7. Mouftie Messages postés 234 Statut Membre 17
     
    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
    1. g Messages postés 1285 Statut Membre 578
       
      Oui, c'est tout bon, c'était juste une adaptation de rangée.
      0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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