OVH Cloud OVH Cloud

comment faire un masque de saisie pour une date?

15 réponses
Avatar
thierry
tout est dans la question. je peux sans problème tester la validité
d'une date, mais mon utilisatrice préférée voudrait (et elle à bien
raison), une saisie du type Access, avec les / qui apparaissent, du type
jj/mm/aaaa. Une idée?

10 réponses

1 2
Avatar
Pascal B.
Dim Txt as string
Dim DateParts as variant
Dim UneDate as Date

Txt = InputBox("Entrez une date (jj/mm/année)")

DateParts = split(Res,"/")
On Error Resume Next
UneDate = DateSerial(DateParts(2), DateParts(1), DateParts(0))
if Err.Number <> 0 then
MsgBox "Date incorrecte !"
end if



"thierry" wrote in message news:
|
| tout est dans la question. je peux sans problème tester la validité
| d'une date, mais mon utilisatrice préférée voudrait (et elle à bien
| raison), une saisie du type Access, avec les / qui apparaissent, du type
| jj/mm/aaaa. Une idée?
Avatar
thierry
In article ,
says...
Dim Txt as string
Dim DateParts as variant
Dim UneDate as Date

Txt = InputBox("Entrez une date (jj/mm/année)")

DateParts = split(Res,"/")
On Error Resume Next
UneDate = DateSerial(DateParts(2), DateParts(1), DateParts(0))
if Err.Number <> 0 then
MsgBox "Date incorrecte !"
end if



"thierry" wrote in message news:
|
| tout est dans la question. je peux sans problème tester la validité
| d'une date, mais mon utilisatrice préférée voudrait (et elle à bien
| raison), une saisie du type Access, avec les / qui apparaissent, du type
| jj/mm/aaaa. Une idée?





ok, mais cela implique un input box, alors que moi j'ai des textbox
!!!!! HARRG!!!
Avatar
jacques thiery
a la place du texteBox tu mets un Microsoft Masked Edit Control
propriété Format : dd/mm/yyyy (le format qui te fait plaisir)
propriété Mask : ##/##/#### ( autant de diese que de caracteres dans le
format

"thierry" a écrit dans le message de news:

In article ,
says...
Dim Txt as string
Dim DateParts as variant
Dim UneDate as Date

Txt = InputBox("Entrez une date (jj/mm/année)")

DateParts = split(Res,"/")
On Error Resume Next
UneDate = DateSerial(DateParts(2), DateParts(1), DateParts(0))
if Err.Number <> 0 then
MsgBox "Date incorrecte !"
end if



"thierry" wrote in message
news:
|
| tout est dans la question. je peux sans problème tester la validité
| d'une date, mais mon utilisatrice préférée voudrait (et elle à bien
| raison), une saisie du type Access, avec les / qui apparaissent, du
type
| jj/mm/aaaa. Une idée?





ok, mais cela implique un input box, alors que moi j'ai des textbox
!!!!! HARRG!!!


Avatar
LE TROLL
Salut,

A mon sens, désolé, les masks de saisie sont horribles,
un bon code peut récupérer et reformater dans des varibles
la saisie du textBox (tous les cas peuvent être
envisagés)...

Sinon, dans le style inputBox, t'as aussi en aussi pire:
dim ladate as date
on error goto erreur
ladate = textX
exit sub
erreur:
msgbox "date pas bonne"!
-------

"thierry" a écrit dans le message de
news:

tout est dans la question. je peux sans problème tester la
validité
d'une date, mais mon utilisatrice préférée voudrait (et
elle à bien
raison), une saisie du type Access, avec les / qui
apparaissent, du type
jj/mm/aaaa. Une idée?


Avatar
Michel69
Il y a aussi des OCX que je viens d'acheter chez BCi Technologies et qui
permettent en meme temps de dérouler un calendrier et de saisir une date par
un simpe clic...

ctDrpDate, ctCalendar, etc...



"thierry" a écrit dans le message de news:


tout est dans la question. je peux sans problème tester la validité
d'une date, mais mon utilisatrice préférée voudrait (et elle à bien
raison), une saisie du type Access, avec les / qui apparaissent, du type
jj/mm/aaaa. Une idée?


Avatar
LE TROLL
Calendar...
---------

"Michel69" a écrit dans le message de
news: %
Il y a aussi des OCX que je viens d'acheter chez BCi
Technologies et qui permettent en meme temps de dérouler
un calendrier et de saisir une date par un simpe clic...

ctDrpDate, ctCalendar, etc...



"thierry" a écrit dans le message de
news:

tout est dans la question. je peux sans problème tester
la validité
d'une date, mais mon utilisatrice préférée voudrait (et
elle à bien
raison), une saisie du type Access, avec les / qui
apparaissent, du type
jj/mm/aaaa. Une idée?






