IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Vérification d'une date


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Vérification d'une date
    Bonjour,

    je cherche à vérifier si la date saisie par l'utilisateur est correcte.
    Le fonction IsDate contrôle une partie, mais ne me permet pas d'interdire la saisie d'une date impossible comme le 31 février, 31 septembre

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Salut !

    Petite proposition... Pourquoi ne pas mettre tes mois dans une combobox ? comme ca l'utilisateur ne risquera pas de faire d'erreur de manip... (Août / Aôut / Aout / aout...)
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Je dois laisser ce champ en saisie libre, je ne peux pas non plus utiliser le calendrier pour faire cliquer l'utilisateur (c'est "imposé)...
    Je voudrais réussir à comparer la date saisie avec le calendrier windows, j'imagine que c'est faisable.
    Si la date n'éxiste pas, erreur, sinon on continue.
    Et je voudrais aussi éviter d'avoir à saisir par exemple, le nombre de jour de chaque mois. Avec des exeptions lors des années bisextiles...

  4. #4
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Oh là, ca risque d'être un peu long ce que tu veux faire...
    Un pti bout de code pas optimisé (du tout) pour illustrer mes dires...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Private moisArray() As Variant
    Private Sub testeLeTout()
    moisArray = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre")
    Debug.Print testDate("01 janvier 2005")
    Debug.Print testDate("41 janvier 2005")
    Debug.Print testDate("01 jnvier 2005")
    Debug.Print testDate("01 janvier 20056")
    End Sub
     
    Private Function testDate(uneDate As String) As Boolean
        Dim tabDate() As String
        tabDate = Split(uneDate, " ")
        Dim ok As Boolean
        If tabDate(0) >= 1 And tabDate(0) <= 31 Then
            If testMois(tabDate(1)) = True Then
                If Len(tabDate(2)) = 4 Then
                    ok = True
                Else
                    MsgBox "mauvais format d'année"
                    ok = False
                End If
            Else
                MsgBox "mauvais format de mois !"
                ok = False
            End If
        Else
            MsgBox "mauvais format de jour !"
            ok = False
        End If
        testDate = ok
    End Function
     
    Private Function testMois(unMois As String) As Boolean
        Dim ok As Boolean
        ok = False
        For i = 0 To UBound(moisArray)
            If LCase(unMois) = LCase(moisArray(i)) Then
                ok = True
            End If
        Next i
        testMois = ok
    End Function
     
    Private Function isBissextile(uneAnnee As Integer) As Boolean
        If uneAnnee Mod 4 = 0 Then
            isBissextile = True
        Else
            isBissextile = False
        End If
    End Function
    A toi d'adapter tout ca, il y a une sacré gestion à implémenter (à mon humble avis...) Mois de février, bissextile...
    Bon courage
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    merci (en autre pour IsBisextile)!
    Je pensais qu'il était possible de faire ça simplement, mais bon, tant pis, je vais coder cette fonction et ça ira bien.

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    bon, j'ai fait ma petite fonction, tout confiant.
    Et là nouveau problème :
    si je saisi une fausse date dans ma maskbox, par exemple 32/05/01, la date passée en paramètre dans ma fonction change : 05/01/32.
    Genre la date est modifiée pour tenter de reconstituer une date avec une structure correcte (DD/MM/YY)

  7. #7
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Il faut que tu utilises la fonction format pour formater ta date...
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sozie9372
    Il faut que tu utilises la fonction format pour formater ta date...
    elle est formatée...

    si je saisi une date valide, 12/04/05, c'est bien cette date qui est passée en paramètre dans ma fonction.
    Si par contre je saisi une date bidon 32/04/05, cette date est transformée avant d'etre passé en paramètre en 05/04/32 (cette modif n'arrive qu'en cas de fausse date. Il y a donc bien quelque chose qui permet de savoir si la date éxiste ou pas...grrrr)
    Je tourne en rond.

  9. #9
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Une première fonction de test avant de passer ta date en paramètre non ? ou sinon tu convertis ta date en String...
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  10. #10
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    très bonne idée, je n'avais pas pensé à ça.
    Bon, c'est de la bidouille, bosser sur des dates comme ça, c'est pas ce que je préfère, mais au moins, ça marche!

    Merci pour ton aide !

  11. #11
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    je crois que j'ai mal lu ton premier post... En fait, pourquoi ne pas utiliser tout simplement les expressions régulières ??????????
    Leur but est de valider le contenu d'une chaine de caractères (eMail, date...)
    +++
    Ju
    De rien ce fut un plaisir !
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  12. #12
    Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    heu, tu peux m'expliquer stp?

  13. #13
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Dans la FAQ il y a un sujet là dessus... Il te suffit d'adapter le pattern à ce que tu veux...
    Pour l'email :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$"
    explications :
    ^[a-z0-9_.-] : autorise tous les caractères de a à z (en minuscule) ainsi que les chiffres de 0 à 9 et les caractère _ . et - (par exemple billyjoel29)
    +@ : pour l'arobase
    [a-z0-9.-]{2,} : au minimum 2 caractères, chiffres, . ou - (par exemple hotmail)
    \. : un point (protégé par le \
    [a-z]{2,3} : 2 ou 3 caractères de fin (par exemple com, net, fr...)
    ton adresse est donc validée ou non suivant ce pattern. Avec un peu de lecture, ca viendra vite et tu pourra l'adapter aux dates...
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Hors sujet, dans ce cas-ci.
    Il s'agit de vérifier la validité d'une date (p.ex. 30 février n'existe pas), pas des caractères qui la composent.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  15. #15
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    En vérifiant si ta chaine est composée de 2 chiffres, suivi d'un / pour le jour, idem pour le mois et enfin terminer par 4 chiffres, tu peux déjà élaguer pas mal de saisies érronées (après chacun a son propre avis...).
    Ensuite, je te l'accorde, cela ne fait pas tout, les expressions régulières vont te par exemple te permettre de vérifier qu'une adresse mail est valide, mais pas que le compte existe... C'était juste pour illustrer
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérification d'une date
    Par SamusPlusPlus dans le forum Débuter
    Réponses: 1
    Dernier message: 09/04/2009, 10h34
  2. [RegEx] fonction de vérification d'une date
    Par yosraisi dans le forum Langage
    Réponses: 5
    Dernier message: 22/05/2008, 09h59
  3. Vérification d'une date
    Par pinacola dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 26/02/2007, 19h52
  4. [Lazarus] Vérification d'une date
    Par Ministar dans le forum Lazarus
    Réponses: 2
    Dernier message: 22/01/2007, 13h44
  5. [Javascript] Vérification d'une date
    Par slyv dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/11/2005, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo