Microsoft 365 calcul d age entre deux dates

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pouetpouetlagalette

XLDnaute Junior
Bonjour,
j'ai mis cette formule pour le calul entre deux dates
=(ANNEE(MAINTENANT())-ANNEE(H9))
l 'une est la date du jour - la date au format JJ/MM/AAAA.
Celle mi me donne l'écart en année (chiffre entier).
SAUF QUE,
çelà ne me donne pas l'âge réel
exemple pour une date de naissance du 11/04/2011, j'obtient donc 14;
Sauf que en réel c'est 13 années, ce sera 14 années le 11/04/2025
Et là c'est le couac, je ne trouve pas sur gogole la solution,
Un avis, une idée;
Force et robustesse,
Merci
 
Bonjour à tous 😉,

Je ressors un très vieux machin que j'avais codé il y a bien longtemps quand j'étais beaucoup plus jeune 😟. Comme je ne l'ai bien sûr pas retrouvé, j'ai essayé de m'en souvenir. C'était rigolo (on s'amuse comme on peut 🥳) car basé sur une boucle pour déterminer le nombre total de mois complet entre les deux dates. A partir de ce nombre total de mois, les durées en années, mois et jours sont faciles à calculer. C'est juste pour publier quelque chose. Voir les formules en colonne de C à F et de K à N.

VB:
'=============================================================================================
' Fonction = AMJ(date1, Date2, periode)
' Date1 est une date au sens Excel et Date2 est aussi une date au sens Excel
' Periode indique le type de retour :
'     - si periode est le caractère a ou A ou y ou Y alors on retourne le nombre d'année complète entre
'           les deux dates
'     - si periode est le caractère m ou M alors on retourne le nombre de mois complets entre
'           les deux dates (sans les mois des années complètes)
'     - si periode est le caractère j ou J ou d ou D alors on retourne le nombre de jours entre les
'            deux dates (sans les jours des années et mois complets)
'     - dans les autres cas, on retourne en un seul bloc les nombre d'année, de mois et de jour
'     - si periode est omis alors on applique le dernier cas (retour d'un seul bloc a m j)
'=============================================================================================

Function AMJ(ByVal d1 As Date, ByVal d2 As Date, Optional ByVal xPeriode = "")
Dim di As Date, df As Date, d As Date, a&, m&, j&, i&, x$
   di = d1: df = d2                             ' recup des deux dates
   If di >= df Then di = d2: df = d1            ' di plus petite date, df plus grande date
   For i = 12 * (Year(df) - Year(di) + 1) To 0 Step -1   '  boucle sur un nombre de mois
      d = DateSerial(Year(di), Month(di) + i, Day(di))   ' d est la date di à laquelle on ajoute le nombre de mois i
      If d <= df Then m = i: Exit For     ' si d est inférieur à la date df alors le nombre de mois complet est i
   Next i
   a = m \ 12                             ' calcul du nombre d'année entière
   m = m - a * 12                         ' calcul du nombre de mois (sans les mois des années complètes)
   j = df - DateSerial(Year(di) + a, Month(di) + m, Day(di))   ' calcul du nombre de jours (sans les années et les mois)
   If d1 > d2 Then a = -a: m = -m: j = -j ' si d1 est postérieure à d2 alors a, m et j sont négatifs
   Select Case LCase(xPeriode)                     ' en fonction du retour souhaité
      Case "a", "y": AMJ = a                       ' retour des années complètes
      Case "m": AMJ = m                            ' retour des mois compléts
      Case "j", "d": AMJ = j                       ' retour des jours
      Case Else: AMJ = Join(Array(a, m, j), ",")   ' retour des années, mois et jours
   End Select
End Function

nota : comme c'est (bien) connu, au niveau des dates entre Excel et VBA, les calculs ne sont justes que pour des dates Excel à partir du 1er mars 1900.
edit : v1a : une borne de la boucle a été modifiée (ça ne joue que sur la vitesse - résultats identiques à la v1)
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
2 K
Retour