Fonction 'isdate' [Résolu]

Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
- - Dernière réponse :  GeoD - 8 févr. 2017 à 19:10
Bonjour,

je souhaiterais avoir de l'aide sur la Fonction 'isdate'.

je n'arrive pas à bloquer la saisie d'une zone date invalide.

Par exemple : 08/19/1996 (jj/mm/aaaa)

les syntaxes suivantes laissent passer l'anomalie :
   IsDate(Format(w_date, "mm/dd/yyyy"))
   IsDate(w_date)

Auriez vous une proposition à me suggérer ? Merci d'avance pour votre aide,

Frédéric
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
123
Date d'inscription
dimanche 9 mars 2003
Dernière intervention
29 avril 2009
3
Merci
Pour autant que je me souvienne, IsDate retourne vrai si c'est une date, mais il ne contrôle aucunement la validité par rapport aux config régionales de l'utilisateur.

Ainsi, 38/10/1996 ne peut être valide car 38 n'est ni un jour ni un mois valide. Par contre 08/19/1996 en notation américaine mm/dd/aaa = 19/08/1996 en notation européene dd/mm/aaaa, donc la function retourne True dans les deux cas. Aucune anomalie de la part du système, cette fonction ne contrôle pas le format de la date...

... reste à coder la fonction qui va t'aider à faire ton contrôle...

Bon code!

David

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de dthuler
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
3
Merci
ou bien tu peux utiliser les fonctions de manipulation de date de VB ^^

http://codyx.org/snippet_determiner-si-annee-est-bissextile_249.aspx

Renfield
Admin CodeS-SourceS- MVP Visual Basic

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
174
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
15 février 2007
0
Merci
w_date = "08/19/1996"

if IsDate(w_date) then
msgbox "ok"
else
msgbox "nook"
endif

Attention, par defaut, c'est de la forme MM/JJ/YYYY
Commenter la réponse de lilo44
Messages postés
174
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
15 février 2007
0
Merci
donc :

w_date = "08/19/1996" donne OK pour 19 aout 96

w_date = "38/09/1996" donne NOok pour 38 septembre 96
Commenter la réponse de lilo44
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
hummm ..... j'ai un ptit soucis !!!

w_date = "38/09/1996" donne effectivement NOok !!!
par contre ...
w_date = "18/09/1996" donne OK !!! alors comment se fait ce ???

la ... je bloque :-(

(merci beaucoup lilo44)
Commenter la réponse de cs_tulesais
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
donc ... pour résumer :

08/19/1996
et
19/08/1996

le isdate me retourne vrai !!!

c'est fou ca :-(
Commenter la réponse de cs_tulesais
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
merci beaucoup pour cette réponse !!! certes qui m'anéantis mais bon ... c'est la vie :-(
Commenter la réponse de cs_tulesais
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
au choix :

IsDate ( #10/19/2006# )    => True
IsDate ( "19/10/2006" )    => True   (dépend des paramètes régionnaux)
IsDate ( "2006-10-19" )    => True  (fonctionne quelques soient les paramètres régionnaux)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
BONJOUR !!!
... pas très beau sur marseille aujourd'hui :-(

donc ... pour en revenir à mon problème ... je souhaiterais contourner cette fonction 'isdate' ... 

je vous livre donc mon code mais je bute sur la détection des années bissextiles.
Auriez vous une astuce à me donner ? :-)

Merci d'avance pour votre aide !!!

    Select Case Mid(W_Date, 3, 2)
        Case "01", "03", "05", "07", "08", "10", "12"
            If Mid(W_Date, 1, 2) < "01" Or Mid(W_Date, 1, 2) > "31" Then
                ANO
            End If
        Case "04", "06", "09", "11"
            If Mid(W_Date, 1, 2) < "01" Or Mid(W_Date, 1, 2) > "30" Then
               ANO
            End If
        Case "02"            If Mid(W_Date, 5, 2) "96" Or Mid(W_Date, 5, 2) "00" Or _                Mid(W_Date, 5, 2) "04" Or Mid(W_Date, 5, 2) "08" Or _                Mid(W_Date, 5, 2) "12" Or Mid(W_Date, 5, 2) "16" Then
                If Mid(W_Date, 1, 2) < "01" Or Mid(W_Date, 1, 2) > "29" Then
                  ANO
                End If
            Else
                If Mid(W_Date, 1, 2) < "01" Or Mid(W_Date, 1, 2) > "28" Then
                  ANO
                End If
            End If
        Case Else
            ANO
    End Select
Commenter la réponse de cs_tulesais
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
y'a des formules mathématiques, pour détécter les années bissexstiles !

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
177
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
11 avril 2013
0
Merci
superbe renfield !!!!

merci beaucoup pour ta réponse.

ta fonction isleapyear fonctionne impeccccccccc :-)
Commenter la réponse de cs_tulesais
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
ravi que ca te convienne ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Commenter la réponse de Renfield
0
Merci
Merciiiiiiiiiiiiii cs_tulesais!!!!!

j'ai passé des heures aujourd'hui à tenter de valider une date entrée dans un inputbox... piouf!... et là bingo! enfin :)
Commenter la réponse de GeoD

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.