Tester la date

rouambab Messages postés 4 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 3 juin 2007 - 30 mai 2007 à 23:57
rouambab Messages postés 4 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 3 juin 2007 - 1 juin 2007 à 16:40
j'ai crée une base de donnée en acces et grâce à  l'adodc je'effevtue des manipulations. en vb je fais des enregistrements, et parmis les données saisies, il la date à saisir dans le format jj/mm/aaaa. j'aimerais savoir comment tester le format de la date entrée par l'utilisateur avans d'effectuer l'enregistrement dans la table.
 Toujours sur le même projet j'aimerais determiner si la donnée entrée est un entier. et comment on récupère un donnée se trouvant dans un listbox.

12 réponses

cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
31 mai 2007 à 06:57
Comment se fait la saisie de la date ?   Est-ce via une interface VB (avec Textbox) ou est-ce directement dans la table Access ?    En Access, tu peux spécifier ce format directement au niveau du champs (dans le design de la table).   En VB, je ne crois pas que cela soit directement possible.   Il existe une propriété DataFormat (que je n'ai jamais utilisée) et qui semble le faire mais je présume qu'il faut d'abord lier le textbox à un champs de la table.

Christophe
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
31 mai 2007 à 08:02
Salut,

1) Pourquoi ne pas définir la propriété format de ta textbox:
texte10.Format =  "jj/mm/aaaa"

2) Une autre solution serait de remplacer la textbox par un maskedbox. Ce champ permet de mettre en place un marsque de saisie (voi propriété du champ). Le cas qui te corresponderait serait "99\99\9999"

Cela te permettra d'empecher la saisie de lettre et obligera a respecter le format. Par contre, il faudrait que tu vérifie si les nombres correspondant  aux jour/mois/années ne sont pas farfelue (ex : 36/24/6430)

3) Sinon, une  derniere consisterait a tester le format de cette maniere mais je ne suis pas certain que cela fonctionnerait:

if texte10 .Format =  "jj/mm/aaaa" then ......

Pour ta 2eme question, j'ai cherché et je viens faire ca:

Public Sub test9()


Dim chiffre As Integer


If VarType(chiffre) = vbInteger Then
    MsgBox "la variable chiffre est un entier"
End If


End Sub
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
31 mai 2007 à 08:22
Bonjour,

Private Sub Command1_Click()
  MsgBox IIf(IsDate(Text1.Text) And Val(Mid(Text1.Text, 4, 2)) < 13 _
  And Text1.Text Like "##/##/####", "j'accepte", "je refuse")
End Sub


 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
31 mai 2007 à 08:32
Quel naze, IsDate, j'l'avais oublié celui la.

Je rajouterai meme,

MsgBox IIf(IsDate(Text1.Text) And Val(Mid(Text1.Text, 4, 2)) < 13 _
  And Val(Mid(Text1.Text, 1, 2)) < 32 And Text1.Text Like "##/##/####", "j'accepte", "je refuse")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
31 mai 2007 à 08:37
Bonjour Nicko,

Non, ce n'est pas la peine de tester si le jour est < 32 car isdate retournerait Faux si > 31
ce qui n'est pas le cas avec le mois, car VB est assez curieux...
Quelques soient les paramètres locaux, en effet, pour VB :
05/13/2000 serait accepté comme date 13 mai 2000 en dépit du fait que ta machine est en jj/mm/aaaa
mais VB refuserait tant 32/05/2000 que 05/32/2000

(subtilités de VB)
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
31 mai 2007 à 08:45
J'en étais sur, désolé alors, je me doutais que tu savais mieux gérer ca que moi donc je dois pas la  meme logique que VB y faut croire. Merci de la précision, je le saurai pour l'avenir.

Sinon, ne me dis pas que je me suis planté aussi sur ca
If VarType(Nom_Variable) = vbInteger Then

car ca marche en VBA.
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
31 mai 2007 à 08:52
Ta syntaxe est bonne en ce qui concerne la détermination du type de variable.
Je me suis donc abstenu de réagir (car c'était bien ainsi qu'était posée la question par 1075682 rouambab)
Je devine pourtant que =1075682 rouambab s'est mal exprimé et voulait dire autre chose....qu'il n'a pas su dire et que j'attends qu'il sache dire ...(il faut qu'il s'habitue à être très précis dans ses expressions )
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
31 mai 2007 à 09:42
A, ok, tu penses à la fonction IsNumeric. En effet, j'ai peut etre pas compris comme il fallait.
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
31 mai 2007 à 09:48
Tu as partfaitement compris, Nicko, sois tranquille  : c'est ce qu'a écrit notre ami et tu lui a donc parfaitement répondu
Je crains par contre que ce soit lui qui ne sait pas exprimer tout autre chose
Laisse-le venir on verra bien
0
rouambab Messages postés 4 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 3 juin 2007
1 juin 2007 à 15:58
Merci à Nicko11 et jmfmarques. pour le teste des nombres entiers je veux juste m'assurer que la donnée saisie est bien une valeur entière avans d'effectuer l'enregistrement!
    Pour ce qui est du teste de la date, je n'est pas la propriété .Format!
J'aimerai pouvoir récuperer la donnée selectionnée dans un listbox, pour un enregistrement vesr un base de donnée? j'ai bien fait la connection adodc (commandtype,recordsource), et pour le contrôle listbox datasource et datafield sont corrctements remplis. Mais dans la table
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
1 juin 2007 à 16:07
Bonjour rouambad ,

Tu rigoles ou quoi ?
Je t'ai donné un code qui n'utilise pas la propriété Format, il me semble, malgré tout ce que je vien de boire !
Essaye le donc, pour voir ...

Private Sub Command1_Click()
  MsgBox IIf(IsDate(Text1.Text) And Val(Mid(Text1.Text, 4, 2)) < 13 _
  And Text1.Text Like "##/##/####", "j'accepte", "je refuse")
End Sub

Il est bien évident que tu fois cliquer sur un bouton de commande Command1 se trouvant sur un UserForm (sur lequel tu as une TextBox Text1... hein...)
0
rouambab Messages postés 4 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 3 juin 2007
1 juin 2007 à 16:40
ok merci
0