Médiaforma

All posts in VBAExcel

Les OptionButton (boutons radio) sont généralement utilisés lorsque l’utilisateur peut effectuer un choix et un seul parmi plusieurs. Ils sont alors placés dans un cadre (Frame) pour améliorer la présentation.

La propriété Value du OptionButton vaut :

  • True lorsque l’OptionButton est sélectionné.
  • False lorsque l’OptionButton est désélectionné.

Pour insérer un OptionButton, glissez-déposez un contrôle OptionButton sur la boîte de dialogue personnalisée :

Pour relier deux ou plusieurs OptionButton de telle sorte qu’un seul d’entre eux soit sélectionné à la fois, affectez la même valeur à la propriété GroupName de ces contrôles.

La procédure OptionButton_Change() peut être utilisée pour réagir aux changements d’état d’un OptionButton. Supposons par exemple que deux OptionButton de même GroupName aient été insérés dans un contrôle Frame.

Pour qu’un message s’affiche dans le contrôle Label2 lorsque l’utilisateur sélectionne Oui ou Non, vous utiliserez ce code :

Private Sub OptionButton1_Change()

  Label2.Caption = "Parfait !"

End Sub

Private Sub OptionButton2_Change()

  Label2.Caption = "Cela ne saurait tarder"

End Sub

Les CheckBox (cases à cocher) sont utilisées lorsque l’utilisateur peut sélectionner une ou plusieurs options dans une liste d’options.

La propriété Value du CheckBox vaut :

  • True lorsque le CheckBox est coché.
  • False lorsque le CheckBox est décoché.

Pour insérer un CheckBox, glissez-déposez un contrôle CheckBox sur la boîte de dialogue personnalisée :

La procédure CheckBox_Change() peut être utilisée pour réagir aux changements d’état d’un Checkbox. Supposons par exemple que le CheckBox CheckBox1 ait été inséré dans une boîte de dialogue personnalisée. Vous pourriez écrire la procédure CheckBox1_Change() pour modifier l’étiquette du CheckBox en fonction de son état (coché ou décoché) :

Private Sub CheckBox1_Change()

  If CheckBox1.Value = True Then

    CheckBox1.Caption = "Case cochée"

  Else

    CheckBox1.Caption = "Case décochée"

  End If

End Sub

Vous pourriez également afficher le texte Case décochée dans l’étiquette du CheckBox à l’ouverture de la boîte de dialogue personnalisée via la procédure UserForm.Activate() :

Private Sub UserForm_Activate()

  CheckBox1.Caption = "Case décochée"

End Sub

Vous utiliserez des contrôles ListBox pour insérer des zones de liste dans une boîte de dialogue personnalisée. Ces contrôles permettent de choisir un ou plusieurs éléments dans une liste de choix.

Pour insérer un ListBox, glissez-déposez un contrôle ListBox sur la boîte de dialogue personnalisée :

Le ListBox peut être rempli en faisant référence à un bloc de cellules d’une feuille de calcul ou à l’aide de code VBA.

Remplissage avec un bloc de cellules

Vous pouvez remplir un ListBox avec un bloc de cellules dans une feuille de calcul. Pour cela, renseignez la propriété RowSource du contrôle ListBox :

En supposant que les cellules A1 à A10 de la feuille Feuil1 contiennent les données suivantes :

Voici le contenu du ListBox :

Vous voulez affecter une valeur par défaut à la zone de liste ? Rien de plus simple : affectez l’index de cette valeur à la propriété ListIndex du contrôle (la valeur 0 correspond au premier élément de la liste). Cette affectation se fera par exemple dans la procédure UserForm_Activate(). Par exemple, pour choisir Abou Dabi par défaut (la cinquième valeur de la liste), vous utiliserez cette instruction dans la procédure UserForm_Activate() :

Private Sub UserForm_Activate()

  ListBox1.ListIndex = 4

End Sub

Remplissage avec du code VBA

Pour remplir un contrôle ListBox avec du code VBA, vous utiliserez la méthode AddItem. Ici par exemple, on insère les capitales Paris, Amsterdam, Londres, Washington D.C., Abou Dabi, Alger, Ankara, Brasilia, Bucarest et Varsovie dans le contrôle ListBox1 :

Private Sub UserForm_Activate()

    ListBox1.AddItem "Paris"

    ListBox1.AddItem "Amsterdam"

    ListBox1.AddItem "Londres"

    ListBox1.AddItem "Washington D.C."

    ListBox1.AddItem "Abou Dabi"

    ListBox1.AddItem "Alger"

    ListBox1.AddItem "Ankara"

    ListBox1.AddItem "Brasilia"

    ListBox1.AddItem "Bucarest"

    ListBox1.AddItem "Varsovie"

End Sub

Le résultat est le même que précédemment :


Vous utiliserez des contrôles ComboBox pour insérer des listes déroulantes dans une boîte de dialogue personnalisée.

Pour insérer un ComboBox, glissez-déposez un contrôle ComboBox sur la boîte de dialogue personnalisée :

