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

gruflome 8 Messages postés lundi 23 mai 2016Date d'inscription 7 décembre 2017 Dernière intervention - 22 nov. 2017 à 05:51 - Dernière réponse : gruflome 8 Messages postés lundi 23 mai 2016Date d'inscription 7 décembre 2017 Dernière intervention
- 6 déc. 2017 à 13:22
VBA Office (Excel, Word ...) Posez votre question Signaler Répondre au sujet
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 
8Messages postés lundi 23 mai 2016Date d'inscription 7 décembre 2017 Dernière intervention

7 réponses

Répondre au sujet
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 22/11/2017 à 06:58
+2
Utile
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.
Commenter la réponse de ucfoutu
gruflome 8 Messages postés lundi 23 mai 2016Date d'inscription 7 décembre 2017 Dernière intervention - 22 nov. 2017 à 07:14
+1
Utile
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
Whismeril 10512 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 22 nov. 2017 à 08:24
+1
Utile
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
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par ucfoutu le 22/11/2017 à 07:42
0
Utile
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
ucfoutu 18019 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 22 nov. 2017 à 08:34
0
Utile
1
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 ...) !
Whismeril 10512 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 22 nov. 2017 à 08:58
Certes
Commenter la réponse de ucfoutu
gruflome 8 Messages postés lundi 23 mai 2016Date d'inscription 7 décembre 2017 Dernière intervention - 6 déc. 2017 à 13:22
0
Utile
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.