Créer des infobulles (tooltips) dans un UserForm, Excel VBA
Pour créer des infobulles (tooltips) dans un UserForm en utilisant VBA Excel, vous pouvez utiliser la propriété ControlTipText
des contrôles du formulaire (comme les boutons, les zones de texte, les comboboxes, etc.). Cela permet d’afficher une petite description lorsque l’utilisateur survole un contrôle, fournissant ainsi des informations utiles ou des astuces supplémentaires.
Voici un guide détaillé avec le code pour implémenter des infobulles dans votre UserForm :
Étapes pour créer des infobulles dans un UserForm
1. Créer et concevoir le UserForm :
- Ouvrez l’éditeur VBA dans Excel (Alt + F11).
- Créez un nouveau UserForm en cliquant sur
Insertion > UserForm
. - Ajoutez des contrôles (comme des TextBox, des CommandButton, des ComboBox) dans le UserForm.
2. Définir les infobulles avec la propriété ControlTipText
:
- Chaque contrôle dans un UserForm a une propriété
ControlTipText
où vous pouvez spécifier le texte de l’infobulle. - Cette infobulle s’affichera lorsque l’utilisateur survolera le contrôle.
Exemple de code pour ajouter des infobulles aux contrôles
Private Sub UserForm_Initialize() ' Définir les infobulles pour les contrôles ' Infobulle pour une TextBox TextBox1.ControlTipText = "Entrez votre nom ici." ' Infobulle pour un CommandButton CommandButton1.ControlTipText = "Cliquez pour soumettre le formulaire." ' Infobulle pour une ComboBox ComboBox1.ControlTipText = "Sélectionnez une option dans la liste déroulante." ' Infobulle pour une CheckBox CheckBox1.ControlTipText = "Cochez cette case si vous êtes d'accord avec les termes." ' Infobulle pour un Label Label1.ControlTipText = "Ce label affiche les instructions." End Sub
Explication du code :
- UserForm_Initialize : Cet événement est exécuté lorsque le UserForm est initialisé. Il est utilisé pour configurer les propriétés initiales des contrôles du formulaire.
- Propriété
ControlTipText
: - La propriété
ControlTipText
contient le texte qui sera affiché comme infobulle. - Dans cet exemple,
TextBox1.ControlTipText
est défini sur le message « Entrez votre nom ici » qui sera affiché lorsque l’utilisateur survoleraTextBox1
. - Vous pouvez faire de même pour d’autres contrôles comme des boutons, des comboboxes, etc.
Exemple avancé avec des infobulles dynamiques
Si vous souhaitez avoir un contrôle plus dynamique sur les infobulles, vous pouvez changer le texte de l’infobulle en fonction de certaines conditions, comme la sélection d’une option dans une ComboBox ou la valeur entrée dans une TextBox.
Par exemple, si vous souhaitez afficher une infobulle différente en fonction de ce que l’utilisateur sélectionne dans une ComboBox :
Private Sub ComboBox1_Change() If ComboBox1.Value = "Option 1" Then ComboBox1.ControlTipText = "Vous avez sélectionné l'Option 1." ElseIf ComboBox1.Value = "Option 2" Then ComboBox1.ControlTipText = "Vous avez sélectionné l'Option 2." Else ComboBox1.ControlTipText = "Veuillez sélectionner une option." End If End Sub
Améliorer les infobulles avec un comportement similaire à des ToolTips
Excel VBA ne prend pas en charge directement des infobulles complexes comme celles que l’on trouve sur les pages web (par exemple, avec des couleurs, des polices différentes, etc.), mais vous pouvez simuler ce comportement en créant un formulaire personnalisé pour les infobulles.
Exemple : Créer un formulaire d’infobulle personnalisé
Dim TooltipForm As Object Private Sub UserForm_Initialize() ' Créer une nouvelle instance de TooltipForm Set TooltipForm = New UserForm TooltipForm.Visible = False ' Masquer au départ End Sub Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ShowTooltip "Entrez votre nom ici.", TextBox1 End Sub Private Sub ShowTooltip(TooltipText As String, Control As Object) ' Positionner le TooltipForm près du contrôle TooltipForm.Caption = TooltipText TooltipForm.Top = Control.Top + Control.Height + 5 TooltipForm.Left = Control.Left TooltipForm.Visible = True End Sub
Explication du code pour un tooltip personnalisé :
- TooltipForm : Il s’agit d’un nouveau UserForm qui agira comme un tooltip personnalisé. Il est initialement caché.
- TextBox1_MouseMove : Cet événement est déclenché lorsque l’utilisateur déplace la souris sur
TextBox1
. Il appelle la procédureShowTooltip
pour afficher l’infobulle personnalisée. - ShowTooltip : Cette procédure positionne le
TooltipForm
par rapport au contrôle (dans ce cas,TextBox1
) et l’affiche avec le texte de l’infobulle souhaité.
Considérations :
- Visibilité : L’infobulle doit être visible uniquement lorsque cela est nécessaire. Pour une infobulle personnalisée, vous devez la masquer lorsque l’utilisateur éloigne la souris du contrôle.
- Performance : Bien que la propriété
ControlTipText
soit simple et fonctionne bien dans la plupart des cas, l’utilisation d’un formulaire personnalisé pour les infobulles peut offrir plus de flexibilité mais peut nécessiter du code supplémentaire pour gérer l’affichage et la disparition au bon moment.
Avec cette méthode, vous pouvez créer des formulaires plus interactifs et conviviaux, fournissant à l’utilisateur des astuces utiles lorsque nécessaire.