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 :

Forcer l'écriture alphabétique dans un textbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut Forcer l'écriture alphabétique dans un textbox
    Bonjour à tous,

    Je fais appel à vos méthodes pour forcer l'écriture alphabétique dans une textbox.

    J'ai un USF qui fonctionne bien, sauf que à l'utilisation je me suis aperçu que des utilisateurs ne rentraient pas correctement le nom de l'opérateur, ils rentrent leur code identifiant (ex: Z854).
    Je souhaiterai par codage les forcer à rentrer le nom

    Ci dessous le code de l'USF
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Private Sub CommandButton_Valider1_Click()
     
        Application.ScreenUpdating = False
     
    'Activation de la feuille de recueil
        Worksheets("Recueil données").Activate
     
    'Détermine la première ligne vierge sous le tableau
        no_lignes = Range("A" & Rows.Count).End(xlUp).Row + 1
     
    'Copier la dernière ligne pour formater le remplissage
        Rows(no_lignes).Select
        Selection.FillDown
     
    'Remplir les cellules avec les valeurs des ComboBox et TextBox
            Cells(no_lignes, 1) = Date
            Cells(no_lignes, 2) = ComboBox_Section.Value
            Cells(no_lignes, 3) = ComboBox_Auditeur.Value
            Cells(no_lignes, 4) = ComboBox_Poste.Value
            Cells(no_lignes, 5) = TextBox_Operateur.Value
    'Ouvrir le questionnaire suivant
        Questionnaire1_Sécu.Show
     
    'Fermer l'USF Formulaire
        Unload Me
     
    End Sub
    Private Sub userForm_Initialize()
        'Incrémantation de la date
        Label8.Caption = Date
        'Ajout des valeurs des cellules A1 à Y1 de l'onglet "Sections-Auditeurs"
        For i = 1 To 25 'Liste des sections
            ComboBox_Section.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(1, i)
        Next
        no_lignes = 0
    End Sub
    Private Sub ComboBox_Section_Change()
        'Zone de liste vidée (sinon les valeurs s'ajoutent)
        ComboBox_Auditeur.Clear
        ComboBox_Poste.Clear
     
        Dim no_section As Integer, nom_auditeur As Integer, no_poste As Integer
     
        'Numéro de la sélection "section" (ListIndex commence à 0)
        no_section = ComboBox_Section.ListIndex + 1
        'Nom des auditeurs de la colonne section choisie
        nom_auditeur = Worksheets("Sections-Auditeurs-Machines").Cells(1, no_section).End(4).Row
        'Nombre de lignes poste de la colonne section choisie
        no_poste = Worksheets("Sections-Auditeurs-Machines").Cells(6, no_section).End(xlDown).Row
        For i = 2 To nom_auditeur
            ComboBox_Auditeur.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(i, no_section)
        Next
        For i = 6 To no_poste
            ComboBox_Poste.AddItem Worksheets("Sections-Auditeurs-Machines").Cells(i, no_section)
        Next
    End Sub
    Private Sub CommandButton_Annuler1_Click()
      delete_form ("Formulaire")
      MsgBox "Etes-vous sûre de vouloir arrêter?", vbYesNo + vbQuestion
     
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        If CloseMode = vbFormControlMenu Then Cancel = True
    End Sub
    Private Sub TextBox_Operateur_keyPress(ByVal keyAscii As MSForms.ReturnInteger) 'Force les MAJUSCULSES
        keyAscii = Asc(UCase(Chr(keyAscii)))
    End Sub
    En vous remerciant par avance

    Cdt

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    On pourrait simplement interdire la saisie d'un chiffre via l'évènement Keydown
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Select Case KeyCode
        Case 48 To 57: KeyCode = 0
        Case 96 To 105: KeyCode = 0
    End Select
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut
    Bonjour fring

    Ta solution me convient à merveille. Elle empèche carrément l'écriture numérique.

    Merci beaucoup pour ta rapidité et la solution

    Au plaisir de te relire sur le forum

    Cdt

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Une autre solution consiste à vérifier qu’il n’y a pas de nombre dans la chaine de caractères composant le nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub CommandButton_Valider1_Click()
    Dim i As Integer
        'Contrôle du nom opérateur
        For i = 1 To Len(TextBox_Operateur.Value)
            If IsNumeric(Mid(TextBox_Operateur.Value, i, 1)) Then
                MsgBox "Nom opérateur incorrect"
                Exit Sub
            End If
        Next i
    Cordialement.

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

Discussions similaires

  1. Problème d'écriture dans une TextBox
    Par jeremy5490 dans le forum C#
    Réponses: 6
    Dernier message: 09/06/2011, 11h28
  2. [XL-2003] forcer un nombre dans un textbox entre 0 et 360
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/10/2010, 19h30
  3. Forcer l'écriture japonais dans un programme.
    Par VSEB33 dans le forum Windows
    Réponses: 12
    Dernier message: 22/09/2009, 10h53
  4. Réponses: 5
    Dernier message: 12/03/2009, 17h25
  5. Réponses: 13
    Dernier message: 29/04/2008, 09h41

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