Calculer age

Fermé
michou2139 Messages postés 6 Date d'inscription dimanche 22 décembre 2013 Statut Membre Dernière intervention 16 janvier 2014 - Modifié par michou2139 le 16/01/2014 à 15:10
Kusco Messages postés 466 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 15 décembre 2014 - 16 janv. 2014 à 15:57
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




1 réponse

Kusco Messages postés 466 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 15 décembre 2014 336
16 janv. 2014 à 15:04
Si je résume tu as une cellule ou une variable qui contient l'âge de tu souhaiterais vérifier ? (avec quelle précision ? Année, mois, jour ?)

Et ensuite la comparer avec une autre variable pour savoir si c'est bon ?

Ton code n'est pas très explicite comme ça donc j'essaye de comprendre.
0
michou2139 Messages postés 6 Date d'inscription dimanche 22 décembre 2013 Statut Membre Dernière intervention 16 janvier 2014
Modifié par michou2139 le 16/01/2014 à 15:26
exactement, a partir d'un code de 12 caractère , format "mmmm11057806" la date et représenté par "110578" , dans le code si haut j'ai décortiquer pour ajouter le 1900 ou 2000 pour que le calcul, je doit calculer, age exacte de utilisateur .
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
0
Kusco Messages postés 466 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 15 décembre 2014 336
16 janv. 2014 à 15:34
J'ai du mal à saisi la notion du "mmmm11057806"
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")
0
michou2139 Messages postés 6 Date d'inscription dimanche 22 décembre 2013 Statut Membre Dernière intervention 16 janvier 2014
Modifié par michou2139 le 16/01/2014 à 15:44
ces du VB.Net non ces pas a partir d'un fichier excel , en fit ce code est un code permanent du Québec(étudiant ), les lettre représente des caractère du nom et prénom les 6 premier chiffre la date de naissance les 2 dernier sont aléatoire
0
Kusco Messages postés 466 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 15 décembre 2014 336
16 janv. 2014 à 15:57
Ah mince je me disais aussi. Excuse moi mais je ne suis pas du tout orienté VB.Net mais davantage VBA.
Si quelque chose me viens je te redis tout de suite, promis.
0