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
236
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
17326
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
597
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
236
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
236
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
17326
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
597
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