Calcul de l'age grâce à un textbox et à la date d'aujourd'hui [Résolu]

Messages postés
13
Date d'inscription
lundi 23 mai 2016
Dernière intervention
18 décembre 2017
- 22 nov. 2017 à 05:51 - Dernière réponse :
Messages postés
13
Date d'inscription
lundi 23 mai 2016
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

Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 22/11/2017 à 06:58
2
Merci
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.

Merci ucfoutu 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 87 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
13
Date d'inscription
lundi 23 mai 2016
Dernière intervention
18 décembre 2017
- 22 nov. 2017 à 07:14
1
Merci
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)
Commenter la réponse de gruflome
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 22 nov. 2017 à 08:24
1
Merci
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.


Commenter la réponse de Whismeril
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 22/11/2017 à 07:42
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 22 nov. 2017 à 08:34
0
Merci
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 ...) !
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 22 nov. 2017 à 08:58
Certes
Commenter la réponse de ucfoutu
Messages postés
13
Date d'inscription
lundi 23 mai 2016
Dernière intervention
18 décembre 2017
- 6 déc. 2017 à 13:22
0
Merci
Merci à tous pour votre aide
Commenter la réponse de gruflome

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.