Calculer age
michou2139
Messages postés
8
Statut
Membre
-
Kusco Messages postés 559 Statut Membre -
Kusco Messages postés 559 Statut Membre -
Bonjour, je désir m'assuré que l'age soit exacte , a partir de la date de naissance en prennent compte de la date du jours , dans tout les cas possible
Private Function ValideDateNaissance(ByVal pCodePermanent As String, ByRef pJour As Integer, ByRef pMois As Integer, ByRef pAnnee As Integer, ByRef pSexe As String) As Boolean
pAnnee = CInt(pCodePermanent.Substring(8, 2))
pMois = CInt(pCodePermanent.Substring(6, 2))
pJour = CInt(pCodePermanent.Substring(4, 2))
Dim intAge As Integer 'age
If pMois > 50 Then
pMois -= 50
pSexe = "Féminin"
Else
pSexe = "Masculin"
End If
If (pMois > 0 And pMois <= 12) Then
' Calcul du jour et de l'année
If pJour <= 0 Or pJour = 62 Then
MsgBox("Erreur!! le les jour des moi ne peuve egaler 0 Vérifier les caractère 5 et 6 , noter que si le jour = 62 ,il faut le soustrères pour avoir le jour exacte")
ElseIf pJour > 62 Then
pJour -= 62
pAnnee += 2000
Else
pAnnee += 1900
End If
'Calcul de 'AGE
intAge = Today.Year - pAnnee
End If
If pMois = Today.Month Then
If pJour > Today.Day Then
intAge = intAge - 1
End If
If pMois > Today.Month Then
intAge = intAge - 1
End If
If intAge < 5 Then
MsgBox("Erreur!! Veiller vérifier les caractère 5,6(jour),11 et 12(anné), noter que si les caractère 5 et 6 sont < 62 . ")
End If
lblRAge.Text = CStr(intAge) 'affiche Age
lblRDDN.Text = CStr(pJour) + " " + MonthName(pMois) + " " + CStr(pAnnee) 'affiche la date de fête
'Ou sinon utiliser la validation plus longue, mais plus détaillée.
If pMois = 2 And (pAnnee Mod 4 = 0 And pAnnee Mod 100 <> 0 Or pAnnee Mod 400 = 0) Then
'Année bissextile
If pJour > 29 Then
MsgBox("Erreur!! Il n'y a que 29 jours en février d'une année bissextile. ")
Return False
End If
Else
If pJour > NB_JOUR_ANNEE(pMois - 1) Then
MsgBox("Erreur !! Il n'y a que " + NB_JOUR_ANNEE(pMois - 1).ToString + " jours pour le mois de " + MOIS_ANNEE(pMois - 1) + ".")
Return False
End If
End If
Else
MsgBox("Erreur!! Vérifier que les caratère 7-8 son entre 01 et 12 et 51 et 62.")
Return False
End If
Return True
End Function
il ne fait pas le calcul quand la date du jour est plus petite que celle de la date de naissance.
que faire, merci de votre aide
Michel
Private Function ValideDateNaissance(ByVal pCodePermanent As String, ByRef pJour As Integer, ByRef pMois As Integer, ByRef pAnnee As Integer, ByRef pSexe As String) As Boolean
pAnnee = CInt(pCodePermanent.Substring(8, 2))
pMois = CInt(pCodePermanent.Substring(6, 2))
pJour = CInt(pCodePermanent.Substring(4, 2))
Dim intAge As Integer 'age
If pMois > 50 Then
pMois -= 50
pSexe = "Féminin"
Else
pSexe = "Masculin"
End If
If (pMois > 0 And pMois <= 12) Then
' Calcul du jour et de l'année
If pJour <= 0 Or pJour = 62 Then
MsgBox("Erreur!! le les jour des moi ne peuve egaler 0 Vérifier les caractère 5 et 6 , noter que si le jour = 62 ,il faut le soustrères pour avoir le jour exacte")
ElseIf pJour > 62 Then
pJour -= 62
pAnnee += 2000
Else
pAnnee += 1900
End If
'Calcul de 'AGE
intAge = Today.Year - pAnnee
End If
If pMois = Today.Month Then
If pJour > Today.Day Then
intAge = intAge - 1
End If
If pMois > Today.Month Then
intAge = intAge - 1
End If
If intAge < 5 Then
MsgBox("Erreur!! Veiller vérifier les caractère 5,6(jour),11 et 12(anné), noter que si les caractère 5 et 6 sont < 62 . ")
End If
lblRAge.Text = CStr(intAge) 'affiche Age
lblRDDN.Text = CStr(pJour) + " " + MonthName(pMois) + " " + CStr(pAnnee) 'affiche la date de fête
'Ou sinon utiliser la validation plus longue, mais plus détaillée.
If pMois = 2 And (pAnnee Mod 4 = 0 And pAnnee Mod 100 <> 0 Or pAnnee Mod 400 = 0) Then
'Année bissextile
If pJour > 29 Then
MsgBox("Erreur!! Il n'y a que 29 jours en février d'une année bissextile. ")
Return False
End If
Else
If pJour > NB_JOUR_ANNEE(pMois - 1) Then
MsgBox("Erreur !! Il n'y a que " + NB_JOUR_ANNEE(pMois - 1).ToString + " jours pour le mois de " + MOIS_ANNEE(pMois - 1) + ".")
Return False
End If
End If
Else
MsgBox("Erreur!! Vérifier que les caratère 7-8 son entre 01 et 12 et 51 et 62.")
Return False
End If
Return True
End Function
il ne fait pas le calcul quand la date du jour est plus petite que celle de la date de naissance.
que faire, merci de votre aide
Michel
Voici ce que je fait si date de fete est 20/02/2007 je doit soustriat 1 a l'age car la date du jour est plus petiie que celle date la fête mais l'opération ne ce fait pas
iintAge = Today.Year - pAnnee
If pMois = Today.Month Then
If pJour > Today.Day Then
intAge = intAge - 1
End If
If pMois > Today.Month Then
intAge = intAge - 1
End If
If intAge < 5 Then
MsgBox("Erreur!! Veiller vérifier les caractère 5,6(jour),11 et 12(anné), noter que si les caractère 5 et 6 sont < 62 . ")
End If
lblRAge.Text = CStr(intAge)+" ans" 'affiche Age
lblRDDN.Text = CStr(pJour) + " " + MonthName(pMois) + " " + CStr(pAnnee) 'affiche la date de fête
merci
Aurais-tu une fichier Excel pour que je puisse voir un cas concret ?
Car sans passer par du VBA tu peux simplement prendre des formules :
A1 A2 A3
14/02/1993 16/01/2014 20
Derrière c'est :
14/02/1933 =AUJOURDHUI() =DATEDIF(A1;A2;"y")
Si quelque chose me viens je te redis tout de suite, promis.