La ComboBox peut être remplie en faisant référence à un bloc de cellules d’une feuille de calcul ou à l’aide de code VBA.

Remplissage avec un bloc de cellules

Pour référencer un bloc de cellules, renseignez la propriété RowSource du contrôle ComboBox :

En supposant que les cellules A2 à A6 de la feuille Feuil2 contiennent les données suivantes :

Voici le contenu du ComboBox :

Vous voulez affecter une valeur par défaut à la liste déroulante ? Rien de plus simple : affectez l’index de cette valeur à la propriété ListIndex du contrôle (la valeur 0 correspond au premier élément de la liste). Cette affectation se fera par exemple dans la procédure UserForm_Activate(). Par exemple, pour choisir Nathalie par défaut (la troisième valeur de la liste), vous utiliserez cette instruction dans la procédure UserForm_Activate() :

Private Sub UserForm_Activate()

  ComboBox1.ListIndex = 2

End Sub

Remplissage avec du code VBA

Pour remplir un contrôle ComboBox avec du code VBA, vous utiliserez la méthode AddItem. Ici par exemple, on insère les prénoms Bertrand, Pierre, Nathalie, Pierric et Liliane dans le contrôle ComboBox1 :

Private Sub UserForm_Initialize()

  ComboBox1.AddItem "Bertrand"

  ComboBox1.AddItem "Pierre"

  ComboBox1.AddItem "Nathalie"

  ComboBox1.AddItem "Pierric"

  ComboBox1.AddItem "Liliane"

End Sub

Le résultat est le même que précédemment :


Vous utiliserez des TextBox pour permettre à l’utilisateur de saisir des informations alphanumériques.

Pour insérer un TextBox, glissez-déposez un contrôle TextBox sur la boîte de dialogue personnalisée :

Tout comme pour un Label, vous pouvez utiliser la fenêtre des propriétés pour modifier les caractéristiques de l’objet TextBox que vous venez d’insérer :

Vous pouvez également utiliser des instructions VBA pour accéder en lecture ou en écriture aux propriétés de l’objet TextBox. Par exemple, pour recopier dans la cellule A1 de la feuille courante la valeur saisie dans la zone de texte TextBox1 à chaque frappe au clavier, vous définirez la procédure évènementielle Textbox1_KeyUp() suivante :

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

  Cells(1, 1).Value = TextBox1.Text

End Sub

Vous utiliserez des labels pour afficher des informations textuelles, comme par exemple des étiquettes devant des zones de texte, des cases à cocher ou des boutons radio.

Pour insérer un Label, glissez-déposez un contrôle Label sur la boîte de dialogue personnalisée :

Au relâchement du bouton gauche de la souris, le Label est inséré dans la boîte de dialogue personnalisée et ses propriétés sont accessibles dans la fenêtre Propriétés. Si nécessaire, utilisez cette fenêtre pour modifier l’allure du Label. Vous utiliserez certainement les propriétés Caption, Font et ForeColor :

Si nécessaire, vous pouvez lire ou modifier les propriétés de l’objet Label une fois la boîte de dialogue personnalisée affichée. Par exemple, pour modifier le texte du label, vous pourriez écrire :

Label1.Caption = "Nouveau texte dans le Label"

Vous pouvez également mettre en place des fonctions événementielles sur un Label. Si vous êtes en affichage Objet, appuyez sur F7 ou lancez la commande Code dans le menu Affichage pour passer en affichage Code. Sélectionnez Label1 dans la première liste déroulante et un évènement dans la seconde. La procédure événementielle est immédiatement créée. A titre d’exemple, le code suivant modifie la couleur du premier label lorsque l’utilisateur clique dessus. Si le texte est noir, il devient rouge. Dans le cas contraire, il devient noir :

Private Sub Label1_Click()

  If Label1.ForeColor = RGB(0, 0, 0) Then

    Label1.ForeColor = RGB(255, 0, 0)

  Else

    Label1.ForeColor = RGB(0, 0, 0)

  End If

End Sub

En sélectionnant Label1 dans la première liste et Activate dans la seconde, vous pouvez choisir la couleur du label à l’ouverture de la boîte de dialogue personnalisée. Ici, noir :

Private Sub UserForm_Activate()

  Label1.ForeColor = RGB(0, 0, 0)

End Sub

Dans les articles à venir, nous allons passer en revue les différents contrôles utilisables dans une boîte de dialogue personnalisée et montrer comment y accéder à l’aide d’instructions VBA.

Avant tout, commencez par afficher la boîte à outils avec la commande Boîte à outils dans le menu Affichage :

Remarque

Si la commande Boîte à outils est grisée dans le menu Affichage, c’est certainement parce que vous êtes en mode d’affichage Code et non Objet. Appuyez simultanément sur les touches Maj et F7 ou lancez la commande Objet dans le menu Affichage. La commande Boîte à outils devrait maintenant être accessible dans le menu Affichage.