Calcul de l'age grâce à un textbox et à la date d'aujourd'hui

Résolu
gruflome Messages postés 13 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 18 décembre 2017 - 22 nov. 2017 à 05:51
gruflome Messages postés 13 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 18 décembre 2017 - 6 déc. 2017 à 13:22
Bonjour, je vous remercie d'avance pour toute l'aide que vous donnerai .
je prie Mr Whismeril d'excuser mon manque de délicatesse.
La procédure me permet de faire des contrôle sur les dates saisies
donc je récupère la saisie dans un textbox que converti en format date et je l'affecte à une autre variable avant d'utiliser la fonction DateDiff() pour le calcul de l'âge. mais je reçois toujours une erreur de compilation liée au type et se positionne sur la ligne "grid = DateDiff("yyyy", day, today)"



Private Sub Txtdatebornphy_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

'exemple pour format xx/xx/xxxx
Dim valeur As Byte
Dim day As Date

Dim grid As Integer
Dim today As String

Me.Txtdatebornphy.MaxLength = 10 'nb caracteres maxi dans textbo

valeur = Len(Me.Txtdatebornphy)
If valeur = 2 Or valeur = 5 Then Me.Txtdatebornphy = Me.Txtdatebornphy & "/"
'formatage du textbox en date
Me.Txtdatebornphy = Format(Me.Txtdatebornphy.Value, "dddd d mmmm yyyy")
'affectation des valeurs aux variables
day = Me.Txtdatebornphy
today = Date
'fonction de calcul de l'age
grid = DateDiff("yyyy", day, today)

'condition de contrôle de l'age
If Not grid >= 7 Then
MsgBox "Donnée erronée", vbOKOnly + vbCritical, "Erreur"
Me.Txtdatebornphy = ""
Else
If grid <= 18 Then
Me.PnlréférencementParrain.Enabled = True
Me.PnlReferencementClient.Enabled = True
End If
End If

End Sub

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié le 22 nov. 2017 à 06:58
Bonjour
Déjà :
Il est évident que
 Format(Me.Txtdatebornphy.Value, "dddd d mmmm yyyy")

(du texte, donc)
ne saurait être passé comme paramètre de date à la fonction DateDiff !

Même remarque pour ta variable today !

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
2
gruflome Messages postés 13 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 18 décembre 2017 1
22 nov. 2017 à 07:14
Merci. j'ai apporté une modification au code et le problème persiste "incompatibilité de type"

Me.Txtdatebornphy = Format(Me.Txtdatebornphy.Value, "DD/MM/YYYY")
'affectation des valeurs aux variables
day = Me.Txtdatebornphy
today = Date
today = Format(today, "DD/MM/YYYY")
'fonction de calcul de l'age
grid = DateDiff("yyyy", day, today)
1
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
22 nov. 2017 à 08:24
Bonjour à tous les 2.

Gruflome, comme Uc te l’indique, DateDiff a besoin de variables de type Date en entrée.
Il suffit de lire l’aide en ligne de la fonction Format pour voir qu’elle retourne une String.
Une String, c’est du texte, « mercredi 22 novembre » c’est du texte qui représente graphiquement la date d’aujourd’hui. Mais un truc écrit sur un bout de papier ou un forum n’est pas la date d’aujourd’hui. La date c’est le temps qui passe.

Faisons un parallèle avec la vraie vie, si on prend une photographie de toi, on aura une représentation graphique de toi, ça va te ressembler à s’y méprendre, mais ça n’est pas toi.

Dans ton cas, il faut que tu convertisses le texte issu de ta textBox en date (CDate je crois en vba) et que tu laisse Date comme il est.


1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié le 22 nov. 2017 à 07:42
Tu ne sais manifestement pas lire ce qui t'a été exposé !

Si tu en es encore à ne pas savoir ce que sont les variables et leur type, tu as tout à apprendre depuis le tout-début (les rudiments).

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 nov. 2017 à 08:34
Bonjour Whismeril,
Il y a plus gênant encore, mais il est trop tôt (compte tenu des bases encore absentes) pour en parler.
Si l'âge d'une personne n'était qu'une différence entre deux millésimes, cela se saurait ... (et celui né un 31 décembre aurait déjà un an dès le lendemain ...) !
0
Whismeril Messages postés 19020 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 15 avril 2024 656
22 nov. 2017 à 08:58
Certes
0
gruflome Messages postés 13 Date d'inscription lundi 23 mai 2016 Statut Membre Dernière intervention 18 décembre 2017 1
6 déc. 2017 à 13:22
Merci à tous pour votre aide
0
Rejoignez-nous