VBA – Création de Forumulaires Utilisateur

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on janvier 12, 2022

Ce tutoriel traite des formulaires utilisateur appelés UserForms en VBA.

Formulaires Utilisateur VBA

Le formulaire utilisateur est une partie très importante de la programmation en VBA. Il vous permet de construire une interface graphique d’aspect professionnel pour communiquer avec les utilisateurs de votre application VBA. Il vous permet également de contrôler totalement l’utilisateur dans ce qu’il peut faire dans votre classeur.

Vous pouvez, bien sûr, utiliser des cellules de feuille de calcul pour accepter les paramètres de l’utilisateur, mais un formulaire offre une bien meilleure expérience à vos utilisateurs.

En étendant la hauteur et la largeur de votre formulaire à la taille de la fenêtre Excel, vous pouvez faire en sorte que votre application ressemble à une application Windows normale, l’utilisateur n’étant absolument pas conscient qu’il utilise Excel comme hôte.

Vous disposez de tous les contrôles Windows normaux, tels que les menus déroulants, les listes déroulantes et les cases à cocher. Vous disposez également d’un large éventail de méthodes, d’événements et de propriétés à utiliser pour améliorer l’expérience de l’utilisateur.

Un point important est que lorsque vous affichez un formulaire utilisateur intégré ou modal, vous ne pouvez pas modifier votre code dans le VBE ni accéder à aucune fonctionnalité Excel. Ce n’est que lorsque le formulaire est fermé que le curseur apparaît dans votre code.

Formulaires Utilisateur VBA Intégrés

Excel VBA dispose de plusieurs formulaires intégrés qui peuvent être utilisés pour communiquer avec l’utilisateur.

Boîte de Message

Il s’agit du formulaire le plus couramment utilisé dans VBA. Il affiche simplement un message textuel, informant éventuellement l’utilisateur qu’il a saisi une entrée non valide ou qu’un processus VBA a terminé son exécution. Dans leur forme la plus simple, ils affichent une chaîne de texte, mais vous pouvez également ajouter une icône telle qu’un point d’interrogation ou un point d’exclamation, et donner un titre différent à la boîte de message.

Voici un exemple de base. Il n’y a qu’un seul bouton à cliquer, et la barre de titre indique « Microsoft Excel » Le code pour produire cet exemple est très simple :

Sub TestMsgBox()
MsgBox "L'exécution du processus est complétée"
End Sub

Vous pouvez utiliser différents paramètres pour ajouter des boutons, des icônes, et modifier la barre de titre

Sub TestMsgBox()
Dim Réponse As Variant
Réponse = MsgBox("Êtes-vous certain?", vbYesNo Or vbQuestion, "Mon Application")
If Réponse = vbYes Then
    'votre processus ici
Else
    Exit Sub
End If
End Sub

Ce code ajoute un bouton « Oui », un bouton « Non », une icône de point d’interrogation et définit la barre de titre. Notez que vous pouvez combiner les styles de la boîte de message en utilisant l’opérateur ‘Or’.

En outre, lorsque vous renvoyez une valeur à partir d’une boîte de message, la variable de retour doit être définie comme une variable de type « variant » ou « vbMsgBoxResult » et la déclaration de la boîte de message doit utiliser des parenthèses,

Boîte de Saisie

Une boîte de saisie ou « input box » en anglais, très simple est intégrée à VBA, mais elle est assez restrictive quant à ce que vous pouvez en faire. Si vous le pouvez, il est préférable de concevoir un formulaire utilisateur personnalisé.

Sub TestInputBox()
Dim strNom As String
strNom = InputBox("Saisissez votre nom", "Votre Nom")
MsgBox strNom
End Sub

Vous pouvez également définir une valeur par défaut dans les paramètres.

Boite de Dialogue d’Ouverture de Fichier

Cela vous permet d’utiliser la boîte de dialogue de fichier de Windows dans votre code VBA. Il est très impressionnant pour l’utilisateur lorsqu’il s’exécute, mais il est très simple à intégrer et vous bénéficiez automatiquement de toutes les fonctionnalités de la boîte de dialogue de fichier.

Le code limite l’utilisateur à l’affichage des fichiers Excel. Malheureusement, il pourrait taper un nom de fichier non Excel dans le champ « Nom de fichier » et cliquer sur le bouton Ouvrir. Il vous faudra donc prévoir du code pour vous assurer qu’un fichier Excel a été sélectionné.

Utilisez la commande ‘ChDir’ pour modifier le répertoire par défaut en fonction de vos besoins avant d’afficher la boîte de dialogue d’ouverture de fichier.

Notez l’utilisation de caractères de remplacement « * » dans le paramètre FileFilter. Les fichiers Excel à afficher peuvent être antérieurs à 2007, comporter des macros ou être binaires, de sorte que le filtre est ‘.xls*’.

Sub TestOuvertureFichier()
Dim MonFichier As String
ChDir "C:\Dossier VBA"
MonFichier = Application.GetOpenFilename("Fichiers Excel (*.xls*),*.xls*", , "Sélectionner un Fichier")
MsgBox MonFichier
End Sub

Si nécessaire, vous pouvez permettre à l’utilisateur de sélectionner plusieurs fichiers à la fois en utilisant le paramètre MultiSelect. La valeur par défaut est False (sélection unique uniquement).

Sub TestOuvertureFichiers()
Dim MesFichiers As String

ChDir "C:\Dossier VBA"
MesFichiers = Application.GetOpenFilename("Fichiers Excel (*.xls*),*.xls*", , "Sélectionner un Fichier", , True)

For Each Fichier In MesFichiers
    MsgBox Fichier
Next Fichier

End Sub

L’utilisateur peut maintenant sélectionner plusieurs fichiers en maintenant la touche maj enfoncée lors de la sélection. La boucle For Each affiche le chemin et le nom complets de chaque fichier sélectionné.

Dialogues par Défaut d’Excel

Dans Excel VBA, il existe une collection nommée Dialogs que vous pouvez utiliser pour afficher n’importe quelle boîte de dialogue Excel standard. L’inconvénient est que vous ne pouvez pas accéder aux paramètres que l’utilisateur a choisis ni modifier l’apparence de la boîte de dialogue, mais ces boîtes de dialogue peuvent être utiles pour diriger l’utilisateur vers une fonction Excel standard et lui permettre de choisir des paramètres spécifiques dans la boîte de dialogue.

Un bon exemple de ceci est l’affichage de la boîte de dialogue « Imprimer » en VBA :

Sub TestPrintDialog()
Application.Dialogs(xlDialogPrint).Show
End Sub

Lorsque vous ouvrez les parenthèses de la collection Dialogs, vous verrez une liste d’un grand nombre de constantes pour les dialogues intégrés. Il est intéressant d’expérimenter certaines de ces options dans votre code.

Insertion d’un Nouveau Formulaire Utilisateur

Vous pouvez concevoir vos propres formulaires utilisateur personnalisés en insérant un formulaire utilisateur dans l’éditeur Visual Basic (VBE) Pour ce faire, il suffit de sélectionner Insertion | UserForm dans la barre de menu du VBE.

Cliquez sur « UserForm » et un nouveau formulaire vierge apparaîtra, prêt à être développé.

Le formulaire proprement dit (appelé « UserForm1 ») semble assez petit, mais vous pouvez utiliser les poignées qui l’entourent pour l’agrandir ou le réduire en faisant glisser les poignées avec votre curseur.

Une fenêtre de propriétés se trouve dans le coin inférieur gauche de l’écran. Cette fenêtre affiche les propriétés de l’objet en cours de sélection. Puisque le formulaire lui-même est sélectionné, elle contient toutes les propriétés du formulaire spécifiques à ce dernier.

