Les boîtes de dialogue

Boite de dialogue avec 2 ListBox synchronisées.Retour au menu Contrôles divers

        Sur une idée de Ole P. Erlandsen.

        Cette boîte de dialogue permet en sélectionnant un élément dans la liste de gauche,
         d'afficher les éléments correspondants dans la liste de droite.

        Le Userform (ListeCombinee)

        Le code

        Code lançant l'ouverture du Userform (DoubleListBox)

 

Sub AfficheListBox()
        Load DoubleListBox
        DoubleListBox.Show
        Unload DoubleListBox
End Sub

        Code d'ouverture du formulaire par l'événement Initialize

 
Private Sub UserForm_Initialize()
' La mise à jour des items dans ListBox1 ...
' mettra à jour les items dans la ListBox2
        With Me
                UpdateListBox .ListBox1, -1
        End With
End Sub

        Code sur l'événement Change de la ListBox1
        (Contrôle situé à gauche)

 
Private Sub ListBox1_Change()
' Mise à jour des items dans la ListBox2
        UpdateListBox Me.ListBox2, Me.ListBox1.ListIndex
End Sub

Private Sub UpdateListBox(Parametres As MSForms.ListBox, IndexValue As Integer)
Dim LastInputRow As Integer, ColumnIndex As Integer, InputRange As Range
' Les données commencent à la ligne 3
Const FirstInputRow As Integer = 3
' Détermine depuis quelle colonne on prend la liste des items
        ColumnIndex = IndexValue + 2
' Détermine la dernière ligne de la colonne sélectionnée et la plage correspondante
        LastInputRow = Cells(FirstInputRow, ColumnIndex).End(xlDown).Row
        Set InputRange = ActiveSheet.Range(Cells(FirstInputRow, ColumnIndex), Cells(LastInputRow, ColumnIndex))
        With Parametres
                .ColumnHeads = True ' Affiche les en-têtes de colonne
                .RowSource = InputRange.Address ' Spécifie la source de données
                .ListIndex = 0 ' Sélectionne le premier item
        End With
        Set InputRange = Nothing
End Sub

        Code du bouton valider

       1 / Bouton Valider
 
Private Sub CmdValider_Click()
        Me.Hide
        MsgBox "Dans la catégorie : " & Me.ListBox1.List(Me.ListBox1.ListIndex) & Chr(13) & Chr(13) & _
                "Vous avez choisi : " & Me.ListBox2.List(Me.ListBox2.ListIndex), vbInformation, "Résultat de votre choix :"
End Sub

        La feuille de données

Retour au début de document

Retour au début du document