Fonction 'isdate' [Résolu]

cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 18 oct. 2006 à 16:43 - 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
dthuler 123 Messages postés dimanche 9 mars 2003Date d'inscription 29 avril 2009 Dernière intervention - 18 oct. 2006 à 18:28
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

Merci dthuler 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de dthuler
Meilleure réponse
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 oct. 2006 à 08:57
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de Renfield
lilo44 174 Messages postés vendredi 25 janvier 2002Date d'inscription 15 février 2007 Dernière intervention - 18 oct. 2006 à 17:53
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
lilo44 174 Messages postés vendredi 25 janvier 2002Date d'inscription 15 février 2007 Dernière intervention - 18 oct. 2006 à 17:54
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
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 18 oct. 2006 à 18:04
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
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 18 oct. 2006 à 18:17
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
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 18 oct. 2006 à 18:34
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
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 oct. 2006 à 08:26
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
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 19 oct. 2006 à 08:36
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
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 oct. 2006 à 08:49
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
cs_tulesais 177 Messages postés mercredi 2 juin 2004Date d'inscription 11 avril 2013 Dernière intervention - 19 oct. 2006 à 09:28
0
Merci
superbe renfield !!!!

merci beaucoup pour ta réponse.

ta fonction isleapyear fonctionne impeccccccccc :-)
Commenter la réponse de cs_tulesais
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 19 oct. 2006 à 09:35
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.