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
pour ouvrir l’éditeur Visual Basic for Applications (VBA).
3. Dans l’éditeur VBA, cliquez sur Insertion
dans le menu et choisissez 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
(zones de texte), CommandButton
(boutons), Label
(étiquettes), etc.
2. Pour ajouter un masque de saisie, vous aurez besoin d’un contrôle 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
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
avec le texte « Entrez le numéro de téléphone : ». - Ajouter un
TextBox
où l’utilisateur saisira le numéro de téléphone. - Ajouter un
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
ou KeyPress
du 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
.
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
dans lequel vous souhaitez appliquer le masque de saisie.
2. Choisissez Afficher le code
et entrez le code suivant :
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
est déclenché chaque fois que l’utilisateur tape quelque chose dans laTextBox1
. - Nous supprimons les caractères non numériques (c’est-à-dire
(
,)
,-
, et les espaces) à l’aide de la fonctionReplace
. - 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
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
dans l’éditeur VBA pour exécuter le formulaire.
3. Essayez de saisir un numéro dans la TextBox
. Le texte sera automatiquement formaté selon le masque (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
s’ajustera automatiquement pour afficher le format ainsi :
- Si l’utilisateur tape
1234567890
, il apparaîtra comme(123) 456-7890
. - Si l’utilisateur tape
1
, il apparaîtra comme(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
. - 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).