Les boîtes de dialogue

Le contrôle ComboBox.Retour au menu Contrôles divers

        Allie les caractéristiques d'un contrôle ListBox et d'un contrôle TextBox.
        L'utilisateur peut entrer une nouvelle valeur, comme dans un contrôle TextBox
        ou bien sélectionner une valeur existante comme dans un contrôle ListBox.
        La liste d'un contrôle ComboBox se compose de lignes de données.
        La propriété par défaut d'un contrôle ComboBox est la propriété Value.

        Le principe de fonctionnement de ce contrôle, se décompose comme suit :

        1 - Remplir le contrôle ComboBox avec des données.
        2 - Choisir une de ces données en la sélectionnant.
        3 - Récupérer la donnée sélectionnée à la fermeture du formulaire.

Remplir le contrôle Combobox avec des données

        Exemple : Afficher une liste de Domaines viticoles.

Je vous donne 4 méthodes pour remplir cette ComboBox (en fonction de votre besoin)

    La propriété (name) du contrôle ComboBox est cboComboBox

        Méthode 1 : Les données sont dans une feuille de calcul (Feuil1).

 
Private Sub UserForm_Initialize()
      Me.cboComboBox.RowSource = "Feuil1!A1:A" & Sheets("Feuil1").Cells(1, 1).End(xlDown).Row
End Sub

        Méthode 2 : Les données sont figées et vous les ajoutez grâce à la méthode AddItem.

 
Private Sub UserForm_Initialize()
      With Me.cboComboBox
            cboComboBox.AddItem "Domaine Alexis Rouge"
            cboComboBox.AddItem "Domaine du Grand Crès Blanc"
            cboComboBox.AddItem "Domaine du Grand Crès Muscat"
            cboComboBox.AddItem "Domaine du Grand Crès Rosé"
            cboComboBox.AddItem "Domaine du Grand Crès Rouge"
      End With
End Sub

        Méthode 3 : Les données correspondent à la liste des mois (Janvier, Février, ..., Décembre).
                         On va utiliser la méthode AddItem avec une variable (i).

 
Private Sub UserForm_Initialize()
      Dim Mois(1 To 12) As String
      Dim i As Integer
      ' Création d'un tableau des noms de mois
      For i = 1 To 12
            Mois(i) = Format(DateSerial(1, i, 1), "mmmm")
            Me.cboComboBox.AddItem Mois(i)
      Next i
End Sub

        Méthode 4 : Les données sont figées et vous les ajouter grâce _
                      à la fonction VBA.Array(arglist).

 
Private Sub UserForm_Initialize()
      Dim vaDepartment As Variant
      Dim stDeptList() As String
      Dim i As Integer
      vaDepartement = VBA.Array("Ain", "Aisne", "Allier","Alpes-de-Hte-Provence", _
            "Alpes-Hautes", "Alpes-Maritimes", "Ardennes")
      ReDim stDeptList (0 To UBound(vaDepartement))
      For i = 0 To UBound(vaDepartement)
            stDeptList(i) = vaDepartement(i)
      Next i
      cboCombobox.List = stDeptList
End Sub

Sélectionner une données dans la liste

 
Il suffit simplement de sélectionner avec la souris la donnée désirée.

Récupérer l'item sélectionné

 
Private Sub cmdOK_Click()
      MsgBox "L'item sélectionné est : " & cboComboBox.Value, vbInformation
      Unload Me
End Sub

Récupérer une nouvelle valeur saisie

 
Il est possible dans le cas où les données sont issues d'une feuille Excel, d'inscrire cette
nouvelle valeur dans la feuille Excel.
Lorsque l'on ajoute une nouvelle donnée, celle-ci se trouve en position ListIndex = -1.
On utilise pour cela un test sur la propriété ListIndex.
En régle génèrale, cette propriété ListIndex à la valeur -1 à l'ouveture du formulaire.
Si on sélectionne la première donnée de la liste, la valeur ListIndex est égale à 0, et ainsi de suite.

Private Sub OK_Click()
      Me.Hide
      If Me.cboComboBox.ListIndex = -1 Then _
            Sheets("Feuil1").Cells(1, 1).End(xlDown).Offset(1, 0).Value = Me.cboCombobox.Value
End Sub

Retour au début de document

Retour au début du document