Calcul age exact? [Résolu]

Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Dernière intervention
27 janvier 2014
- 27 déc. 2009 à 15:40 - Dernière réponse :
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 28 déc. 2009 à 03:25
Bonjour à tous,

j'aimerai savoir comment calculer exactement l'âge d'un homme. C'est-à dire que si l'homme est né le 30/12/70 et que je le compare avec à 27/12/09 qu'il me dise que cet homme a 28 ans et uniquement lorsqu'on sera au moins au 30/12/09 (c'est-à dire la date de son anniversaire) alors là il aura 29 ans. J'ai essayé avec le code suivant mais ça ne marche pas car il compare uniquement avec l'année :

    Dim age As Integer
    age = DateDiff("yyyy", txtdateconsultation, txtdatenaisspatient)
    txtagepatient.Text = -age


Merci d'avance pour votre aide.

Cordialement.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Dernière intervention
27 janvier 2014
- 27 déc. 2009 à 17:24
3
Merci
Bonjour PCPT et Merci pour ton aide. Mon problème est résolu grace au code suivant :

    Dim age As Integer
    
    age = DateDiff("yyyy", txtdatenaisspatient, txtdateconsultation)
    
    Dim moispatient As Integer
    Dim moisdate As Integer
    Dim jourpatient As Integer
    Dim jourdate As Integer
    
    moispatient = Month(txtdatenaisspatient)
    jourpatient = Day(txtdatenaisspatient)
    moisdate = Month(txtdateconsultation)
    jourdate = Day(txtdateconsultation)
    
    If moispatient > moisdate Or (moispatient = moisdate And jourpatient > jourdate) Then
    
        age = age - 1
        
        txtagepatient.Text = age
    
    Else
    
        txtagepatient.Text = age
    
    End If


Je te promets de tester ton code et Merci pour tout. Prends bien soin de toi. Bye!

Cordialement.

Merci js8bleu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de js8bleu
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 27 déc. 2009 à 16:41
0
Merci
salut,

je viens de déposer ce snippet (même s'il doit bien y avoir des exemples sur la toile quand même!!)

http://www.codyx.org/snippet_nombre-annees-age_659.aspx#2539

Private Sub Form_Load()
    Dim dBirth As Date
    Dim dCompare1 As Date
    Dim dCompare2 As Date

    dBirth = CDate("1970-12-30")
    dCompare1 = CDate(Format$(Date, "YYYY-MM-DD"))
    dCompare2 = CDate("2010-01-01")


    Dim iRes1 As Integer
    Dim iRes2 As Integer

    iRes1 = GetElapsedYears(dBirth, dCompare1)
    iRes2 = GetElapsedYears(dBirth, dCompare2)


    MsgBox "Aujourd'hui, l'utilisateur a " & CStr(iRes1) & " ans." & vbCrLf & _
           "Au 1e janvier, il aura " & CStr(iRes2) & " ans."

    Unload Me
End Sub



[hr]
Commenter la réponse de PCPT
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 27 déc. 2009 à 21:38
0
Merci
dCompare1 = CDate(Format$(Date, "YYYY-MM-DD"))
euh...
pas sur d'avoir saisi l'interet.

dCompare1 = Date.


Concernant:
d = CDate(Format$(Year(d2) & "-" & Month(d1) & "-" & Day(d1), "YYYY-MM-DD"))
possible d'utiliser DateSerial plutot que Format$ :
d = DateSerial(Year(d2), Month(d1), Day(d1))


Au final, l'idée est le diviser le nombre de jours entre les deux dates par le nombre de jours dans une année...

soit :

Private Sub Form_Load()
    MsgBox Age(#12/31/1983#)
End Sub

Private Function Age(ByRef vdBirthDate As Date, Optional ByVal vdNow As Date) As Long
     If vdNow = 0 Then
         vdNow = Now
     End If
     Age = Fix(DateDiff("D", vdBirthDate, vdNow) / 365.25)
 End Function




Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
- 28 déc. 2009 à 03:25
0
Merci
ton snippet est correct également, toujours plusieurs manières de procéder (d'où CODYX.ORG)

perso je remontais surtout le principe que ce code existait déjà (d'où GOOGLE !!)
Commenter la réponse de PCPT

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.