XL 2019 Calculer le nombre de mois d'une année entre deux dates

FDJR_91

XLDnaute Nouveau
Je souhaite connaitre le nombre de mois (Précis) je m'explique,

Si je fais :

=DATEDIF(31/03/2021;17/07/2021;"m") cela me donne le résultat 3

Alors que je souhaite obtenir 3,5 car il y a bien 3 mois 1/2 entre les deux dates

Savez-vous comme je doit m'y prendre ?
 

Victor21

XLDnaute Barbatruc
Re,
1° On dit bonjour.
2° Le mois n'est pas une unité : le nombre de jours d'un mois varie entre 28 et 31.
La différence entre les deux dates (attention aux intervalles) donnera un nombre de jours, qu'i faudra diviser par un nombre que vous aurez choisi comme nombre de jours moyen dans un mois.
(17/7/2021-31/03/21+1)/30,4375 =3.58... mois
PS : 30.4375 =365,25/12
 

FDJR_91

XLDnaute Nouveau
Re,
1° On dit bonjour.
2° Le mois n'est pas une unité : le nombre de jours d'un mois varie entre 28 et 31.
La différence entre les deux dates (attention aux intervalles) donnera un nombre de jours, qu'i faudra diviser par un nombre que vous aurez choisi comme nombre de jours moyen dans un mois.
(17/7/2021-31/03/21+1)/30,4375 =3.58... mois
PS : 30.4375 =365,25/12
Oui, pas bien réveillé, ;)
Bonjour, et merci de votre réponse,
Pourriez-vous me saisir la formule dans le tableau ci-joint ?

Merci à vous
 

Pièces jointes

  • Classeur1.xlsx
    11 KB · Affichages: 14

Dranreb

XLDnaute Barbatruc
J'ai aussi ça :
En C2 :
Code:
=DuréeEnClair(B2-A2+1)
Avec cette fonction perso dans un module standard :
VB:
Function DuréeEnClair(ByVal DuRest As Double, Optional ByVal OPé As Long = -1) As String
   Dim U As Long, DuUnit As Double, NbUnit As Long, Trad As String, Compter As Boolean, K As Long
   For U = 1 To 6
      If DuRest = 0 Then Exit For
      If OPé > 0 And U > OPé Then Exit For
      DuUnit = Choose(U, 365.2425, 30.436875, 7, 1, 1 / 24, 1 / 1440)
      NbUnit = Int(DuRest / DuUnit)
      If NbUnit > 0 Then
         If OPé <= 0 Then Compter = True
         If Trad <> "" Then
            If DuréeEnClair <> "" Then
               DuréeEnClair = DuréeEnClair & ", " & Trad
            Else
               DuréeEnClair = Trad: End If
            End If
         Trad = NbUnit & " " & Choose(U, "an", "mois", "sem.", "jour", "heure", "min")
         If NbUnit * Choose(U, 1, 0, 0, 1, 1, 0) > 1 Then Trad = Trad & "s"
         DuRest = DuRest - DuUnit * NbUnit: End If
      If Compter Then K = K - 1: If K < OPé Then Exit For
      Next U
   If Trad <> "" Then
      If DuréeEnClair <> "" Then
         DuréeEnClair = DuréeEnClair & " et " & Trad
      Else
         DuréeEnClair = Trad: End If
      End If
   If OPé > 0 And DuréeEnClair = "" Then DuréeEnClair = "Moins d'1 " _
      & Choose(OPé, "an", "mois", "sem.", "jour", "heure", "min")
   End Function
Vaut ici "3 mois et 2 sem."
 

Discussions similaires

Statistiques des forums

Discussions
315 103
Messages
2 116 242
Membres
112 695
dernier inscrit
ben44115