Calcul de l'age [Résolu]

Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
- 6 janv. 2009 à 17:23 - Dernière réponse :
Messages postés
710
Date d'inscription
jeudi 20 février 2003
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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Dernière intervention
23 mars 2011
- 6 janv. 2009 à 20:59
3
Merci
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 

Merci cs_fauve 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_fauve
Messages postés
160
Date d'inscription
lundi 18 février 2008
Dernière intervention
8 janvier 2010
- 6 janv. 2009 à 17:42
0
Merci
If mDate.Text = "" or IsNull(mDate.Text) = True Then
   msgbox "Veuillez indiquer une date!"
   Exit Sub
End if
Commenter la réponse de Supra3000
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
- 6 janv. 2009 à 17:56
0
Merci
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

 
Commenter la réponse de cs_petchy
Messages postés
48
Date d'inscription
samedi 5 août 2006
Dernière intervention
9 novembre 2009
- 6 janv. 2009 à 18:31
0
Merci
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
Commenter la réponse de MOUSSAOUIAAZIZ
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Dernière intervention
23 mars 2011
- 6 janv. 2009 à 18:52
0
Merci
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 
Commenter la réponse de cs_fauve
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
- 6 janv. 2009 à 19:50
0
Merci
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
Commenter la réponse de cs_petchy
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Dernière intervention
23 mars 2011
- 6 janv. 2009 à 20:37
0
Merci
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 
Commenter la réponse de cs_fauve
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 6 janv. 2009 à 20:49
0
Merci
le mieux, nombre de jours / 365.25
Commenter la réponse de Renfield
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Dernière intervention
23 mars 2011
- 6 janv. 2009 à 21:01
0
Merci
Flûte Renfield a eu 10 min et 49 secondes d'avance sur moi

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

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.