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

Macros et VBA Excel Discussion :

Problème de vérification de date [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut Problème de vérification de date
    Bonjour le forum,

    J'ai le bout de code suivant inspiré par la FAQ dans une textbox, afin d'avoir une date bien formatée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub TxtDateReception_Change()
    Dim Valeur As Byte
    '------ Fonction qui permet d'ajouter les "/" après le jour et le mois
        txtDateReception.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
        Valeur = Len(txtDateReception)
        If Valeur = 2 Or Valeur = 5 Then txtDateReception = txtDateReception & "/"
        If Valeur = 10 Then txtDateReception = CDate(txtDateReception)
    End Sub
    Pour vérifier que l'utilisateur ne rentre pas une date dans le futur, j'ai écrit ce bout de code test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub txtDateReception_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
     
    If txtDateReception.Value > Date Then
        MsgBox "C'est supérieur."
    Else
        MsgBox "C'est inférieur."
    End If
    End Sub
    Le problème est que j'ai beau rentrer 01/01/1900, j'ai toujours une msgbox "C'est supérieur". Et je ne sais pas pourquoi...

  2. #2
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser une fonction de comparaison de date ?
    Voici le code tout prêt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub txtDateReception_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
        If DateDiff("d", TxtDateReception.Value, Date) < 0 Then
           MsgBox "C'est supérieur."
        Else
           MsgBox "C'est inférieur."
        End If
    End Sub
    Précision:
    d=day=jour :p
    Sinon, écris Datediff dans l'éditeur puis F1 pour avoir toutes les infos sur les paramètres.

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Bonjour,

    Je n'avais pas pensé à passer par la fonction DateDiff.
    Effectivement, elle fonctionne, merci.

    Par contre, je ne sais toujours pas pourquoi ma comparaison ne fonctionnait pas.

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par neiluj26 Voir le message

    Par contre, je ne sais toujours pas pourquoi ma comparaison ne fonctionnait pas.
    vois ceci

    Comprendre et gérer les dates sous Excel et en VBA

    cordialement,

    Didier

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 240
    Par défaut
    Merci pour les réponses. C'est curieux, je passais pourtant la valeur de ma textbox en date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Valeur = 10 Then txtDateReception = CDate(txtDateReception)
    Bon, je vais lire le tuto et en apprendre plus.

    Merci.

  6. #6
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    re,

    juste pour info, lorsque tu fait ça tu lui dis :

    "converti la date dans la text box en date et remet la dedans"...

    c'est ce qu'il fait... mais dans la textbox... on ne trouve que du contenu "string"... donc ta date une fois remise en place est reconvertie en string...

    euh... comment ça je suis pas clair!!!


  7. #7
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    parce que tu aurais du faire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub txtDateReception_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    'a ce niveau on compare deux date et non pas une date et du texte 
    If cdate(txtDateReception.Value) > Date Then
        MsgBox "C'est supérieur."
    Else
        MsgBox "C'est inférieur."
    End If
    End Sub
    et faites toujours bien attention avec les valeurs implicites.

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

Discussions similaires

  1. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44
  2. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  3. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  4. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19

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