Création de formulaires utilisateur VBA

Formulaires utilisateur VBA

Le Userform est une partie très importante de la programmation en VBA. Il vous permet de créer une interface utilisateur 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 fait sur votre classeur.

Vous pouvez, bien sûr, utiliser des cellules de feuille de calcul pour accepter les paramètres de l'utilisateur, mais le formulaire utilisateur produit une bien meilleure expérience utilisateur.

En élargissant la hauteur et la largeur de votre formulaire utilisateur à la taille de la fenêtre Excel, vous pouvez faire ressembler votre application à une application Windows normale, l'utilisateur ignorant totalement qu'il utilise Excel comme hôte.

Tous les contrôles normaux de Windows, tels que les listes déroulantes, les zones de liste, les cases à cocher sont à votre disposition. Vous disposez également d'une vaste gamme de méthodes, d'événements et de propriétés à utiliser pour améliorer l'expérience 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 sous forme de plusieurs formulaires intégrés pouvant être utilisés pour communiquer avec l'utilisateur.

Messagerie

C'est la forme la plus couramment utilisée en VBA. Il affiche simplement un message texte, informant éventuellement un utilisateur qu'il a entré une entrée non valide ou qu'un processus VBA a fini de s'exécuter. Dans leur forme la plus simple, ils affichent une chaîne de texte, mais vous pouvez également ajouter une icône telle qu'une question ou un point d'exclamation et donner un titre différent à la boîte de message.

Ceci est un exemple de base. Il n'y a qu'un seul bouton sur lequel cliquer et la barre de titre indique "Microsoft Excel"

Le code pour produire ceci est très simple :

123 Sous TestMsgBox()MsgBox "Ce processus est terminé"Fin du sous-marin

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

123456789 Sous TestMsgBox()Dim Ret comme varianteRet = MsgBox("Êtes-vous sûr ?", vbOuiNon ou vbQuestion, "Ma candidature")Si Ret = vbOui Alors'Votre processus iciAutreQuitter le sousFin siFin du sous-marin

Ce code ajoute un bouton "Oui" et "Non" et 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 « Ou »

De plus, lorsque vous renvoyez une valeur à partir d'une boîte de message, la variable de retour doit être définie en tant que variant ou vbMsgBoxResult, et l'instruction de boîte de message doit utiliser des crochets,

Zone de saisie

Il existe une boîte de saisie très simple intégrée à VBA, bien qu'elle soit assez restrictive dans ce que vous pouvez en faire. Si vous le pouvez, il est préférable de concevoir un formulaire utilisateur personnalisé

12345 Sous-TestInputBox()Dim Ret As StringRet = InputBox("Veuillez entrer votre nom", "Entrez le nom")MsgBox RetFin du sous-marin

Vous pouvez également ajouter une valeur par défaut pour l'entrée dans les paramètres.

Obtenir le nom de fichier ouvert

Cela vous permet d'utiliser la boîte de dialogue de fichier Windows dans votre code VBA. Il semble très impressionnant pour l'utilisateur lorsqu'il est en cours d'exécution, mais il est très simple à intégrer et vous obtenez automatiquement toutes les fonctionnalités de dialogue de fichier.

Le code restreint l'utilisateur à voir uniquement les fichiers Excel. Malheureusement, ils pourraient saisir un nom de fichier non Excel dans la zone Nom de fichier et cliquer sur le bouton Ouvrir. Vous aurez donc besoin de code pour vous assurer qu'un fichier Excel a été sélectionné.

Utilisez la commande 'ChDir' pour modifier le répertoire par défaut selon vos propres besoins avant d'afficher la boîte de dialogue de fichier

Notez l'utilisation de caractères génériques dans le paramètre FileFilter. Les fichiers Excel à afficher peuvent être antérieurs à 2007, avoir des macros ou être binaires, le filtre est donc « .xls* ».