Notez que lorsque vous commencez à ajouter des contrôles tels que des boîtes combo et des boutons de commande, ces contrôles ont tous leur propre ensemble de propriétés, et ils peuvent être très différents dans ce que vous pouvez faire avec chacun d’eux.

Les propriétés que vous voyez actuellement ne s’appliquent qu’au formulaire lui-même.

La propriété « Name » est le nom utilisé pour définir votre objet formulaire dans le code VBA. Vous pouvez utiliser quelque chose de plus significatif pour le nom de l’objet, de sorte que lorsque vous révisez votre code, il est facile de reconnaitre quel formulaire est utilisé.

La propriété « Name » se reflète également dans la fenêtre « Explorateur de Projet » dans le coin supérieur gauche de l’écran

Vous voudrez probalement modifier la barre de titre de votre formulaire pour qu’elle soit différente de « UserForm1 », et vous pouvez le faire en saisissant votre nouveau titre dans la propriété « Caption »

Vous pouvez apporter un grand nombre de modifications à la façon dont votre formulaire est vu par l’utilisateur. Vous pouvez modifier les couleurs, ajouter des images, par exemple un logo d’entreprise, changer la position à l’aide des propriétés « Left » et « Top », changer la taille à l’aide des propriétés « Height » et « Width », changer le pointeur de la souris, et bien plus encore.

Toutes ces propriétés peuvent également être modifiées par du code VBA pour tout contrôle que vous avez ajouté à votre formulaire. Par exemple, un utilisateur peut faire son choix dans une liste de contrôle et vous pouvez désactiver ou masquer d’autres contrôles en fonction du choix de l’utilisateur.

Utilisation de la Boîte à Outils

Vous remarquerez que lorsque vous cliquez sur le formulaire lui-même, une boîte à outils apparaît. Si vous cliquez ailleurs, par exemple dans le volet des propriétés, elle disparaît, mais réapparaît lorsque vous cliquez sur le formulaire.

La boîte à outils fournit les véritables mécanismes de conception du formulaire. Elle permet d’ajouter à votre formulaire les contrôles Windows normaux que les utilisateurs connaissent bien.

Vous aurez remarqué que le formulaire comporte un réseau de points. Il s’agit d’une grille de positionnement, de sorte que lorsque vous ajoutez un contrôle au formulaire, il aligne automatiquement sa position sur les lignes et les colonnes de points. Cela facilite grandement l’alignement des contrôles, de sorte qu’ils n’ont pas l’air désordonnés

Si vous cliquez sur un contrôle, puis décidez de ne pas l’utiliser, cliquez sur l’icône « Sélectionner des Objets » dans le coin supérieur gauche de la boîte à outils pour que votre curseur redevienne normal.

Vous pouvez ajouter des contrôles supplémentaires à la boîte à outils en utilisant Outils | Contrôles supplémentaires dans le menu VBE. Un nombre considérable d’options sont disponibles, mais selon les versions de Windows et d’Excel, elles ne fonctionnent pas toujours et une certaine expérimentation est souvent nécessaire.

En outre, il se peut que vos utilisateurs n’aient pas accès à certains de ces contrôles supplémentaires ou qu’ils utilisent des versions plus anciennes de Windows et d’Excel, ce qui peut poser des problèmes. Dans les grandes organisations, surtout si elles sont internationales, il n’existe pas de PC standard sur lequel vous pouvez compter!

Ajouter un Bouton de Sortie à Votre Formulaire

Il est facile d’ajouter un bouton de commande au formulaire. Il se présente de la même manière que les boutons que vous voyez dans d’autres formulaires Windows, généralement sous la forme d’un bouton « OK » ou « Annuler ».

Cliquez sur l’icône nommée « CommandButton » (bouton de commande) dans la boîte à outils. Il s’agit de la deuxième icône en partant de la gauche sur la rangée inférieure d’icônes. Voir l’image ci-dessus, elle porte les lettres « ab ».

