Calculer le nb de mois entiers entre 2 dates

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. 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. Comme ma formule renvoie -1, je te mets +1 :-))
      0
  2. 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
    1. 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
      1. 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
        1. 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
          1. 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. Oui, c'est tout bon, c'était juste une adaptation de rangée.
              0
          2. 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