123456 Sub TestFileDialog()Dim MyFile As StringChDir "C:\temp"MonFichier = Application.GetOpenFilename("Fichiers Excel (*.xls*),*.xls*", , "Sélectionnez un fichier")MsgBox MonFichierFin du sous-marin

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

12345678 Sub TestFileDialog()Dim MyFile comme varianteChDir "C:\temp"MonFichier = Application.GetOpenFilename("Fichiers Excel (*.xls*),*.xls*", , "Sélectionnez un fichier", , True)Pour chaque f dans MyFileMsgBox fSuivant fFin du sous-marin

L'utilisateur maintient la touche Maj enfoncée dans la boîte de dialogue de fichier pour sélectionner plusieurs fichiers.

La boucle For Each affiche le chemin complet et le nom de chaque fichier sélectionné

Boîtes de dialogue par défaut d'Excel

Dans Excel VBA, il existe une collection 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 ou 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 d'afficher la boîte de dialogue « Imprimer » à partir de VBA :

123 Sous-TestPrintDialog()Application.Dialogs(xlDialogPrint).AfficherFin du sous-marin

Lorsque vous ouvrez les crochets dans la collection Dialogs, vous verrez une liste d'un grand nombre de constantes pour les boîtes de dialogue intégrées. Cela vaut la peine 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 Visual Basic Editor (VBE)

Pour ce faire, sélectionnez Insérer | UserForm dans la barre de menus VBE.

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

Le formulaire lui-même (indiqué par « UserForm1 ») semble assez petit, mais vous pouvez utiliser les poignées qui l'entourent pour l'agrandir ou le réduire encore plus en faisant glisser les poignées avec votre curseur.

Il y a une fenêtre de propriétés dans le coin inférieur gauche de l'écran. Comme l'accent est mis directement sur le formulaire lui-même, il contient toutes les propriétés du formulaire spécifiques à ce formulaire.

Notez que lorsque vous commencez à ajouter des contrôles tels que des zones de liste déroulante 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é « Nom » est le nom utilisé pour définir votre objet de formulaire dans le code VBA. Vous voudrez peut-être utiliser quelque chose de plus significatif pour le nom de l'objet, de sorte que lorsque vous révisez votre code, il soit évident quelle forme est utilisée.

La propriété « Nom » se reflétera également dans la fenêtre « Explorateur de projet » dans le coin supérieur gauche de l'écran

Vous voudrez modifier la barre de titre de votre formulaire en quelque chose de différent de "UserForm1", et vous pouvez le faire en tapant votre nouveau texte 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 ex. un logo d'entreprise, modifiez la position à l'aide de « Gauche » et « Haut », modifiez la taille à l'aide de « Hauteur » et « Largeur », modifiez le pointeur de la souris et bien d'autres

Toutes ces propriétés peuvent également être modifiées par programme pour tout contrôle que vous avez ajouté à votre formulaire. Par exemple, un utilisateur peut sélectionner à partir d'un contrôle de zone de liste, 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 contextuelle apparaît. Si vous cliquez n'importe où ailleurs, par ex. le volet des propriétés, il disparaîtra, mais réapparaîtra lorsque vous cliquerez sur le formulaire.

La boîte à outils fournit la véritable mécanique de la conception du formulaire. Cela vous permet d'ajouter les contrôles Windows normaux que les utilisateurs connaissent à votre formulaire.

Vous aurez remarqué que sur le formulaire, il y a un réseau de points. Il s'agit d'un « snapgrid » de sorte que lorsque vous ajoutez un contrôle au formulaire, il alignera automatiquement la position sur les lignes et les colonnes de points. Cela aide énormément à aligner vos contrôles afin que vous n'obteniez pas une apparence irrégulière des contrôles

Si vous cliquez sur un contrôle, puis décidez de ne pas l'utiliser, cliquer sur l'icône « Flèche » dans le coin supérieur gauche de la boîte à outils ramènera votre curseur à la normale.

