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 :

Exclure des caractères de la saisie d'une chaine


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
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Par défaut Exclure des caractères de la saisie d'une chaine
    Bonjour à tous.
    J'aurai besoin d'aide.
    Je voudrais exclure des caractères lors de la saisie dans un champs d'un Userform.

    Voila j'ai crée un menu d'ajout mais je voudrais dans les champs de saisis que la saisie des caractère exclu les caractère tels que "." "," etc.

    J'ai bien essayé un truc qui marche à moitié mais je ne sais pas faire sans faire apparaitre un MsgBox.

    Voilà je pense qu'il y a deux solution avec différents codes possibles.
    Moi je pensais au début faire cela :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If champs = "." or "," then
    Quoi mettre à la place d'une msgbox ?
    else 
    msgbox ("caractère inconnu")
    End if
    Dans cette situation, ça m'affiche une MsgBox donc pas forcément ce que je veux.

    Autre solution faire une code qui m'empêche d'écrire ces caractère.

    Dernière solution, faire un code qui vérifie le champs lorsque je clique sur le bouton ajout pour voir s'il n'y aucun caractère contraignant.


    Je début en VBA !

    Merci à vous

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour SenseniX le forum question tu veus renseigner des textbox??

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    tu peux t'inspirer du traitement employé ici, le sujet n'est pas le même, mais le traitement de fond oui


    Approche d'une résolution de besoin en VBA, niveau débutant
    Obliger une saisie numérique dans une TextBox


    cordialement,

    Didier

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 24
    Par défaut
    Désolé mais je n'y arrive pas.
    Pourriez-vous m'aider svp ?!
    Merci à vous.

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    pour empêcher la saisie de "," et "." dans un textbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) = "," Or Chr(KeyAscii) = "." Then KeyAscii = 0
    End Sub
    attention, quand même, si on copie un texte contenant la virgule ou le point, le texte passe.

  6. #6
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re,l'ami mercatog une autre approche si beaucoup de textboxs renommées ou pas!!! dans ton user passer par un module de classe
    exemple accepte uniquement les caractéres de 0 a 9 a adapter

    code user

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
    Dim M() As New classe1, I As Integer, c As Control
    Private Sub UserForm_Initialize()
    For Each c In Controls
    If TypeOf c Is MSForms.TextBox Then
    I = I + 1
    ReDim Preserve M(1 To I): Set M(I).txt = c
    End If:  Next
    End Sub
    code module de classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public WithEvents txt As MSForms.TextBox
    Private Sub txt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    Citation Envoyé par mercatog Voir le message
    attention, quand même, si on copie un texte contenant la virgule ou le point, le texte passe.
    C'est la raison pour laquelle j'ai personnellement l'habitude de ne pas utiliser l'évènement KeyPress. L'évènement Change (peu orthodoxe, mais...) met à l'abri de ce risque
    Dans cet exemple : impossible de frapper "a" ou "b", ni de coller un texte contenant l'une de ces deux lettres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub TextBox1_Change()
      Dim interdits, i As Integer
      Static ancien As String
      interdits = Array("a", "b")
      For i = 0 To UBound(interdits)
        If InStr(TextBox1.Text, interdits(i)) Then
          TextBox1.Text = ancien
          Exit For
        End If
      Next
      ancien = TextBox1.Text
    End Sub

Discussions similaires

  1. [WD15] Espacement des caractères dans champ saisie
    Par DanielB dans le forum WinDev
    Réponses: 15
    Dernier message: 21/05/2020, 00h35
  2. [RegExp] exclure des caractères spéciaux
    Par yannick29000 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/08/2011, 14h13
  3. [RegEx] Substituer des clé par leurs valeur dans une chaine
    Par marcha dans le forum Langage
    Réponses: 6
    Dernier message: 02/07/2010, 15h53
  4. Affichage des caractères nuls en début d'une chaine de caractère
    Par Saly2008 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2008, 10h48
  5. Réponses: 1
    Dernier message: 23/01/2006, 16h00

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