Calcul age exact? [Résolu]

js8bleu 576 Messages postés samedi 14 octobre 2006Date d'inscription 27 janvier 2014 Dernière intervention - 27 déc. 2009 à 15:40 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 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
js8bleu 576 Messages postés samedi 14 octobre 2006Date d'inscription 27 janvier 2014 Dernière intervention - 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é 96 internautes ce mois-ci

Commenter la réponse de js8bleu
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 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
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 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.