Vous pouvez soit maintenir le bouton de la souris enfoncé et faire glisser le contrôle sur votre formulaire, soit déplacer le curseur sur le formulaire, où il se transforme en curseur en forme de croix et où vous pouvez positionner et dimensionner votre bouton.

Si vous faites glisser le contrôle sur le formulaire, vous obtiendrez la taille par défaut du bouton. En déplaçant le curseur sur le formulaire, vous pouvez modifier la taille du bouton en faisant glisser le curseur en forme de croix sur votre formulaire

Votre formulaire ressemble maintenant à ceci :

PIC 10

Le bouton affichera un texte par défaut, mais vous voudrez certainement le modifier selon vos propres besoins. Vous pouvez cliquer sur le texte dans le bouton (« CommandButton1 ») et cela vous permettra de le modifier directement.

Vous pouvez également le modifier dans la fenêtre des propriétés (dans le coin inférieur gauche de l’écran). Vous verrez une propriété appelée « Caption » et il suffit de modifier la valeur de celle-ci. Changez-la en « Quitter »

Comme pour les propriétés du formulaire, la propriété « Name » définit le nom qui sera utilisé dans votre code VBA. Vous voudrez peut-être utiliser un nom plus significatif et plus évident dans votre code. Vous pouvez le saisir dans le champ de la propriété « Name ».

Vous pouvez repositionner le bouton en le faisant glisser sur le formulaire et vous pouvez le redimensionner en cliquant sur les poignées du bouton (cases carrées blanches) et en faisant glisser les poignées pour l’agrandir ou le réduire.

Vous pouvez également redimensionner le bouton en modifiant les valeurs de hauteur et de largeur dans la fenêtre des propriétés.

Vous pouvez visualiser votre formulaire dans Excel en cliquant sur le triangle vert dans la barre d’outils VBE ou en appuyant sur F5.

PIC 11

Vous pouvez appeler votre formulaire à partir du code VBA d’un module en utilisant la méthode « Show ».

Sub AfficherFormulaire()
UserForm1.Show
End Sub

Votre formulaire utilisateur est effectivement un objet global et peut être appelé de n’importe où dans votre code.

Actuellement, votre bouton de commande ne fait rien car il n’y a pas de code VBA derrière celui-ci. Vous devez l’écrire vous-même! La seule interaction possible pour le moment, c’est que vous pouvez cliquer sur le X « Fermer » dans le coin supérieur droit de votre formulaire.

Pour ajouter du code VBA, double-cliquez sur le bouton du formulaire.

Vous accédez alors à la fenêtre de code VBA normale et l’évènement par défaut, l’évènement « click », est affiché.

Vous utilisez la méthode « Hide » pour fermer le formulaire, et vous pouvez également ajouter tout autre code, comme une boîte de message pour confirmer à l’utilisateur ce qui s’est passé.

Notez que la fenêtre de code comporte deux listes déroulantes en haut. La première vous permet de sélectionner vos contrôles de formulaire, et la seconde affiche tous les événements disponibles dans lesquels il est possible d’ajouter du code. L’évènement le plus évident pour un bouton est le « clic », mais il en existe d’autres comme le « double clic » ou le « déplacement de la souris ».

Lorsque vous exécutez votre formulaire maintenant, le bouton fait réellement quelque chose. Le formulaire disparaît et un message s’affiche pour confirmer que le formulaire s’est fermé.

Vous pouvez, bien entendu, élaborer davantage le code de sortie. Vous pouvez souhaiter afficher un autre formulaire ou agir sur les paramètres que l’utilisateur a saisis dans votre formulaire par exemple.

Ajout d’une Étiquette à un Formulaire

Les contrôles d’étiquette, « label » en anglais, servent à indiquer à l’utilisateur le type de données qu’il doit saisir dans un contrôle du formulaire, par exemple une zone de texte, une liste déroulante, etc. Une étiquette n’a pas de bordures par défaut, mais celles-ci peuvent être ajoutées dans la fenêtre des propriétés si nécessaire.