Vous pouvez ajouter des contrôles supplémentaires à la boîte à outils en utilisant Outils | Contrôles supplémentaires dans le menu VBE. Il en existe un nombre considérable, mais selon vos versions de Windows et d'Excel, ils ne fonctionnent pas toujours, une expérimentation est donc souvent nécessaire.

En outre, vos utilisateurs peuvent ne pas avoir accès à certains de ces contrôles supplémentaires ou exécuter d'anciennes versions de Windows et Excel, ce qui peut entraîner des problèmes. Dans les grandes organisations, en particulier si elles sont mondiales, il n'existe pas de PC standard sur lequel vous pouvez compter !

Ajouter un bouton de sortie à votre formulaire

Un bouton de commande est simple à ajouter au formulaire. Cela ressemble aux 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 du bouton de commande dans la boîte à outils. Il s'agit de la deuxième icône à partir de la gauche sur la rangée d'icônes du bas. Voir l'image ci-dessus. Il y a les lettres "ab" dessus.

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 transformera en un curseur «croix» et vous pourrez positionner et dimensionner votre bouton

Si vous faites glisser le contrôle vers le formulaire, vous obtiendrez la taille par défaut du bouton. Déplacer le curseur sur le formulaire vous permet de modifier la taille du bouton en faisant glisser le curseur « croix » sur votre formulaire

Votre formulaire ressemblera maintenant à ceci :

Le bouton aura un texte par défaut comme légende, mais vous voudrez le modifier selon vos propres besoins. Vous pouvez cliquer sur le texte à l'intérieur du bouton (« CommandButton1 ») et cela vous permettra de modifier directement la légende.

