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 :

Vérifier qu'une saisie est bien une date


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Points : 55
    Points
    55
    Par défaut Vérifier qu'une saisie est bien une date
    Bonjour,

    J'ai un souci avec la fonction de vérification car si je met 45/14/19 avec le format dd/mm/yy, le format de la date passe sans message d'erreur

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        If KeyCode = 13 Then
     
            If IsDate(TextBox5.Value) And TextBox5.Value Like "##/##/##" Then
                TextBox18.Enabled = True
                TextBox18.BackColor = RGB(255, 255, 255)
            Else
                MsgBox "Entrer une date valide"
                TextBox5.Value = ""
                Me.TextBox5.SetFocus
           End If
        End If
    End Sub
    Petite Question bonus : pourquoi je ne reviens pas à mon TextBox5 avec le SetFocus?

    Merci d'avance.

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    Drôle d'idée que celle de tester si la touche ENTER a été utilisée.
    L'évènement exit existe et est doté d'un paramètre cancel (to cancel = annuler).
    regarde ce que fait ceci (exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     If Not IsDate(TextBox1.Text) Then
       MsgBox "non"
       Cancel = True
     End If
    End Sub
    PS sans préjuger du bien fondé de ta manière de contrôler. Je ne traite ici que l'aspect que tu as dénoncé (rien d'autre).

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Points : 55
    Points
    55
    Par défaut
    Merci, je débute en codage VBA. Pour comprendre et faire mon code je vais sur les forums, je regarde les aides et les tutos, mais je n'ai pas eu de formation.

    Je ne connais pas tous ce qui est possible de faire et comment réagisse chaque fonction, chaque action, chaque combinaison.

    Je pense que l'intégralité de mon code peux être simplifier, mais pour le moment j'essais de voire comment je peux me débrouiller. Mais quand je bloque comme j'appel à l'aide.

    Je suis preneur de tous les truc et astuce, les simplifications, les conseils et les explications.

    Je voudrait vérifier si c'est bien au format jj/mm/aa

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Ce forum est assorti de plusieurs didacticiels, etc ...
    Je te conseille de les lire attentivement avant de te précipiter pour exposer une difficulté. Et ce : d'autant plus que tu débutes.
    Il y en a un qui concerne très précisément le traitement des dates.
    Regarde ce que fait par exemple ce petit bout de code bâclé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       Dim couic As Boolean
       If IsDate(TextBox1.Text) Then
         couic = Val(CDate(TextBox1.Text)) <> Split(TextBox1.Text, "/")(0)
       Else
         couic = True
       End If
       Cancel = couic
       If couic Then MsgBox "NON !"
    End Sub

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

Discussions similaires

  1. Une fonction pour vérifier si une saisie est une date
    Par MasterMbg dans le forum Codes sources à télécharger
    Réponses: 10
    Dernier message: 02/10/2013, 11h18
  2. [XL-2003] Vérifier que la saisie est une date
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2013, 15h55
  3. Réponses: 2
    Dernier message: 26/04/2008, 17h31
  4. [ImageMagick] Savoir si une URL est bien une image
    Par Oberown dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/01/2006, 23h13
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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