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 :

Condition avec comparaison de dates [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Condition avec comparaison de dates
    Bonjour,

    Ultra débutante, je ne trouve pas la solution à mon problème. J'espère que je saurai m'exprimer correctement afin que vous puissiez me répondre.

    Dans un userform, je demande à l'utilisateur d'entrer une date dans une textbox. Je souhaite :
    1. Vérifier que l'entrée est bien une date. Et si oui, la passer sous le format jj/mm/aaaa.
    2. Vérifier que la date est postérieure ou égale à la date de la case B2 (feuille 2).

    J'ai réussi à trouver le code pour la partie 1. Mais impossible de modifier ce code pour intégrer ma 2ème condition.

    Voici ce que j'ai écrit pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TxtDateDeDebut_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If TxtDateDeDebut = vbEmptyString Then Exit Sub
     
        If IsDate(TxtDateDeDebut) Then
            TxtDateDeDebut = Format(TxtDateDeDebut, "dd/mm/yyyy")
        Else
            MsgBox "Merci d'indiquer une date valide", vbOKOnly
        End If
     
    End Sub
    Merci d'avance pour votre aide et votre indulgence

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonjour,

    Citation Envoyé par bibi84240 Voir le message
    Mais impossible de modifier ce code pour intégrer ma 2ème condition.
    Pour faire ton test tu peux utiliser quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If datevalue(TxtDateDeDebut) >= [B2].value Then
            ' ok
        Else
            MsgBox "date invalide", vbOKOnly
        End If

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    C'est parfait !!!
    Un immense merci et sûrement à très bientôt !

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Hum ... j'avais prévenu que je reviendrai très vite

    Donc voici le code final :

    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
    Private Sub TxtDateDeDebut_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If TxtDateDeDebut = vbEmptyString Then Exit Sub
     
        If IsDate(TxtDateDeDebut) Then
            TxtDateDeDebut = Format(TxtDateDeDebut, "dd/mm/yyyy")
        Else
            MsgBox "Merci d'indiquer une date valide", vbOKOnly
            TxtDateDeDebut = ""
        End If
     
        If DateValue(TxtDateDeDebut) <= [M2].Value Then
            MsgBox "date non valide", vbOKOnly
            TxtDateDeDebut = ""
        End If
     
    End sub
    Si je rentre une date dans la textbox, le format est bien transformé en jj/mm/aaaa. Nickel.
    Si je rentre une date antérieure à ma date en M2, j'ai bien un message d'erreur "date non valide". Re-nickel.
    Si je rentre des caractères autres qu'une date (exemple, une série de lettres), j'ai bien un message d'erreur "Merci d'indiquer une date valide". Re-re-nickel.
    Le hic, c'est quand je ferme ce dernier message, cela plante "erreur d’exécution '13', incompatibilité de type".

    Re-merci pour votre aide précieuse.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2016
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bon il suffisait que je réfléchisse un tout petit peu ... et de demander d'arrêter la procédure si l'entrée n'était pas au format date :

    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
    Private Sub TxtDateDeDebut_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TxtDateDeDebut = vbEmptyString Then Exit Sub
    
    If IsDate(TxtDateDeDebut) Then
    TxtDateDeDebut = Format(TxtDateDeDebut, "dd/mm/yyyy")
    Else
    MsgBox "Merci d'indiquer une date valide", vbOKOnly
    TxtDateDeDebut = ""
    Exit Sub
    End If
    
    If DateValue(TxtDateDeDebut) <= [M2].Value Then
    MsgBox "date non valide", vbOKOnly
    TxtDateDeDebut = ""
    End If
    
    End sub
    Bon, je vais tenter de réfléchir un peu mieux à mes problématiques avant de vous solliciter pour rien. Mais à très bientôt quand même

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

Discussions similaires

  1. Boucle if avec comparaison de dates
    Par pomdeterfrite dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/11/2010, 16h59
  2. [AC-2007] pb avec comparaison de dates
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/11/2009, 12h27
  3. Problème de requete avec comparaison de date
    Par crabe71 dans le forum Linq
    Réponses: 2
    Dernier message: 23/07/2009, 09h39
  4. [XML] Pb avec comparaison de dates dans un XML
    Par gaggy dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 11/10/2007, 15h25
  5. Requètes avec comparaison de date
    Par phoque.r dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/04/2007, 16h01

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