Calcul de l'age

Résolu
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 6 janv. 2009 à 17:23
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 7 janv. 2009 à 09:06
bonsoir
j'ai se code pour convertir une date en age,elle fonctionne super bien

PrivateSub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

Dim datedenaissance = CDate(mDate.Text)
Dim age AsInteger = DateDiff(DateInterval.Year, DateTime.Now, datedenaissance)
If mDate.Text = ("--/--/----") Then
MsgBox("ATTENTION : Veuillez mettre une date de naissance....", vbCritical + vbExclamation, "OUBLI")
Else
Me.Label1.Text = age & " ans"
EndIf
EndSub
mais le probleme c'est quand le textbox (mDate) est vide j'ai une erreur,donc jai mis se msgbox
mais j'ai cette erreur :
"La conversion de la chaîne "  /  /" en type 'Date' n'est pas valide."
auriez vous une idée
merci
pechy
A voir également:

10 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 janv. 2009 à 20:59
Je viens de remarquer que ce n'est pas assez précis avec le nombre de mois et j'ai donc essayé avec le nombre de jours que j'ai divisé avec 365,25.

Mais j'avais le même problème, j'ai fini par trouver, ça venait de Math.Round. Il faut utiliser à la place Math.Truncate (pour tronquer le nombre)

Voici donc le code qui fonctionne correctement :





Private Sub
 Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     Dim datedenaissance As Date
     Dim age As Integer

     If mDate.Text =   ""   Or Not  IsDate(mDate.Text) Then
          MsgBox("Veuillez entrer une date correcte", MsgBoxStyle.Information, "Erreur !!!")
          Exit Sub
     End If

     datedenaissance  = CDate(mDate.Text)

     age =  DateDiff(DateInterval.Day, datedenaissance,  Date .Today)

     age  = Math.Truncate(age / 365.25)

     Label1.Text =  age &  " ans"

End Sub





++

Fauve

<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
3
Supra3000 Messages postés 159 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 8 janvier 2010 2
6 janv. 2009 à 17:42
If mDate.Text = "" or IsNull(mDate.Text) = True Then
   msgbox "Veuillez indiquer une date!"
   Exit Sub
End if
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
6 janv. 2009 à 17:56
Re
merci de ta réponse ,mais ça ne fonctionne pas
je suis en vb9
j'ai essayer de remplacer IsNull par DBNull mais c'est refuser.
petchy

 
0
MOUSSAOUIAAZIZ Messages postés 48 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 9 novembre 2009
6 janv. 2009 à 18:31
Salut;



If







Not

IsDate(mDate.Text)

Then



   MsgBox("ATTENTION : Veuillez mettre une date de naissance....", vbCritical +    vbExclamation, "OUBLI")






Else
     



mDate.Text = Format(TextBox1.Text,


"dd-mm-yyyy"

)
      Me.Label1.Text = age & " ans"

end if
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 janv. 2009 à 18:52
Salut,


<hr size= "2" width="100%" />


Il y avait quelques petites erreurs :

1°) Il faut vérifier avant de faire la conversion que mDate contient au moins un caractère et que ceux
qui est rentré soit une date.

2°)
Dim
age
As
Integer
= DateDiff(DateInterval.Year, DateTime.Now, datedenaissance)




En écrivant cette ligne de code comme ci-dessus, l'age que tu vas récupérer sera négatif, il faut intervertir DateTime.Now avec datenaissance





<hr size="2" width="100%" />


Voici le code en entier :




Private
Sub


TextBox1_TextChanged(


ByVal






sender


As






System.Object,


ByVal






e


As






System.EventArgs)


Handles


TextBox1.TextChanged




Dim
 datedenaissance As Date
Dim age As Integer

If mDate.Text  =  ""  Or Not IsDate(mDate.Text) Then
     MsgBox("Veuillez entrer une date correcte", MsgBoxStyle.Information, "Erreur !!!")
     Exit Sub
End If

datedenaissance  =   CDate (mDate.Text)

age  = DateDiff(DateInterval.Year, datedenaissance, DateTime.Now)

Label1.Text = age & " ans"






End
Sub








<hr size="2" width="100%" />
++

Fauve

<hr size="2" width="100%" />
Pensez : Réponse Acceptée 
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
6 janv. 2009 à 19:50
super merci à vous c'est nickel

encore une derniere question
voila quand je met une date 01/02/2000 il m'indique 9ans
comment faire pour qu'il mette 8 ans,pour etre un peu plus précis.
encore merci pour mon premier probleme

petchy
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 janv. 2009 à 20:37
Dans ce cas, il faut alors récupérer le nombre de mois au lieu de l'année car je pense que DateDiff doit arrondir au supérieur.

En récupérant le nombre de mois, on pourra nous même effectuer la conversion et être plus précis.

Voici le code :




P





rivate Sub
 TextBox1_TextChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

     Dim  datedenaissance As Date
     Dim month, age As Integer

     If mDate.Text =   ""   Or Not  IsDate(mDate.Text) Then
          MsgBox("Veuillez entrer une date correcte", MsgBoxStyle.Information, "Erreur !!!")
          Exit Sub
     End If

     datedenaissance  = CDate(mDate.Text)

     month =  DateDiff(DateInterval.Month, datedenaissance,  Date .Today)

     age  = Math.Round(month / 120, MidpointRounding.AwayFromZero)

     Label1.Text =  age &  " ans"

End Sub





++

Fauve

<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 janv. 2009 à 20:49
le mieux, nombre de jours / 365.25
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 janv. 2009 à 21:01
Flûte Renfield a eu 10 min et 49 secondes d'avance sur moi

<hr size="2" width="100%" />Pensez : Réponse Acceptée 
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
7 janv. 2009 à 09:06
bonjour
un grand merci à vous,c'est nickel
@ plus
petchy
0
Rejoignez-nous