Date en âge

Bonsoir,

Je cherche à transformer une date sous la forme 12/02/1956 en âge sous la forme : année, mois, jour et que si possible à chaque fois qu'on ouvre le fichier excel dans le futur l'âge continu à évoluer dans le temps.

Est-ce possible

Merci pour vos réponses.

Bonsoir

Une fonction à mettre dans un module

Public Function Calcul_AGE(Date1 As Date, Date2 As Date) As String
    Dim DATE_NAISSANCE As Long, DATE_JOUR As Long
    Dim Elt As Long
    Dim x As String, y As String, z As String

    DATE_NAISSANCE = Int(Date1): DATE_JOUR = Int(Date2)
    If DATE_JOUR < DATE_NAISSANCE Then
        Calcul_AGE = "Date invalide"
        Exit Function
    End If

    Elt = Evaluate("DATEDIF(" & DATE_NAISSANCE & "," & DATE_JOUR & ",""y""")
    If Elt > 0 Then x = Elt & IIf(Elt > 1, " ans, ", " an, ")

    Elt = Evaluate("DATEDIF(" & DATE_NAISSANCE & "," & DATE_JOUR & ",""ym""")
    If Elt > 0 Then y = Elt & " mois et "

    Elt = Evaluate("DATEDIF(" & DATE_NAISSANCE & "," & DATE_JOUR & ",""md""")
    If Elt > 0 Then z = Elt & IIf(Elt > 1, " jours", " jour")

    Calcul_AGE = x + y + z
    If Right(Calcul_AGE, 3) = "et " Then Calcul_AGE = Left(Calcul_AGE, Len(Calcul_AGE) - 3)

     End Function

Sub DescriptionFonction()
    Dim NomFonction As String
    Dim DescriptionFonction As String
    Dim CategorieFonction As String
    Dim ArgumentDesc(1 To 2) As String

    NomFonction = "Calcul_AGE"
    DescriptionFonction = "FONCTION PERSO : Permet de donner la durée entre deux dates par Années, Mois et Jours"
    CategorieFonction = 2
    ArgumentDesc(1) = "Date la plus antérieure"
    ArgumentDesc(2) = "Date la plus récente"

    Application.MacroOptions _
                Macro:=NomFonction, _
                Description:=DescriptionFonction, _
                Category:=CategorieFonction, _
                Argumentdescriptions:=ArgumentDesc

End Sub

Function HT(Montant, TauxTva)
HT = Round(Montant / (100 + TauxTva) * 100, 2)
End Function
=Calcul_AGE(B4;AUJOURDHUI())

avec b4 pour la date de naissance

Bonjour

Exemple avec la formule en place

Cordialement

21quel-age.xlsx (8.81 Ko)

bonjour

avec DATEDIFF regarde l'aide pour la syntaxe

cordialement

Bonjour le forum,

=DATEDIF(A1;AUJOURDHUI();"y")&" an(s), "&DATEDIF(A1;AUJOURDHUI();"ym")&" mois et "&DATEDIF(A1;AUJOURDHUI();"md")&" jour(s)"
age

Wahhhhh, quel rapidité, merci.

Dans l'ordre, M12, je ne comprends pas bien tout la fonction à mettre dans le module !!!! ça me parait compliqué.

Amadéus et Mbbp, là je comprend mieux, je vais essayer sur mon fichier.

Merci Tulipe 4

Est-ce que dans ces formules la date de départ (aujourd'hui) est évolutive dans le temps? Si j'ouvre dans 10 jours, l'âge sera modifiée ?

Désolé pour cette question mais je préfère demander

A minuit : 27 ans 1 mois et 10 jours

mbbp a écrit :

A minuit : 27 ans 1 mois et 10 jours

Merci beaucoup

Bonne soirée

Bonsoir,

En fouillant mes cartons, une fonction de calcul d'âge :

Function AGE(dn, Optional aff As String = "a", Optional df)
    Dim d, hui, a%, m%, j%, agr$
    Application.Volatile
    On Error Resume Next
    If IsMissing(df) Then
        hui = Date
    Else
        hui = CDate(df)
        If CLng(hui) > 0 And CLng(hui) < 60 Then hui = hui + 1
        'hui = CDate(df)
    End If
    d = CDate(dn)
    If CLng(d) > 0 And CLng(d) < 60 Then d = d + 1
    'd = CDate(dn)
    If hui < d Then GoTo errdate
    On Error GoTo errdate
    a = DateDiff("yyyy", d, hui)
    If DateAdd("yyyy", a, d) > hui Then a = a - 1
    agr = a & IIf(a > 1, " ans", " an")
    If UCase(aff) = "M" Or UCase(aff) = "J" Then
        d = DateAdd("yyyy", a, d)
        m = DateDiff("m", d, hui)
        If DateAdd("m", m, d) > hui Then m = m - 1
        agr = agr & " " & m & " m."
        If UCase(aff) = "J" Then
            d = DateAdd("m", m, d)
            j = DateDiff("y", d, hui)
            agr = agr & " " & j & " j."
        End If
    End If
    AGE = agr
    Exit Function
errdate:
    AGE = CVErr(xlErrNA)
End Function

Elle renvoie l'âge sous une forme littérale.

Un premier argument (obligatoire) : une date ! (la date de naissance en principe, mais ce qui lui importe c'est qu'il s'agisse d'une date. )

Un deuxième argument (optionnel) : "a" ou omis = elle renvoie l'âge en années seulement (ex.: 56 ans)

"m" = elle renvoie années et mois (ex.: 62 ans 4 m.)

"j" = elle renvoie année, mois, jours (ex.: 4 ans 6 m. 23 j.)

Un troisième argument (optionnel) permet de fournir la date à laquelle on veut calculer l'âge. Si cet argument n'est pas utilisé, le calcul fait est celui de l'âge à la date du jour. (Ce dispositif permet de l'utiliser pour calculer de façon générale la différence entre deux dates.)

En prime : elle corrige le bogue d'Excel sur les dates du 1er janvier au 28 février 1900 (écart d'un jour).

Et elle opère aussi sur les dates antérieures à 1900 (non prises en compte comme dates par Excel, mais que VBA reconnait comme dates, que la fonction peut également considérer comme telles). Les dates doivent être fournies sous la forme : jj/mm/aaaa.

Cordialement.

Rechercher des sujets similaires à "date age"