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 :

détecter du texte dans une textbox


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
    Mars 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut détecter du texte dans une textbox
    Bonjour,

    Je réalise actuellement un progamme de calcul avec des texbox dans lesquelles les utilisateurs doivent entrer des nombres. J'aimerai réaliser un test qui envoie un message d'erreur si l'utilisateur a entré du texte dans ces textbox.

    J'ai testé IsNumeric mais ce test est très compliqué à ajouter à mon code. j'ai aussi tenté IsString mais Excel ne le connait pas!

    Avez-vous des idées?

    Merci d'avance!!

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Essaye simplement avec l'opérateur Like, c'est encore le plus simple

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Si tu veux-être sûr qu'il ne saisisse que des chiffres, tu peux utiliser ce type de code sur l'évènement KeyPress de ta zone de texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub txtAnnee_KeyPress(KeyAscii As Integer)
        ' ===== pour ne saisir que des chiffres =====
        If InStr("1234567890" & Chr(8), Chr$(KeyAscii)) = 0 Then
            KeyAscii = 0
        End If
    End Sub
    Ainsi il n'y aura que la saisie de chiffres qui passera, si des lettres sont affichées au clavier, rien ne se mettra dans la zone de texte.
    Et pas besoin de message, ils comprendront tout de suite

    Starec

  4. #4
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut presque...
    je pense que ce que tu proposes serait lidéal pour moi.

    J'ai rentré le code comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBoxSurf_KeyPress(KeyAscii As Integer)
     
    If InStr("1234567890" & Chr(8), Chr$(KeyAscii)) = 0 Then
            KeyAscii = 0
        End If
     
    End Sub
    mais cela m'envoie un message d'erreur
    "la déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure du même nom"

    Je ne comprends pas trop quoi changer...

    Sinon, comment marche "Like"?

    Merci!

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut Lou Pitchoun
    merci pour ta réponse.
    IsNumeric n'est pas compliqué en soi mais n'est pas très pratique pour mon code. J'aimerai en effet faire les tests pour être sure que toutes les text box sont des nombres, PUIS faire les calculs. Or IsNumeric m'oblige à intégrer le test au programme de calcul qui est déja énoooorme. A moins que je puisse faire un test IsNumeric sur plusieurs text box à la fois...

  6. #6
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    @ ucfoutu : je n'avais pas fait attention à ce genre de chose.
    Merci pour l'info.

    @ petiteabeille64 :

    Soit tu testes tous tes contrôles dans un boucle avant de lancer ton calcul, soit Tu les testes tous lors de la perte du focus ou à la sortie soit tu testes toutes les touches pressées sur le textbox.

  7. #7
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 32
    Par défaut merci!
    merci à tous pour vos réponses!
    j'ai finalement fait le test avec IsNumeric par contre certaines textbox peuvent rester vides. dans ce cas IsNumeric sort un message d'erreur. Comment faire pour qu'il accepte aussi les cases vides?
    j'ai pensé faire un test if IsNumeric() Or is Empty () mais si quelqun connait quelque chose de moins lourd (je dois faire le test sur une dizaine de textbox...)

    Merci!

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par petiteabeille64 Voir le message
    Comment faire pour qu'il accepte aussi les cases vides?
    Lorsqu'une chaine est vide elle contient "" ou (mieux) la longueur est nulle (len(chaine) = 0)
    Il te suffit donc de ne pas faire le test (exit sub, par exemple, ... ou encore une condition If ... then ..) que si la chaîne n'est pas vide !!!
    Où est le problème ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 31
    Par défaut
    Ca pourra peut-être t'aider : voici ce que j'avais trouvé pour imposer dans un textbox un format de deux lettres (pas plus et pas de chiffres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Impose le format de 1 à 2 lettres pour le poinçon
    Private Sub TextBox2_Change()
        TextBox2.MaxLength = 2 'nb caractères maxi autorisé dans le textbox
            On Error Resume Next
        If IsNumeric(Right(TextBox2, 1)) Then
            TextBox2 = Left(TextBox2, Len(TextBox2) - 1)
        End If
     
    End Sub
    Edit : je me suis faite coiffer au poteau, et avec une réponse plus exacte, flûte

  10. #10
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut
    ou son ces textbox sur ta sheet ou sur un userform?

  11. #11
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour

    une petite boucle pour tester les caracteres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 to len(textbox1.value)
         if instr(mid(textbox1.value,i,1),"0123456789.") = 0 then exit for
    next i
     
    if i<= len(textbox1.value) then msgbox "Il y a du texte ici"

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Command1_Click()
     Dim toto As String
      toto = "1234a56"
      If Not toto Like String(Len(toto), "#") Then
        MsgBox "pas bon"
      Else
        MsgBox "bon"
      End If
    End Sub

  13. #13
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Allez, j'y mets aussi ma contribution (que j'ai prise sur un article de SilkyRoad)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub txt1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     
        'Stocke la valeur dans la cellule correpondante
        If IsNumeric(txt1) Then
            ActiveWorkbook.Sheets("Feuil1").Range("I2") = txt1
            Else
                MsgBox "Un nombre est requis pour ce champ", vbExclamation + vbOKOnly, "Nombre attendu"
                txt1.SetFocus
        End If
     
    End Sub
    Je ne vois pas en quoi IsNumeric est compliqué

  14. #14
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour LouPitchoun,

    Faut malgré tout se méfier un peu, car sont également nériques certaines expressions...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNumeric("2E3") Then MsgBox "oui" Else MsgBox "non"
    ==>> petiteabeille64

    Like est à voir dans ton aide en ligne (sur ta machine)
    Je t'en ai mis le code plus haut, adapté à ton cas.

Discussions similaires

  1. affichage de text dans une textbox
    Par geriler dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/02/2008, 16h22
  2. Faire disparaitre un texte dans une textbox
    Par toinou62 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2007, 11h40
  3. Autoriser la saisie d'un text dans une textbox
    Par Lutine dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/07/2007, 10h41
  4. Sauvegarder et charger du texte dans une Textbox
    Par kazylax dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/07/2007, 12h39
  5. Colorer texte dans une textbox
    Par metatron dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 27/09/2006, 18h31

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