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 :

Contrôle de saisie dans un Textbox [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut Contrôle de saisie dans un Textbox
    Bonjour,

    Dans l'utilisation d'un Textbox, je cherche à contrôler la saisie de l'utilisateur.
    Comme je n'accepte que des chiffres, j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     Select Case KeyAscii
     
            'seulement des chiffres
            Case 48 To 57
     
            Case Else
     
                toto = MsgBox("Merci de ne saisir que des chiffres.")
     
     End Select
    Ce qui marche très bien !
    A peine l'utilisateur appuie sur une touche autre que numérique, que le message apparaît.

    Cependant, j'aimerais ensuite réinitialiser le Textbox à vide, mais cela ne fonctionne pas.

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     Select Case KeyAscii
     
            'seulement des chiffres
            Case 48 To 57
     
            Case Else
     
                toto = MsgBox("Merci de ne saisir que des chiffres.")
                textbox1.value = ""
     
     End Select
    Mais sans succès.....
    Comment procéder ?
    Merci de votre aide !

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    dans quel evenement du textbox tu a placé ce code ????

    pour info regarde par la
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Je débute avec les Userform donc je ne comprends pas très bien ta question, dans le sens où je ne sais pas ce qu'est un événement (?).

    Voici le code complet de ce contrôle de saisie si cela peut t'aider d'avantage :

    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
     
    Private Sub txtNbCible_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        Select Case KeyAscii
     
            'seulement des chiffres
            Case 48 To 57
     
            Case Else
     
                toto = MsgBox("Merci de ne saisir que des chiffres.")
     
        End Select
     
    End Sub

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une proposition parmi des dizaines possibles .... impossible de savoir si ça répond à ta demande puisque tu ne spécifies pas le type de nombres acceptés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub TextBox1_Change()
        With Me.TextBox1
            If .Value = "" Then
                Exit Sub
            ElseIf Val(.Value) <> .Value Then
                MsgBox ("Merci de ne saisir que des chiffres.")
                .Value = ""
            End If
        End With
    End Sub
    si tu acceptes les chiffres non entiers, il y aura nécessité de tester les "." et les "," avec des Replace
    Regarde l'aide au sujet de Val() pour comprendre ça

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Je n'accepte que les nombres entiers (ASCII de 48 à 57).
    Mais je vais pouvoir m'en sortir avec ton code, merci !

    Par contre, pour ma culture perso, je suis toujours preneur d'une solution ou d'une explication sur le fait que cela ne marche pas dans un KeyPress.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    sinon si tu veux gérer ca par les evenements se sera comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Const val_numeric = "[,.0-9]"    'constante comportant uniquement des chiffres
    If Not Chr(KeyAscii) Like val_numeric Then TextBox1 = "" 'KeyAscii = 0
    End Sub
     
    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Not IsNumeric(TextBox1) Then MsgBox ("Merci de ne saisir que des chiffres."): TextBox1 = ""
    End Sub
    est tu allé voir le lien que je t'ai donné ??
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Yep je suis en train toutes les solutions proposées !
    Encore merci.

  8. #8
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Par défaut
    Simple et efficace, le tout en une seule ligne.
    Article à lire absolument je confirme.

    Merci !

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

Discussions similaires

  1. [Compatbilité] Contrôle de saisie dans TextBox
    Par n00bi dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/03/2008, 14h43
  2. [Formulaire]Contrôle de saisie dans une zone de texte
    Par ludovicparis dans le forum IHM
    Réponses: 7
    Dernier message: 29/03/2007, 13h39
  3. masque de saisie dans un textbox (exentric word)
    Par shirya dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/01/2007, 17h00
  4. connaitre le type saisi dans une textbox
    Par r83 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/01/2007, 21h36
  5. Controle de la saisie dans un textbox
    Par jpp81 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/11/2006, 05h48

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