Ce type de contrôle est en lecture seule pour l’utilisateur. Les étiquettes sont simplement un moyen de mettre du texte sur le formulaire, qu’il s’agisse d’un titre en gras, ou d’une instruction sur ce qu’il faut saisir ou choisir.

Pour ajouter une étiquette, cliquez sur l’icône « A » dans la boîte à outils (rangée supérieure, deuxième à partir de la gauche) et double-cliquez dessus ou déplacez votre curseur sur le formulaire et sélectionnez la position et la taille.

En utilisant la propriété « Caption » dans la fenêtre des propriétés, ou en cliquant sur le contrôle d’étiquette, vous pouvez saisir le texte à afficher par l’étiquette.

Notez que le texte s’enroulera en fonction de la taille du contrôle d’étiquette. Si la chaîne de texte est trop longue, elle n’apparaîtra pas complètement sur le formulaire, vous devez donc porter attention à dimensionner correctement votre contrôle d’étiquette.

À l’aide de la fenêtre des propriétés, vous pouvez modifier l’apparence du contrôle d’étiquette, avec des couleurs, des polices et des styles de fond différents, par exemple s’il recouvre une image et que vous souhaitez qu’il soit transparent.

Il n’y a pas de code à créer pour un contrôle d’étiquette. L’objectif principal est d’ajouter du texte au formulaire afin que l’utilisateur puisse voir comment fonctionnent les autres contrôles.

Ajout d’un Contrôle de Texte au Formulaire

Un contrôle de texte est utilisé pour permettre à l’utilisateur de saisir du texte, par exemple un nom ou des commentaires.

Le contrôle de texte est ajouté à partir de la boîte à outils en cliquant sur l’icône de contrôle de texte (rangée supérieure, troisième à partir de la gauche) et en double-cliquant ou en faisant glisser le contrôle en position sur votre formulaire.

Le contrôle de texte est souvent confondu avec le contrôle d’étiquette, mais le contrôle de texte est celui qui sert à la saisie par l’utilisateur alors que l’étiquette sert à afficher du texte à l’utilisateur.

Le texte « Entrez votre nom » est un contrôle d’étiquette comme décrit précédemment et nous avons maintenant une zone de texte blanche prête à recevoir le texte saisi par l’utilisateur.

Grâce à la fenêtre des propriétés, vous pouvez modifier les couleurs, les polices, les effets spéciaux ou utiliser des caractères de mot de passe pour votre zone de texte. Ce type de contrôle est très flexible et permet une multitude de possibilités.

Une propriété très importante pour une zone de texte est la propriété « MultiLine » (lignes multiples). Si vous souhaitez que l’utilisateur saisisse une grande quantité de texte dans le contrôle de texte, par exemple des commentaires, la propriété « MultiLine » doit être définie sur True.

La valeur par défaut est False, ce qui signifie que quelle que soit la taille de votre zone de texte, le texte saisi restera sur une ligne continue et défilera hors de la zone de texte. Il ne s’enroulera pas à l’intérieur de la zone.

Il n’y a pas de fenêtre contextuelle lorsque vous cliquez avec le bouton droit de la souris sur votre zone de texte lorsqu’elle est en cours d’exécution, mais CTRL+V fonctionnera pour coller et CTRL+C pour copier, si l’utilisateur souhaite copier et coller du texte à partir d’autres applications.

Là encore, vous devez écrire votre propre code pour traiter le texte que l’utilisateur a saisi. Vous pouvez souhaiter le transférer dans une cellule d’une feuille de calcul, par exemple.

Vous pouvez ajouter ce code dans l’événement « Change » de la zone de texte.

Private Sub TextBox1_Change()
Sheets("Feuil1").Range("A1").Value = TextBox1.Value
End Sub

