Controler si le contenu d'un textbox est numérique et si une date est valide

cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 - 25 nov. 2004 à 20:15
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 26 nov. 2004 à 20:01
Bonsoir,

Après plus d'une heure de recherche sur msdn sans résultats probants, j'abandonne...

Je cherche tout simplement à verifier si la valeur saisie dans un textbox est de type numérique ou non.
Je cherche également un moyen de tester la validité d'une date dans un textbox (je veux savoir si elle est bien du type jj/mm/aaaa et si elle ne contient pas de lettres).

Merci d'avance.
A voir également:

15 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 nov. 2004 à 20:36
Salut, bien pour les chiffres il suffit que tu test si le KeyAscii fait bien parti d'une range.

Le 0 correspond au code Ascii : 48
.
.
.
.
Le 9 correspond au code Ascii : 57

Ensuite, il faut pouvoir gérer les frappe de touche comme "Entrée", "BackSpace", et le "/"

Entrée a le code 13
BackSpace le code 8
le "/" : 47

Ensuite place le code comme ceci :

sub text1_keypress(keyascii as integer)
if (keyascii<48 and keyascii>57) or keyascii<>13 or keyascii<>8 or keyascii<>47 then KeyAscii=0
end sub


En fait on fait le test des touches si cela ne correspond pas alors on annule la touche avec keyascii=0

Ensuite tu peux vérifier la date avec :

sub text1_lostfocus()
'Test la longueur
if len(text1.text)<>8 then msgbox "Date incorrect"
'Test les "/"
if mid(text1.text,3,1)<>"/" or mid(text1.text,6,1)<>"/" then msgbox "Date incorrecte"
end sub


Ensuite il ne te reste plus qu'à tester si la date peux être réelle

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
25 nov. 2004 à 20:47
Merci pour cette réponse. Je n'ai pas encore tester mais cela à l'air clair...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 nov. 2004 à 21:29
Ca a l'air clair mais dis, cboulas, franchement, tu as testé ton code ? Il ne peut pas marcher, tu as une facheuse tendance à confondre les and et les or :big) .

Ce qui marchera c'est :

sub text1_keypress(keyascii as integer)
If (KeyAscii < 47 Or KeyAscii > 57) And KeyAscii > 31 Then KeyAscii = 0
end sub

Cordialement, CanisLupus
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 nov. 2004 à 21:30
Et puis, pour un test de date, il suffit de faire :

If isdate(text1.text) then
'c ok
else
' pas une date
endif

Cordialement, CanisLupus
0

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

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 nov. 2004 à 21:33
CanisLupus> Merci je vais faire gaffe, j'était sur une piste et pis j'ai changer, mais je vais m'appliquer

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 nov. 2004 à 21:35
Merci je connaissais pas isdate() je connaissait TypeOf mais savais pas il y avais un équivalent pour d'autres trucs. Encore merci.

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 nov. 2004 à 21:39
Voilà tu à deux bout de code
il te faut deux textbox et un bouton et tu testes
Private Sub Text1_LostFocus()
If Not IsNumeric(Text1.Text) Then
    MsgBox "Ce n'est pas une entrée numérique"
    Text1.Text = ""
    Text1.SetFocus
    
Else
    MsgBox "Gagné on passe à autre chose"
    End If
    
End Sub

Private Sub Text2_LostFocus()
If Not IsDate(Text2.Text) Then
 MsgBox "Ce n'est pas une entrée numérique"
    Text2.Text = ""
    Text2.SetFocus
End If
End Sub


_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
25 nov. 2004 à 22:15
Ouahhh, vous vous etes déchainé, merci

Je viens d'essayer pour la date et j'ai un petit pb car aucune date ne passe plus... Je rentre tous le temps dans la boucle et la date est toujours invalide.
J'ai essayer d'enlever le not (au cas où), et là forcement tout passe.
voici la ligne de cod en question :

If TxtDatEcr = "" Or Not IsDate(TxtLibEcr.Text) Then
MsgBox "La date n'est pas valide", vbOKOnly, "Attention!"

Cette fonction fonctionne-t-elle avec un format particulier? La synthase est mauvaise?????

Merci d'avance
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
25 nov. 2004 à 22:21
Met plutôt ceci :

If TxtDatEcr = "" Or Not IsDate(TxtDatEcr.Text) Then MsgBox "La date n'est pas valide", vbOKOnly, "Attention!"


car tu testais la date de TxtLibEcr

Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
25 nov. 2004 à 22:23
le format date est ##/##/##
a plus j'ai tester ça tourne
_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé
0
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
25 nov. 2004 à 22:24
oui en effet, c'est l'heure tardive je crois...
Désolé pour le dérangement

merci
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 nov. 2004 à 22:24
Heu, pourquoi TxtDatEcr et TxtLibEcr et que contiennent-elles ?

Cordialement, CanisLupus
0
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
25 nov. 2004 à 23:35
Il s'agit d'un logiciel comptable.
Le champs TxtDatEcr contient la date de l'écriture comptable et TxtLibEcr contient le libellé de l'écriture.
Y'a plus interessant ca c'est sur mais bon, "quand y faut, y faut"....
voilà
0
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
26 nov. 2004 à 00:44
Bon, j'ai tout testé.
Tout est ok sauf la date qui pause tj pb car la fonction date n'est pas idéale:
ex: 01/01 est acceptée, 01/01/01 est accepté également

Il faut empécher tout autre saisie qui n'ai pas du type: jj/mm/aaaa

J'ai trouvé la réponse suivante :

If TxtDatEcr = "" Or Not IsDate(TxtDatEcr.Text) Or Mid(TxtDatEcr.Text, 3, 1) <> "/" Or Mid(TxtDatEcr.Text, 6, 1) <> "/" Or Len(TxtDatEcr.Text) < 10 Then
MsgBox "La date n'est pas valide", vbOKOnly, "Attention!"

et

Sub TxtDatEcr_keypress(keyascii As Integer)
If (keyascii < 47 Or keyascii > 57) And keyascii > 31 Then keyascii = 0
End Sub

Merci à tous

Ps: Valtrase: la fonction date n'est donc pas forcement idéale si si on peut spécifier le format spécifique de celle-ci...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
26 nov. 2004 à 20:01
Alors essaie le maskedit.

Microsoft Masked Edit Control... dans Projets/Composants...

Mais je ne m'en sers pas. Je préfère le calendar de
Microsoft Calendar Control ....
ou le monthview de
Microsoft Windows Common Controls-2 6.0 (SP6).

Là, au moins il n'y a pas de saisie, juste des clics.

Cordialement, CanisLupus
0
Rejoignez-nous