Dim Plage As Range
Private Sub UserForm_Initialize() ' [1] INITIALISE USERFORM2 (Départ)
Dim MonDico As Object, DerL As Long
With Worksheets("Données")
DerL = .Range("D65536").End(xlUp).Row
.Range("A1:H" & DerL).Sort Key1:=Range("D2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set Plage = .Range("D2:D" & DerL)
End With
Set MonDico = CreateObject("Scripting.Dictionary")
For Each Cel In Plage
If Not MonDico.Exists(Cel.Value) Then MonDico.Add Cel.Value, Cel.Value
Next
ComboBox1.List = MonDico.items
With ListBox1
.Clear
.ColumnCount = 8
.ColumnWidths = "60;60;60;60;60;60;60;60"
.ColumnHeads = True
End With
End Sub
Private Sub ComboBox1_Change()
Dim Cel As Range
Dim X As Long, U As Long, DerLig As Long
DerLig = Range("A" & Cells.Rows.Count).End(xlUp).Row
Me.ListBox1.Clear
For Each Cel In Plage
If Cel.Value = Val(Me.ComboBox1.Value) Then
X = Cel.Row
ListBox1.AddItem Range("A" & X).Value
ListBox1.Column(1, U) = Range("B" & X).Value
ListBox1.Column(2, U) = Range("C" & X).Value
ListBox1.Column(3, U) = Range("D" & X).Value
ListBox1.Column(4, U) = Range("E" & X).Value
ListBox1.Column(5, U) = Range("F" & X).Value
ListBox1.Column(6, U) = Range("G" & X).Value
ListBox1.Column(7, U) = Range("H" & X).Text
U = U + 1
End If
Next Cel
End Sub