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 :

Empêcher la saisie de caractère spéciaux dans Inputbox() [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Par défaut Empêcher la saisie de caractère spéciaux dans Inputbox()
    Bonjour à toutes et à tous,

    J'aimerais empêcher la saisie de caractères spéciaux (à,ô,@,+,-,*,/,...etc) dans la donnée que j'aurais entrée dans mon inputbox.
    J'aimerais aussi remplacer les espaces par des "_".

    La solution serait peut être, que l'on peux rentrer tout les caractère, et que la macro les suppriment après ?
    Et pour les espaces, que la macro les remplacent par "_" après aussi ?

    Merci d'avance
    Baptou

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour !

    • Pour le nettoyage après saisie, c'est la fonction de feuille de calculs EPURAGE (voir l'aide d'Excel),

    .. en VBA : Application.Clean

    .. Quoique les caractères mentionnés ne sont pas du tout spéciaux (!),
    .. envisager alors de travailler avec des bornes de caractères ou leurs codes …
    .. Boucler sur chacun des caractères puis combiner avec par exemple l'instruction Select Case
    .. pour les caractères autorisés …

    .. Tutoriel Manipuler les chaînes de caractères en VB6 et VBA Excel


    • Pour le remplacement de caractères, consulter l'aide VBA de la fonction Replace


    Et oui, tout sous le coude à portée de clic !
    Sans compter l'Enregistreur de macros, un ami pour débuter un code …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Autrement, tu pourrais créer ton propre Inputbox à l'aide d'un Userform.
    Tu pourrais alors utiliser l'événement KeyPress du textbox pour gérer les caractères.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Par défaut
    Parmi, j'y avais aussi pensé mais seulement je ne maîtrise pas du tout les userform..

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    j'y avais aussi pensé mais seulement je ne maîtrise pas du tout les userform..
    C'est très simple, tu ajoute un UserForm (menu "Insertion" > "Userform"), dans la boite à outils qui vient de s'afficher, tu choisi "Zone de texte" en cliquant dessus et ensuite, tu glisse la souris du haut gauche au bas droit pour dessiner ton contrôle (en maintenant le bouton gauche appuyé) et enfin, tu double clique dessus pour entrer dans le module, tu supprime la proc "Change" qui c'est créée par défaut et tu colle le code ci-dessous tu teste et tu adapte à tes besoins
    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
     
    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     
        'pour connaître le numéro KeyAscii du carractère
        'MsgBox KeyAscii
     
        Select Case KeyAscii
     
            '"39" l'apostrophe
            '"48 To 57" les chiffres de 0 à 9
            '"65 To 90" les lettres majuscules de A à Z
            '"97 To 122" les lettres majuscules de a à z
            '"224" la lettre à
            '"231 To 233" les lettres accents ou cédille ç, è, é
            '"249" la lettre ù
            Case 39, 48 To 57, 65 To 90, 97 To 122, 224, 231 To 233, 249
     
            'remplace l'espace par le tiret bas
            Case 32
     
                KeyAscii = 95
     
            'interdit tout autre carractère et affiche un message pour informer l'utilisateur
            Case Else
     
                KeyAscii = 0
                MsgBox "Carractère interdit !"
     
        End Select
     
    End Sub
    Hervé.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Pour rajouter à ce que Theze t'a bien expliqué, tu déclares une variable Public en entête de module standard, disons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Reponse as String
    Quand tu appelles ton UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonInputBox.Show
    If Reponse = "" then Exit Sub
    '... le reste du code
    Dans ton Userform, tu ajoutes un bouton
    Sur Click du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Reponse = Me.MonTextbox
    Unload Me

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

Discussions similaires

  1. [Débutant] Empêcher la saisie de caractère spéciaux dans une textbox
    Par jyves47 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/02/2014, 20h00
  2. [Débutant] Empêcher la saisie des caractères dans un textBox
    Par amine1980 dans le forum C#
    Réponses: 1
    Dernier message: 03/10/2012, 00h13
  3. [VB.NET] Empecher la saisie de caractère spéciaux
    Par bloody22 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/07/2005, 11h09
  4. [XML] caractères spéciaux dans un type NMTOKEN
    Par norkius dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 08/09/2004, 14h30

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