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 :

[VBA-E] Saisie d'une date dans une Input Box


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 17
    Points
    17
    Par défaut [VBA-E] Saisie d'une date dans une Input Box
    Bonjour,

    Comment controler la saisie d'une date dans une input box ?

    Je m'explique j'affiche une input box qui demande à l'utilisateur la saisie d'une date, cependant si la date saisie n'a pas un format de date ou bien si il saisit une date du type 31/02/2005 j'ai erreur type incompatible.

    Comment faire pour ancitiper ca ?

    D'avance merci de votre aide

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Tu peux utiliser la fonction IsDate()

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 58
    Points : 28
    Points
    28
    Par défaut
    sinon tu peux utiliser le calendrier ou encore faire 3 list box forcant a bien entrer la date ^^

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 26
    Points : 17
    Points
    17
    Par défaut
    ok merci je vais tenter le calendar mais pas simple à utiliser

  5. #5
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    moi je te proposerais plutot le Isdate (comme pc75), car plus facile a manipuler

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaDate = "31/05/2006"
    while not Isdate(Madate)
        MaDate=inputbox("Entrer une date")
    wend
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Citation Envoyé par sovo
    moi je te proposerais plutot le Isdate (comme pc75), car plus facile a manipuler

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaDate = "31/05/2006"
    while not Isdate(Madate)
        MaDate=inputbox("Entrer une date")
    wend
    Je doute que ça marche je ferais plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim LaDate As String, MaDate As Date
    LaDate = "31/05/2006"
    While Not IsDate(LaDate)
        MaDate = InputBox("Entrez une date", "Date", LaDate)
    Wend
    ainsi une date est proposée en valeur par défaut. LaDate peut contenir une chaine (String) représentant la date du jour (fonction Now).

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Et quid de l'utilisation toute bête d'un cadre dont on modifie la propriété Visible pour le faire apparaître et disparaitre ?
    Il présente l'avantage d'y inclure un Dtpicker, entre autres...

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Citation Envoyé par jmfmarques
    Et quid de l'utilisation toute bête d'un cadre dont on modifie la propriété Visible pour le faire apparaître et disparaitre ?
    Il présente l'avantage d'y inclure un Dtpicker, entre autres...
    Tout à fait, jmf.

    Mais alors pourquoi pas un UserForm?

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Egal tout pareil !
    Même une PictureBox !
    Enfin quoi : tout container que l'on peut cacher ou montrer, avec tout ce qu'il a dans le ventre....

  10. #10
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    cqfd!

  11. #11
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    heu zaza, je craint que ton code ne soit pas adapter.

    car tu ne change pas la valeur de [b]LaDate[/d] et de ce fait quelque soit ce qu'il va entrer (que ce soit une date ou pas) il va sortir du while.


    Par contre chez moi vu le fait que je change la valeur de MaDate tant que ce ne sera pas une date et bien il sera obliger d'entrer une date valide. En revanche je trouve pas mal de mettre une valeur par defaut (just pour l'oriente).
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  12. #12
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Apres quelques test (sur le mien comme sur celui de zaza) voila finalement celui qui focntionne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim MaDate As Variant
     
    MaDate = "32/05/2006"  'Pas oblige d'initialiser, mais si on le fait il faut ne pas donner une date valide.
    While Not IsDate(MaDate)
        MaDate = InputBox("Entrez une date", "Date", MaDate)
    Wend
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaDate = "c'est pas une date" 
    While Not IsDate(MaDate)
        MaDate = InputBox("Entrez une date", "Date", MaDate)
    Wend

  14. #14
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Mouais, je me suis gourée de boucle

    L'idée est justement de donner une date par défaut qui soit valide. D'où la suggestion d'utiliser une chaîne qui représente la date du jour. Si l'utilisateur la modifie, c'est la date qu'il a iscrite qui est prise en compte.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Load()
        Dim LaDate As String
        LaDate = "31/05/2006"
        Do
            LaDate = InputBox("Entrez une date", "Date", LaDate)
        Loop Until IsDate(LaDate)
        Label1.Caption = LaDate
    End Sub
    Testé sous VB6

  15. #15
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    la dessus je suis dac.

    je croit que lorsque notre ami reviendra il n'aura de choix que de mettre le tag [RESOLU].
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  16. #16
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Dernière mouture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Load()
        Dim lsDate As String
        lsDate = Format(Now, "dd\/MM\/yyyy") ' toujours la date du jour
        Do
            lsDate = InputBox("Entrez une date", "Date", lsDate)
        Loop Until IsDate(lsDate)
        ' garantit un format uniforme
        Label1.Caption = Format(CDate(lsDate), "dd\/MM\/yyyy")
    End Sub

Discussions similaires

  1. [AC-2007] Comparer une date d'une table et une date saisie
    Par minooo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/03/2019, 21h40
  2. [MySQL] insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 16/08/2014, 11h10
  3. insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2014, 16h31
  4. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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