Créer un masque de saisie dans un formulaire utilisateur (UserForm), Excel VBA

Créer un masque de saisie dans un formulaire utilisateur (UserForm), Excel VBA

Voici un guide détaillé pour créer un masque de saisie dans un formulaire utilisateur (UserForm) avec VBA Excel.
Étape 1 : Insérer un UserForm
1. Ouvrez votre fichier Excel.
2. Appuyez sur

Alt + F11
Alt + F11 pour ouvrir l’éditeur Visual Basic for Applications (VBA).
3. Dans l’éditeur VBA, cliquez sur
Insertion
Insertion dans le menu et choisissez
UserForm
UserForm. Cela va créer un nouveau UserForm où vous pourrez ajouter des contrôles.

Étape 2 : Concevoir le UserForm
1. Dans le UserForm créé, vous pouvez ajouter des contrôles comme des
TextBox
TextBox (zones de texte),
CommandButton
CommandButton (boutons),
Label
Label (étiquettes), etc.

2. Pour ajouter un masque de saisie, vous aurez besoin d’un contrôle
TextBox
TextBox où l’utilisateur pourra entrer ses données (par exemple, un numéro de téléphone ou une date).

3. Vous pouvez aussi ajouter un
CommandButton
CommandButton pour soumettre ou traiter les données saisies dans le UserForm.

Par exemple, pour un masque de saisie de numéro de téléphone, vous pourriez concevoir votre UserForm de cette manière :

  • Ajouter une
    Label
    Label avec le texte « Entrez le numéro de téléphone : ».
  • Ajouter un
    TextBox
    TextBox où l’utilisateur saisira le numéro de téléphone.
  • Ajouter un
    CommandButton
    CommandButton avec le texte « Soumettre » pour traiter la saisie.

Étape 3 : Ajouter du Code au UserForm
Pour créer un masque de saisie, vous allez utiliser l’événement

Change
Change ou
KeyPress
KeyPress du
TextBox
TextBox afin de restreindre la saisie et de la formater correctement. Voici un exemple de masque de saisie pour un numéro de téléphone, avec le format
(XXX) XXX-XXXX
(XXX) XXX-XXXX.
Code pour le Masque de Saisie d’un Numéro de Téléphone
Dans l’éditeur VBA :
1. Faites un clic droit sur le
TextBox
TextBox dans lequel vous souhaitez appliquer le masque de saisie.

2. Choisissez
Afficher le code
Afficher le code et entrez le code suivant :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Private Sub TextBox1_Change()
Dim Text As String
Text = TextBox1.Text
' Supprimer les caractères non numériques
Text = Replace(Text, "(", "")
Text = Replace(Text, ")", "")
Text = Replace(Text, "-", "")
Text = Replace(Text, " ", "")
' Ajouter le masque de saisie : (XXX) XXX-XXXX
If Len(Text) <= 3 Then
TextBox1.Text = "(" & Text
ElseIf Len(Text) <= 6 Then
TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, Len(Text))
Else
TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, 3) & "-" & Mid(Text, 7, 4)
End If
' Assurer que le curseur reste à la position correcte
TextBox1.SelStart = Len(TextBox1.Text)
End Sub
Private Sub TextBox1_Change() Dim Text As String Text = TextBox1.Text ' Supprimer les caractères non numériques Text = Replace(Text, "(", "") Text = Replace(Text, ")", "") Text = Replace(Text, "-", "") Text = Replace(Text, " ", "") ' Ajouter le masque de saisie : (XXX) XXX-XXXX If Len(Text) <= 3 Then TextBox1.Text = "(" & Text ElseIf Len(Text) <= 6 Then TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, Len(Text)) Else TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, 3) & "-" & Mid(Text, 7, 4) End If ' Assurer que le curseur reste à la position correcte TextBox1.SelStart = Len(TextBox1.Text) End Sub
Private Sub TextBox1_Change()
    Dim Text As String
    Text = TextBox1.Text
    ' Supprimer les caractères non numériques
    Text = Replace(Text, "(", "")
    Text = Replace(Text, ")", "")
    Text = Replace(Text, "-", "")
    Text = Replace(Text, " ", "")
    ' Ajouter le masque de saisie : (XXX) XXX-XXXX
    If Len(Text) <= 3 Then
        TextBox1.Text = "(" & Text
    ElseIf Len(Text) <= 6 Then
        TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, Len(Text))
    Else
        TextBox1.Text = "(" & Mid(Text, 1, 3) & ") " & Mid(Text, 4, 3) & "-" & Mid(Text, 7, 4)
    End If
    ' Assurer que le curseur reste à la position correcte
    TextBox1.SelStart = Len(TextBox1.Text)
End Sub

Explication du Code :

  • L’événement
    TextBox1_Change
    TextBox1_Change est déclenché chaque fois que l’utilisateur tape quelque chose dans la
    TextBox1
    TextBox1.
  • Nous supprimons les caractères non numériques (c’est-à-dire
    (
    (,
    )
    ),
    -
    -, et les espaces) à l’aide de la fonction
    Replace
    Replace.
  • Ensuite, nous formaterons le texte à mesure que l’utilisateur tape, en ajoutant les parenthèses et le tiret aux bons endroits.
  • Enfin, la propriété
    SelStart
    SelStart permet de maintenir le curseur à la fin du champ de texte à chaque modification.

Étape 4 : Tester le UserForm
1. Fermez la fenêtre de code et revenez au UserForm.
2. Pour tester le formulaire, appuyez sur

F5
F5 dans l’éditeur VBA pour exécuter le formulaire.
3. Essayez de saisir un numéro dans la
TextBox
TextBox. Le texte sera automatiquement formaté selon le masque
(XXX) XXX-XXXX
(XXX) XXX-XXXX.

Exemple de Résultat :
Lorsque vous testez le formulaire, à mesure que l’utilisateur tape un numéro de téléphone, la
TextBox
TextBox s’ajustera automatiquement pour afficher le format ainsi :

  • Si l’utilisateur tape
    1234567890
    1234567890, il apparaîtra comme
    (123) 456-7890
    (123) 456-7890.
  • Si l’utilisateur tape
    1
    1, il apparaîtra comme
    (1
    (1.
  • Au fur et à mesure que l’utilisateur ajoute des chiffres, le format continuera à être appliqué correctement.

Améliorations supplémentaires :

  • Vous pouvez modifier le masque de saisie pour d’autres types de données, comme des numéros de carte bancaire, des numéros de sécurité sociale, ou des dates, en ajustant la logique de formatage dans l’événement
    TextBox1_Change
    TextBox1_Change.
  • Vous pouvez également ajouter une validation pour vous assurer que l’utilisateur entre un nombre valide de chiffres (par exemple, 10 chiffres pour un numéro de téléphone).
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x