Vous pouvez également le modifier dans la fenêtre des propriétés (en bas à gauche de l'écran). Vous verrez une propriété appelée « Légende » et vous pouvez modifier la valeur pour cela. Remplacez-le par « Quitter »

Comme pour les propriétés du formulaire, la propriété « Nom » 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 l'entrer dans la propriété « Nom ».

Vous pouvez repositionner le bouton en le faisant glisser sur le formulaire, et vous pouvez le redimensionner en cliquant sur les poignées des boutons (cases carrées blanches) et en faisant glisser les poignées pour l'agrandir ou la 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 afficher votre formulaire dans Excel en cliquant sur le triangle vert dans la barre d'outils VBE, ou en appuyant sur F5

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

123 Sous ShowForm()UserForm1.ShowFin du sous-marin

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. Vous devez l'écrire vous-même ! Tout ce qui peut arriver 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

Cela vous amènera à la fenêtre de code VBA normale et affichera l'événement par défaut du clic.

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

Notez que la fenêtre de code a deux listes déroulantes en haut. Le premier vous permet de sélectionner vos contrôles de formulaire et le second affiche tous les événements disponibles pour que vous puissiez ajouter du code. L'événement évident pour un bouton est l'événement « Clic », mais il y en a d'autres tels que « Double-clic » ou « Mouse Move »

Lorsque vous exécutez votre formulaire maintenant, le bouton fait quelque chose. Le formulaire disparaît et une boîte de message s'affiche confirmant que le formulaire est fermé

Vous pouvez bien sûr agrandir le code de sortie. Vous pouvez souhaiter afficher un autre formulaire, ou prendre des mesures sur les paramètres que l'utilisateur a saisis sur votre formulaire

Ajout d'un contrôle d'étiquette à un formulaire

Les contrôles d'étiquette servent à demander à l'utilisateur quel type de données il doit saisir dans un contrôle du formulaire, par ex. zone de texte, liste déroulante, etc. Une étiquette n'a pas de bordures par défaut, mais celles-ci peuvent être ajoutées via la fenêtre des propriétés si nécessaire.

En tant que contrôle, ils ne sont lus que par l'utilisateur et sont simplement un moyen de mettre du texte sur le formulaire, qu'il s'agisse d'un titre en gras ou d'une instruction indiquant ce qu'il faut saisir ou choisir.

Pour ajouter une étiquette, cliquez sur l'icône « A » dans la boîte à outils (rangée du haut, 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.

À l'aide de la propriété « Légende » dans la fenêtre des propriétés, ou en cliquant sur le contrôle d'étiquette, vous pouvez saisir le texte du contrôle d'étiquette.

Notez que le texte s'ajustera en fonction de la taille du contrôle d'étiquette, et si la chaîne de texte est trop longue, elle n'apparaîtra pas complètement sur le formulaire, vous devez donc faire attention à la taille du 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 différentes couleurs, polices, style de dos, par ex. s'il superpose une image et que vous voulez qu'elle soit transparente

Aucun code n'a besoin d'être créé pour un contrôle d'étiquette. L'objectif principal est d'ajouter du texte au formulaire afin que l'utilisateur puisse voir comment fonctionnent tous 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 en entrant 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 du haut, 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 de la saisie 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 pour que l'utilisateur tape quelque chose dans

À l'aide de 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. Une énorme flexibilité est disponible

Une propriété très importante pour une zone de texte est la propriété 'MultiLine'. Si vous souhaitez que l'utilisateur entre une grande quantité de texte dans le contrôle de texte, par ex. 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 sortira de la zone de texte. Il ne s'enroulera pas dans la boîte.

Il n'y a pas de fenêtre contextuelle lorsque vous cliquez avec le bouton droit sur votre zone de texte lorsqu'elle est en cours d'exécution, mais CTRL + V fonctionnera pour Coller et CTRL + C fonctionnera pour Couper, si l'utilisateur souhaite couper et coller du texte vers et depuis d'autres applications

Encore une fois, vous devez écrire votre propre code pour traiter le texte que l'utilisateur a tapé. Vous souhaiterez peut-être le transférer dans une cellule d'une feuille de calcul.

Vous pouvez ajouter ce code dans l'événement « Modifier » pour la zone de texte

123 Private Sub TextBox1_Change()Sheets("Sheet1").Range("A1").Value = TextBox1.ValueFin du sous-marin

Vous pouvez également vouloir mettre un code de validation pour vérifier que l'utilisateur n'entre pas de déchets qui auront des effets désastreux sur votre application

L'événement de changement n'est pas bon pour cela car il est appelé chaque fois que l'utilisateur tape un nouveau caractère. L'utilisateur peut commencer à taper une chaîne de texte et constater instantanément qu'il a enfreint vos règles de validation avant d'avoir terminé un texte valide.

Vous utilisez l'événement « Quitter ». Ceci est déclenché lorsque l'utilisateur déplace le focus vers un autre contrôle du formulaire, ce qui signifie que l'utilisateur n'entre plus de données.

123456 Private Sub TextBox1_Exit (ByVal Cancel As MSForms.ReturnBoolean)Si IsNull(TextBox1.Value) Ou Len(TextBox1.Value) < 4 ThenMsgBox "Le nom n'est pas valide", vbCriticalTextBox1.SetFocusFin siFin du sous-marin

Lorsque l'utilisateur clique sur un autre contrôle du formulaire, ce code teste soit une valeur nulle dans la zone de texte, soit moins de 4 caractères. Si le test est vrai, une boîte de message avec une icône critique s'affiche pour informer l'utilisateur que le nom n'est pas valide et le focus est ramené à la zone de texte incriminée pour que l'utilisateur corrige.

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 l'entrée

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 un événement « Initialize ». Cependant, comme le formulaire est également affiché à ce stade, il déclenche également un événement « Activer ». Dès lors, chaque fois que le formulaire apparaît à l'aide de la méthode « Afficher » ou qu'il apparaît dans le cadre d'une hiérarchie de formulaires, l'événement « Activer » est déclenché, mais pas l'événement « Initialiser »

L'événement « Initialiser » ne se produit qu'une seule fois, mais l'événement « Activer » peut se produire plusieurs fois

Sur votre formulaire, vous souhaiterez peut-être définir des valeurs par défaut à partir de la feuille de calcul dans les contrôles de saisie, par exemple. des zones de texte, afin qu'elles apparaissent à 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 en cours d'exécution

12345678 Private Sub UserForm_Initialize()TextBox1.Value = Sheets("Sheet1").Range("A1").ValueSi TextBox1.Value="" AlorsTextBox1.Visible=FauxAutreTextBox1.Visible=VraiFin siFin du sous-marin

Vous pouvez trouver l'événement « Initialize » dans la deuxième liste déroulante de la fenêtre de code et le nom du formulaire utilisateur dans la première liste déroulante.

Ce code utilisera la valeur de la cellule A1 sur « Sheet1 » comme valeur par défaut dans la zone de texte créée plus tôt dans cet article. Lorsque le formulaire apparaît pour la première fois, la valeur par défaut apparaît. L'utilisateur peut alors écraser la valeur par défaut et celle-ci sera conservée. Si CellA1 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 :

1 TextBox1.Value = "John Smith"

Vous pouvez également vous assurer que les valeurs que l'utilisateur a saisies réapparaissent chaque fois que l'utilisateur lance 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 « Quitter » sur un contrôle et les rétablir à l'aide de l'événement « Activer » sur le formulaire

123 Private Sub TextBox1_Exit (ByVal Cancel as MSForms.ReturnBoolean)Sheets("Sheet1").Range("A10").Value = TextBox1.ValueFin du sous-marin
123 Private Sub UserForm_Activate()TextBox1.Value = Sheets("Sheet1").Range("A10").ValueFin du sous-marin

Ce code rendra les valeurs de l'utilisateur persistantes et garantira également qu'elles sont enregistrées avec le reste du classeur

Enregistrement de votre demande et de 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 pendant leur affichage seront perdues.

Il est important d'écrire du code de sorte que lorsque l'utilisateur quitte le classeur ou le formulaire, les valeurs soient réécrites dans les cellules du classeur et ainsi conservées.

Formes modales et non modales

Le formulaire lui-même a une propriété « Afficher le modal ». Ceci est défini par défaut sur True, mais il peut être modifié 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 afficher 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 du point de vue du contrôle du comportement des utilisateurs

Fermer un formulaire

Quelle que soit la manière dont vous écrivez votre code pour forcer l'utilisateur à emprunter un certain chemin, il peut facilement le contourner en cliquant sur le X « Fermer » dans le coin supérieur droit du formulaire

Vous pouvez empêcher cela en modifiant l'événement 'QueryClose' du formulaire

1234 Private Sub UserForm_QueryClose (Annuler en tant qu'entier, CloseMode en tant qu'entier)Annuler = VraiMsgBox "Cette action est désactivée"Fin du sous-marin

L'événement 'QueryClose' est déclenché lorsque l'utilisateur clique sur le X 'Close' du formulaire. Ce code annule l'action, de sorte que l'utilisateur est obligé d'utiliser votre bouton « Quitter » et le code que vous avez derrière.

Activation et désactivation des contrôles

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

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

Vous pouvez écrire du code soit pour rendre un certain contrôle inutilisable, soit pour le rendre totalement invisible pour l'utilisateur. À l'aide d'une déclaration « Si », vous pouvez choisir les circonstances dans lesquelles vous devez le faire

Par exemple, vous pouvez désactiver le bouton « Quitter » initialement, jusqu'à ce que l'utilisateur ait entré une valeur dans la zone de texte1 (nom)

123 Private Sub UserForm_Initialize()CommandButton1.Enabled = FalseFin du sous-marin
1234567 Private Sub TextBox1_Change()Si Len(TextBox1.Value) > 0 AlorsCommandButton1.Enabled = TrueAutreCommandButton1.Enabled = FalseFin siFin du sous-marin

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' sur TextBox1 (nom) pour activer le bouton Quitter si quelque chose a été tapé ou désactivé le si la case est vide.

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

wave wave wave wave wave