Avatar
Pascal B.
"LE TROLL" a écrit
| Sinon, dans le style inputBox, t'as aussi en aussi pire:
| dim ladate as date
| on error goto erreur
| ladate = textX

Avec cette méthode, rien ne dit que la date sera bien interprêtée sous forme jj/mm/aaaa.
Sur certains PC, la date 01/02/2005 pourrait donner le 2 jan 2005 (au lieu de 1 jan 2005)

Mais après mûr réflection, ne faudrait-il pas laisser l'utilisateur entrer la date dans la forme qui correspond à ses habitudes
c-à-d dans le format défini dans ses paramètres régionaux ?

Pascal B.

PS: L'InputBox était donné à titre d'exemple, l'essentielle du code code ne résidait pas là!!!
Avatar
LE TROLL
Je n'avais pas l'intention de critiquer l'inputBox, je
voulais dire qu'une bonne programmation c'était du code,
c'est plus souple pour l'utilisateur, en effet, le mieux et
de laisser saisir l'utilisateur (comme tu le dis), puis de
mettre en forme, validant ou invalidant la saisie... Déjà
(textBox) on peut obliger la saisie à n'être composée que de
0 à 9 + "/" et de limiter la saisie à 10 caractères, après
on teste par recherche dans chaîne:
on retasse Rtrim
si "/" <> 2 = rejet
si lgr saisie < 5 = rejet
Puis on teste la position des slash à l'octet
le / 1 doit être à 1 ou à 2, sinon = rejet
le / 2 doit être à 4, 5, ou 6, sinon = rejet
Puis en fonction de la position des / y a pu qu'à reformater
dans 3 variable, ou dans une et de l'extraire (mid) pour
comparer si la date est ok dans un select case....

-------- Autre solution MsCalendar (si ce n'est pas à
distribuer surtout)...

-------------



"Pascal B." a écrit dans le
message de news: ubEN%
"LE TROLL" a écrit
| Sinon, dans le style inputBox, t'as aussi en aussi pire:
| dim ladate as date
| on error goto erreur
| ladate = textX

Avec cette méthode, rien ne dit que la date sera bien
interprêtée sous forme jj/mm/aaaa.
Sur certains PC, la date 01/02/2005 pourrait donner le 2
jan 2005 (au lieu de 1 jan 2005)

Mais après mûr réflection, ne faudrait-il pas laisser
l'utilisateur entrer la date dans la forme qui correspond
à ses habitudes
c-à-d dans le format défini dans ses paramètres régionaux
?

Pascal B.

PS: L'InputBox était donné à titre d'exemple,
l'essentielle du code code ne résidait pas là!!!




Avatar
thierry
In article ,
says...
a la place du texteBox tu mets un Microsoft Masked Edit Control
propriété Format : dd/mm/yyyy (le format qui te fait plaisir)
propriété Mask : ##/##/#### ( autant de diese que de caracteres dans le
format

"thierry" a écrit dans le message de news:

> In article ,
> says...
>> Dim Txt as string
>> Dim DateParts as variant
>> Dim UneDate as Date
>>
>> Txt = InputBox("Entrez une date (jj/mm/année)")
>>
>> DateParts = split(Res,"/")
>> On Error Resume Next
>> UneDate = DateSerial(DateParts(2), DateParts(1), DateParts(0))
>> if Err.Number <> 0 then
>> MsgBox "Date incorrecte !"
>> end if
>>
>>
>>
>> "thierry" wrote in message
>> news:
>> |
>> | tout est dans la question. je peux sans problème tester la validité
>> | d'une date, mais mon utilisatrice préférée voudrait (et elle à bien
>> | raison), une saisie du type Access, avec les / qui apparaissent, du
>> type
>> | jj/mm/aaaa. Une idée?
>>
>>
>>
> ok, mais cela implique un input box, alors que moi j'ai des textbox
> !!!!! HARRG!!!





ok, cela fonctionne. Merci beaucoup
Avatar
thierry
In article <ubEN#,
says...
"LE TROLL" a écrit
| Sinon, dans le style inputBox, t'as aussi en aussi pire:
| dim ladate as date
| on error goto erreur
| ladate = textX

Avec cette méthode, rien ne dit que la date sera bien interprêtée sous forme jj/mm/aaaa.
Sur certains PC, la date 01/02/2005 pourrait donner le 2 jan 2005 (au lieu de 1 jan 2005)

Mais après mûr réflection, ne faudrait-il pas laisser l'utilisateur entrer la date dans la forme qui correspond à ses habitudes
c-à-d dans le format défini dans ses paramètres régionaux ?

Pascal B.

PS: L'InputBox était donné à titre d'exemple, l'essentielle du code code ne résidait pas là!!!





le pr^bème c'est que dans sa méthode de saisie il y a un masque de
saisie avec les /
1 2