Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

TextBox dans userform avec format date

7 réponses
Avatar
jfv
Bonsoir tout le monde,
Je suis un peu penaud de poser une question bêta, mais qui peux m'indiquer
comment obliger dans un userform, la saisie d'une date valide dans un TextBox.
Je suppose qu'il faut écrire un petit code VBA, mais lequel ?
Merci de vo(s) réponses.
Jeff

7 réponses

Avatar
Jacques93
Bonsoir jfv,
Bonsoir tout le monde,
Je suis un peu penaud de poser une question bêta, mais qui peux m'indiquer
comment obliger dans un userform, la saisie d'une date valide dans un TextBox.
Je suppose qu'il faut écrire un petit code VBA, mais lequel ?
Merci de vo(s) réponses.
Jeff


Par exemple :

If Not IsDate(Me.TextBox1.Text) Then
MsgBox "Date invalide"
Me.TextBox1.SetFocus
End If


--
Cordialement,

Jacques.

Avatar
jfv
Bonsoir Jacques,

Votre macro est parfaite.
Merci bcp de votre aide.
Cordialement.


Bonsoir jfv,
Bonsoir tout le monde,
Je suis un peu penaud de poser une question bêta, mais qui peux m'indiquer
comment obliger dans un userform, la saisie d'une date valide dans un TextBox.
Je suppose qu'il faut écrire un petit code VBA, mais lequel ?
Merci de vo(s) réponses.
Jeff


Par exemple :

If Not IsDate(Me.TextBox1.Text) Then
MsgBox "Date invalide"
Me.TextBox1.SetFocus
End If


--
Cordialement,

Jacques.




Avatar
Anacoluthe
Bonjour !

'jfv' nous a écrit ...
Je suis un peu penaud de poser une question bêta, mais qui peux m'indiquer
comment obliger dans un userform, la saisie d'une date valide dans un TextBox.
Je suppose qu'il faut écrire un petit code VBA, mais lequel ?


Vous trouvez que c'est une question bête ???? Ben alors ...
Dans le code de votre textbox cherchez l'événement Exit
et placez y un petit truc dans le genre :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Text) Then MsgBox "date non valide!"
End Sub

Ça conviendrait ou faut faire plus bête ? :-D )))

Anacoluthe
« Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie. »
- Proverbe chinois

Avatar
Jacques93
Bonsoir Anacoluthe
Bonjour !

'jfv' nous a écrit ...

Je suis un peu penaud de poser une question bêta, mais qui peux
m'indiquer comment obliger dans un userform, la saisie d'une date
valide dans un TextBox.
Je suppose qu'il faut écrire un petit code VBA, mais lequel ?



Vous trouvez que c'est une question bête ???? Ben alors ...
Dans le code de votre textbox cherchez l'événement Exit
et placez y un petit truc dans le genre :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(TextBox1.Text) Then MsgBox "date non valide!"
End Sub

Ça conviendrait ou faut faire plus bête ? :-D )))

Anacoluthe
« Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie. »
- Proverbe chinois


Préambule :
mon correcteur orthographique est en panne.

Sujet :
Vaut-il mieux contrôler la validité des données champs à champs ou
lors de la validation d'un UserForm, via un CommandButton par exemple ?

Je ne veux pas rester bête toute ma vie :-D

--
Cordialement,

Jacques.


Avatar
Anacoluthe
Bonjour !

'Jacques93' nous a écrit ...
Vaut-il mieux contrôler la validité des données champs à champs ou
lors de la validation d'un UserForm, via un CommandButton par exemple ?
Je ne veux pas rester bête toute ma vie :-D


Oupss pardon, ma réponse à 'jfv' est partie avant d'avoir lu la tienne !
(on a donné pratiquement le même code ;-) )

Concernant le moment opportun de la validation, je pense que ça
dépend de la feuille et de son usage ! Les deux peuvent se défendre.
L'important est de se mettre à la place de l'utilisateur :
c'est toujours très très énervant de remplir des petites cases
et de se voir houspillé 'Donnée non valide' !!!

A+

Anacoluthe
« Celui qui pose une question risque cinq minutes d'avoir l'air bête.
Celui qui ne pose pas de question restera bête toute sa vie. »
- Proverbe chinois

Avatar
ClémentMarcotte
Bonjour,

Concernant le moment opportun de la validation, je pense que ça
dépend de la feuille et de son usage ! Les deux peuvent se défendre.
L'important est de se mettre à la place de l'utilisateur :
c'est toujours très très énervant de remplir des petites cases
et de se voir houspillé 'Donnée non valide' !!!



Cependant, cdate() va laisser "passer" des choses du genre 1-15-2005 parce
que c'est une "date américaine" valide. (15 janvier 2005).

La méthode la plus sure, pour garantir la validité d'une date, et des
calculs subséquents, semble être une saisie en 3 parties distinctes, suivie
de l'utilisation de DateSerial(), qui va ramener la date sous "son numéro"
dans VBA.

Avatar
Anacoluthe
Bonjour !

'ClémentMarcotte' nous a écrit ...
Cependant, cdate() va laisser "passer" des choses du genre 1-15-2005


Oui et IsDate() aussi évidemment :-(

D'où l'intérêt d'utiliser autre chose qu'une Textbox (des listes
déroulantes, un contrôle calendrier etc.) pour saisir une date... ;-)

A+
A~