Vous pouvez également insérer un code de validation pour vérifier que l’utilisateur n’entre pas des données erronées qui auraient des effets désastreux sur votre application.

L’événement change n’est pas approrié pour ce type de vérification car il est appelé chaque fois que l’utilisateur tape un nouveau caractère. L’utilisateur pourrait commencer à taper une chaîne de texte et s’apercevoir instantanément qu’il a enfreint vos règles de validation avant d’avoir terminé un texte valide.

Vous devez plutôt utiliser l’événement « Exit ». Celui-ci est déclenché lorsque l’utilisateur déplace le focus sur un autre contrôle du formulaire, ce qui signifie que l’utilisateur a terminé la saisie des données dans la boite de texte.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNull(TextBox1.Value) Or Len(TextBox1.Value) < 4 Then
    MsgBox "Le nom entré n'est pas valide", vbCritical
    TextBox1.SetFocus
End If
End Sub

Lorsque l’utilisateur clique sur un autre contrôle du formulaire, ce code vérifie si le champ de texte contient une valeur nulle ou moins de 4 caractères. Si le test est vrai, une boîte de message avec une icône critique apparaît pour informer l’utilisateur que le nom saisie n’est pas valide, et le focus est déplacé vers la zone de texte en question pour que l’utilisateur puisse la corriger.

Notez que même si l’utilisateur clique sur le bouton Quitter, l’événement de sortie de la zone de texte sera exécuté en premier, ce qui empêche l’utilisateur de quitter sans corriger la saisie

Initialiser et Activer des Évènements sur un Formulaire

Lorsque VBA crée et construit un formulaire pour la première fois, il déclenche l’évènement d’initialisation nommé « Initialize ». Toutefois, comme le formulaire est également affiché à ce stade, il déclenche également l’évènement « Activate ». Dès lors, chaque fois que le formulaire apparaît à l’aide de la méthode « Show » ou qu’il fait partie d’une hiérarchie de formulaires, l’événement « Activate » est déclenché, mais pas l’événement « Initialize ».

L’événement « Initialize » ne se produit qu’une fois, mais l’événement « Activate » peut se produire plusieurs fois.

Sur votre formulaire, vous voudrez peut-être définir des valeurs par défaut à vos contrôles à partir des valeurs d’une feuille de calcul, par exemple les zones de texte, afin qu’elles apparaissent lors de la première utilisation du formulaire, mais l’utilisateur peut écraser les valeurs par défaut et ces nouvelles valeurs resteront en place tant que le code est exécuté.

Private Sub UserForm_Initialize()
TextBox1.Value = Sheets("Feuil1").Range("A1").Value
If TextBox1.Value="" Then
	TextBox1.Visible=False
Else
	TextBox1.Visible=True
End If
End Sub

Vous pouvez trouver l’événement ‘Initialize’ dans le deuxième menu déroulant de la fenêtre de code, et le nom du formulaire utilisateur dans le premier menu déroulant.

Ce code utilisera la valeur de la cellule A1 de la feuille nommée ‘Feuil1’ comme valeur par défaut dans la zone de texte créée plus tôt dans cet article. Lorsque le formulaire s’affichera pour la première fois, la valeur par défaut apparaîtra. L’utilisateur peut ensuite écraser la valeur par défaut et celle-ci sera conservée. Si la cellule A1 est vide, la zone de texte sera masquée, sinon elle sera visible.

La valeur par défaut peut également être codée en dur :

TextBox1.Value = "Jean Dupont"

Vous pouvez également vous assurer que les valeurs saisies par l’utilisateur réapparaissent à chaque fois que l’utilisateur ouvre ce formulaire dans cette session Excel particulière. Le code VBA peut facilement réécrire les valeurs dans les cellules du classeur à l’aide de l’évènement « Exit » d’un contrôle, et les rétablir à l’aide de l’évènement « Activate » du formulaire.

