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 :

TEXTBOX : controle sur deux formats possible


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut TEXTBOX : controle sur deux formats possible
    Bonjour,

    Voilà, des utilisateurs doivent saisir des dates dans des textbox.
    Je les ai formatés pour 10 caract avec "/" et avec tabulation automatique dès 10 caract saisis. A la fin ils valident par bouton et il y a un contrôle avant récup des dates dans une feuille excel. Le problème est que certains textbox peuvent ne pas être saisis (donc rester vides) et lorsque que l'on clique sur valider, tout les textbox sont en valeur incorrecte.

    Ce que je voudrai arriver à faire c'est que quand on valide la saisie, le contrôle met en erreur les textbox où la date est erronée (ex: 25/14/2007) mais ignore les texbox vides.

    Voici le code de mon bouton Valid_CP :
    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
    52
    53
    54
    Private Sub Valid_CP_Click()
    If Not IsDate(TextBox1.Value) Then
    MsgBox "Format incorrect Zone 1"
    TextBox1 = ""
     
    End If
    If Not IsDate(TextBox2.Value) Then
    MsgBox "Format incorrect Zone 2"
    TextBox2 = ""
     
    End If
    If Not IsDate(TextBox3.Value) Then
    MsgBox "Format incorrect Zone 3"
    TextBox3 = ""
     
    End If
    If Not IsDate(TextBox4.Value) Then
    MsgBox "Format incorrect Zone 4"
    TextBox4 = ""
     
    End If
    If Not IsDate(TextBox5.Value) Then
    MsgBox "Format incorrect Zone 5"
    TextBox5 = ""
     
    End If
    If Not IsDate(TextBox6.Value) Then
    MsgBox "Format incorrect Zone 6"
    TextBox6 = ""
     
    End If
    If Not IsDate(TextBox7.Value) Then
    MsgBox "Format incorrect Zone 7"
    TextBox7 = ""
     
    End If
    If Not IsDate(TextBox8.Value) Then
    MsgBox "Format incorrect Zone 8"
    TextBox8 = ""
    Exit Sub
    End If
    [d12] = UserForm2.TextBox1
    [d13] = UserForm2.TextBox2
    [d14] = UserForm2.TextBox3
    [d15] = UserForm2.TextBox4
    [f12] = UserForm2.TextBox5
    [f13] = UserForm2.TextBox6
    [f14] = UserForm2.TextBox7
    [f15] = UserForm2.TextBox8
     
     
     
     
    End Sub
    Je met ci-dessous le code d'un des textbox (au cas où) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox1_Change()
    Dim valeur As Byte
    TextBox1.MaxLength = 10
    valeur = Len(TextBox1)
    If valeur = 2 Or valeur = 5 Then TextBox1 = TextBox1 & "/"
     
    End Sub
    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 95
    Par défaut
    tu devrais éssayer quelque chose comme cà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not IsDate(TextBox1.Value) and textbox1.value <> "" Then
    MsgBox "Format incorrect Zone 1"
    TextBox1 = ""
    End If
    mais je pense que tu devrais aussi faire un msgbox, avec en une seul fois, les zone incorrect.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Message_erreur as string
    Message_erreur = "Format incorrect Zone : "
    If Not IsDate(TextBox1.Value) and textbox1.value <> "" Then
    Message_erreur = message_erreur & "1"
    TextBox1 = ""
    End If
     
    If Not IsDate(TextBox2.Value) and textbox2.value<> "" Then
    Message_erreur = Message_erreur & ", 2"
    TextBox2 = ""
     
    End If
     
    ETC....
    Et seulement a la fin quand le control est fini, faire un msgbox (Message_erreur)

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 23
    Par défaut Mille mercis Lucfrfr
    génial ça marche et merci pour le petit + sur les messages d'erreurs.

    Bonne soirée.

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

Discussions similaires

  1. Recherche conditionnelle sur deux tables possible?
    Par floctc dans le forum Requêtes
    Réponses: 4
    Dernier message: 12/05/2009, 11h17
  2. Réponses: 1
    Dernier message: 30/07/2008, 15h11
  3. Controle sur format de données
    Par clairette dans le forum Langage
    Réponses: 11
    Dernier message: 03/02/2007, 15h26
  4. [C#]Controle sur un format de chaine de caractere
    Par drzoidberg dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/09/2006, 12h47
  5. INTERVAL possible sur un format TIME???
    Par Julien.alkaza dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2005, 14h32

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