Salut,
Voici ce qu'en dit Laurent Longre
Ce lien n'existe plus
La fonction DATEDIF (calculs d'âge)
DATEDIF fait partie des fonctions masquées d'Excel, au même titre que par exemple ISPMT ou USDOLLAR. Elle n'est pas référencée par l'aide en ligne et n'apparaît pas dans la liste des fonctions disponibles de l'assistant 'Coller une fonction'.
DATEDIF permet de calculer la différence entre deux dates en années, mois et jours.
Syntaxe : =DATEDIF(Date1;Date2;Intervalle)
Cette fonction renvoie la différence entre Date1 et Date2 (Date2 >= Date1) selon l'argument Intervalle, qui peut prendre les valeurs suivantes :
'y' : différence en années
'm' : différence en mois
'd' : différence en jours
'ym' : différence en mois, une fois les années soustraites
'yd' : différence en jours, une fois les années soustraites
'md' : différence en jours, une fois les années et les mois soustraits
Exemple :
=DATEDIF('5/4/1990';'15/8/99';Intervalle) renvoie les valeurs suivantes selon la valeur de l'argument Intervalle :
'y' : 9 (ans)
'm' : 112 (mois)
'd' : 3419 (jours)
'ym' : 4 (mois restants, une fois les 9 ans soustraits)
'yd' : 132 (jours restants, une fois les 9 ans soustraits)
'md' : 10 (jours restants, une fois les 112 mois soustraits)
La fonction DATEDIF peut être en particulier utilisée pour calculer des âges. Par exemple, si la cellule A1 contient une date de naissance et la cellule B1 la date du jour :
- Age en années simples :
=DATEDIF(A1;B1;'y')&SI(DATEDIF(A1;B1;'y')>1;' ans';' an')
- Age en années et mois :
=DATEDIF(A1;B1;'y')&SI(DATEDIF(A1;B1;'y')>1;' ans, ';' an, ')
&DATEDIF(A1;B1;'ym')&' mois'
- Age en années, mois et jours :
=DATEDIF(A1;B1;'y')&SI(DATEDIF(A1;B1;'y')>1;' ans, ';' an, ')&DATEDIF(A1;B1;'ym')
&' mois, '&DATEDIF(A1;B1;'md')&SI(DATEDIF(A1;B1;'md')>1;' jours';' jour')
Cette formule peut faire apparaître des '0 an', '0 mois' ou '0 jour', par exemple si A1=22/01/1968 et B1=22/02/1968, elle renverra '0 an, 1 mois, 0 jour'. Pour éliminer ces 0 et renvoyer seulement '1 mois', utiliser la formule suivante :
=SUPPRESPACE(SI(B1-A1;TEXTE(DATEDIF(A1;B1;'y');'[>1]0'' ans'';[>]''1 an'';')&TEXTE(DATEDIF(A1;B1;'ym');'[>] 0'' mois '';')&TEXTE(DATEDIF(A1;B1;'md');'[>1]0'' jours'';[>]''1 jour'';');'0 jour'))
La fonction non documentée DATEDIF ne faisant pas partie de la collection WorksheetFunction, il est nécessaire de passer par la fonction Evaluate pour l'utiliser à partir de VBA.
La fonction VBA suivante s'appuie sur DATEDIF pour renvoyer un âge en années, mois et jours à partir de deux dates :
Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate('DATEDIF(' & D1 & ',' & D2 & ',''y''')
AGE = Elt & IIf(Elt > 1, ' ans, ', ' an,') & _
Evaluate('DATEDIF(' & D1 & ',' & D2 & ',''ym''') & ' mois, '
Elt = Evaluate('DATEDIF(' & D1 & ',' & D2 & ',''md''')
AGE = AGE & Elt & IIf(Elt > 1, ' jours', ' jour')
Â+