Filtre Listbox avec Combobox

Bonjour à tous,

Depuis quelques temps je travaille sur les Userform pour gérer des bases de données.

J'ai un nouveau besoin: filtrer une base de données dans la listbox avec un combobox.

Ca dépasse mes connaissances, donc je trouve des codes sur des forums et j'adapte mais ça ne se passe pas comme prévu.

La combobox ne se charge pas et la listbox non plus.

Je vous demande donc un coup de main pour trouver le problème afin de pouvoir filtrer la listbox avec la combobox

Merci.

Private Sub cborefcons_Change()
Dim LastLig As Long
Dim Code As String
Dim c As Range

Application.ScreenUpdating = False
With Me.lstcontr
    .Clear
    .Visible = False
End With

Code = Me.cborefcons.Value
If Me.cborefcons.ListIndex > -1 Then
    With Worksheets("Contrats")
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Range("A1:A" & LastLig).AutoFilter Field:=1, Criteria1:=Code
        For Each c In .Range("B2:B" & LastLig).SpecialCells(xlCellTypeVisible)
            With Me.lstcontr
                .AddItem c
                .List(.ListCount - 1, 1) = c.Offset(0, 1)
                .List(.ListCount - 1, 2) = c.Offset(0, 2)
            End With
        Next c
        Me.lstcontr.Visible = True
        .AutoFilterMode = False
    End With
End If
End Sub

Private Sub frmsaisiecontrat_Initialize()
Dim LastLig As Long, j As Long
Dim plg As Range
Dim cw

Set plg = Range("B2:K" & Range("K65536").End(xlUp).Row)
plg.Columns.AutoFit

With cborefcons
    .ColumnCount = 1
    .Visible = False
End With

With lstcontr
    cw = ""
    .ColumnCount = plg.Columns.Count
        For I = 1 To .ColumnCount
          cw = cw & plg.Columns(I).Width + 10 & ";"
       Next
    .ColumnWidths = cw
    .Visible = False
End With

Application.ScreenUpdating = False
With Worksheets("Contrats")
    LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
    Me.cborefcons.Clear
    For j = 2 To LastLig
        If .Range("A" & j) <> "" Then
            Me.cborefcons = .Range("A" & j)
            If Me.cborefcons.ListIndex = -1 Then Me.cborefcons.AddItem .Range("A" & j)
        End If
    Next j
End With

With Me.cborefcons
    .Visible = True
    .ListIndex = -1
End With
End Sub
4mac.xlsm (33.03 Ko)

Bonjour

même si l'on change le nom de son userform, initialize reste sur userform et non sur frmsaisiecontrat

'Private Sub frmsaisiecontrat_Initialize()

Private Sub UserForm_Initialize()

25mac.xlsm (37.58 Ko)
Rechercher des sujets similaires à "filtre listbox combobox"