Private Sub TextBox1_Exit (ByVal Cancel as MSForms.ReturnBoolean)
Sheets("Feuil1").Range("A10").Value = TextBox1.Value
End Sub
Private Sub UserForm_Activate()
TextBox1.Value = Sheets("Feuil1").Range("A10").Value
End Sub

Ce code rendra les valeurs de l’utilisateur persistantes et fera en sorte qu’elles soient sauvegardées avec le reste du classeur.

Sauvegarder votre Application et vos Formulaires

Lorsque vous enregistrez votre classeur Excel contenant vos formulaires, tous les formulaires et leur code VBA sont également enregistrés. Cependant, toutes les valeurs que les formulaires contiennent lorsqu’ils sont affichés seront perdues.

Il est important d’écrire le code de manière à ce que, lorsque l’utilisateur quitte le classeur ou le formulaire, les valeurs soient réécrites dans les cellules du classeur et soient donc préservées.

Formulaires Modaux et Non-Modaux

Le formulaire lui-même possède une propriété « Show Modal ». Cette propriété est définie par défaut sur True, mais elle peut être modifiée sur False (non-modal).

Si un formulaire est modal, cela signifie qu’aucune des fonctionnalités d’Excel n’est accessible pendant l’affichage du formulaire. Cela inclut votre code dans la fenêtre VBE. Vous pouvez visualiser le code, mais le curseur et le clavier sont désactivés.

Dans un formulaire non modal, vous pouvez accéder à toutes les fonctionnalités d’Excel, y compris la fenêtre VBE, pendant l’affichage du formulaire. Ceci est important d’un point de vue contrôle du comportement de l’utilisateur.

Fermer un Formulaire

Quelle que soit la qualité de votre code pour forcer l’utilisateur à suivre une certaine voie, il peut facilement la contourner en cliquant sur le « X » dans le coin supérieur droit du formulaire.

Vous pouvez empêcher cela en modifiant l’évènement « QueryClose » du formulaire

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Cancel = True
MsgBox "Cette action est désactivée"
End Sub

L’évènement ‘QueryClose’ est déclenché lorsque l’utilisateur clique sur la croix du formulaire. Ce code annule l’action, de sorte que l’utilisateur est obligé d’utiliser le bouton « Quitter » et donc assurer l’exécution du code que vous avez placé derrière celui-ci.

Activer et Désactiver les Contrôles

Tous les contrôles de votre formulaire ont une propriété appelée « Enabled » qui est définie sur True ou False. Si la valeur est False, le contrôle est grisé. Il peut ainsi être vu mais ne peut pas être utilisé.

Il existe également une propriété appelée « Visible » qui, elle aussi, est définie sur True ou False.

Vous pouvez écrire du code pour rendre un certain contrôle inutilisable ou pour le rendre totalement invisible pour l’utilisateur. À l’aide d’une instruction « If », vous pouvez choisir les circonstances dans lesquelles ces actions se produisent.

Par exemple, vous pouvez désactiver le bouton « Quitter » dans un premier temps, jusqu’à ce que l’utilisateur ait entré une valeur dans le TextBox1 (nom).

Private Sub UserForm_Initialize()
CommandButton1.Enabled = False
End Sub
Private Sub TextBox1_Change()
if Len(TextBox1.Value) > 0 Then
    CommandButton1.Enabled = True
Else
    CommandButton1.Enabled = False
End If
End Sub

Ce code utilise l’évènement « Initialize » du formulaire pour désactiver le bouton de sortie (bouton de commande 1) lorsque le formulaire apparaît pour la première fois, puis utilise l’évènement « Change » de la boîte de texte 1 (nom) pour activer le bouton de sortie si quelque chose a été saisi ou le désactiver si la boîte est vide.

L’événement « Change » est déclenché chaque fois qu’un nouveau caractère est saisi ou supprimé de la zone de texte. Si l’utilisateur tente de saisir du texte pour activer le bouton, puis efface tout le texte, le bouton sera instantanément désactivé

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA