Age à date précise

Bonjour,

je souhaiterais afficher l'age d'une personne en fonction de sa date de naissance mais à une date précise

Exemple :

A = Date de Naissance

B = Age au au 31/12/2017

MERCI de votre aide

Edit : Erreur de calcul, je me disais qu'il me manquait quelque chose ..

bonjour,

une manière de faire

=ENT((B1-A1)/365.25)

petit souci : lorsque je mets en date de naissance 31/12/2017, il m'affiche 0 en date de naissance !!!

Bonjour le forum,

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

je dois remplacer aujourd'hui() par "31/12/2017" ?

Oui.

Le fichier joint sélectionné n’est plus disponible.

Il existe une fonction "cachée" d'excel (non documentée) qui est datedif

=DATEDIF(A2;B2;"Y")&" an(s), "&DATEDIF(A2;B2;"YM")&" mois et "&DATEDIF(A2;B2;"MD")&" jour(s)"

Bonjour mbbp

le temps de faire un exemple et tu as donné la réponse !

110datedif.xlsx (8.75 Ko)

Ce qui donne :

Salut Steelson :

age

bonjour

en precis

=DATEDIF(A1;B1;"y")&" ans "&DATEDIF(A1;B1;"ym")&" mois "&DATEDIF(A1;B1;"md")&"  jours"

a1= date de naissance

b1 = la date

cordialement

Bonsoir le fil,

Si cela peut intéresser, j'ai deux fonctions sur ces questions (faites autrefois pour répondre à une demande...)

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
    End If
    d = CDate(dn)
    If CLng(d) > 0 And CLng(d) < 60 Then d = d + 1
    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

La fonction utilise 3 arguments : le premier obligatoire (la date de naissance), le 2e optionnel (indication "a" ou "m" ou "j" pour que l'âge soit exprimé en années, ou en années et mois, ou en années, mois et jours, s'il est omis l'âge est exprimé en années seulement), et le 3e optionnel également (date à laquelle on veut que l'âge soit calculé, s'il est omis, l'âge est calculé à la date d'aujourd'hui).

Exemples :

A1=06/01/1955 => =AGE(A1) renverra : 62 ans

A1=30/07/1952 => =AGE(A1;"m") renverra : 64 ans 11 m.

A1=27/07/1895 => =AGE(A1;"j") renverra : 121 ans 11 m. 23 j.

NB- La fonction effectue le calcul pour des dates antérieures à 1900...

A1=21/07/2017 => =AGE(A1) renverra : #N/A

La date est future ! Mais ces résultats vont varier puisque calculés sur la date du jour. La dernière formule, demain, affichera : 0 an

A1=28/01/1944

B1=31/12/2017 => AGE(A1;"j";B1) renverra : 73 ans 11 m. 3 j.

Résultat qui ne variera pas puisque calculé sur une date fixe.

Nota- La demande résultait de difficultés rencontrées avec DATEDIF...

Voilà pour la 1re fonction. La seconde est un peu l'inverse, elle calcule la date anniversaire (le prochain, ou à un âge donné).

Seconde fonction :

Function ANNIV(dn, Optional aga As Integer = 0)
    Dim d, hui, a%
    Application.Volatile
    On Error Resume Next
    If aga < 0 Then GoTo errdate
    d = CDate(dn)
    If CLng(d) > 0 And CLng(d) < 60 Then d = d + 1
    On Error GoTo errdate
    If aga = 0 Then
        hui = Date
        a = DateDiff("yyyy", d, hui)
        If DateAdd("yyyy", a, d) <= hui Then a = a + 1
    Else
        a = aga
    End If
    d = DateAdd("yyyy", a, d)
    ANNIV = Array(Format(d, "dd/mm/yyyy"), a & IIf(a > 1, " ans", " an"))
    Exit Function
errdate:
    ANNIV = CVErr(xlErrNA)
End Function

Cette fonction utilise 2 arguments : le premier obligatoire (la date de naissance), le second optionnel (indication de l'âge pour lequel on veut obtenir la date anniversaire, sous forme d'entier, si l'argument est omis, la fonction calcule la date du prochain anniversaire).

Exemples :

A1=11/01/1949 => =ANNIV(A1) renverra : 11/01/2018

Si on l'utilise sur deux cellules en ligne sous forme matricielle, la 2e cellule affichera : 69 ans.

A1=02/10/1947 => ANNIV(A1;77) renverra : 02/10/2024

Même chose que précédemment, sur deux cellules et validée par Ctrl+Maj+Entrée, la 2e cellule affiche : 77 ans

En cas d'erreur dans les dates ou si l'on demande l'anniversaire à un âge négatif, la fonction renverra #N/A.

Cordialement.

Rechercher des sujets similaires à "age date precise"