Private Sub CommandButton1_Click()
UserForm1.Hide
End Sub
Sub MaListe()
Dim derlig&, rg As Range, xcell As Range, liste(), i&
Dim Nom$, Prenom$, present&
derlig = Range("A" & Rows.Count).End(xlUp).Row
If derlig > 2 Then
If derlig = 3 Then
Set rg = Range("a2").Offset(1) ' cas où seule la ligne 3 est affichée
Else
Set rg = Range(Range("a2").Offset(1), Range("a" & derlig)).SpecialCells(xlCellTypeVisible)
End If
ReDim liste(1 To rg.Count, 1 To 2)
With ComboBox1
'ancienne sélection de combobox
If .ListIndex > -1 Then
Nom = .List(.ListIndex, 0): Prenom = .List(.ListIndex, 1): End If
'remplissage de la liste
For Each xcell In rg
i = i + 1: liste(i, 1) = xcell: liste(i, 2) = xcell.Offset(, 1)
'si liste(i, 1) et liste(i, 2) i correspondent à nom et prénom affichés par combobox1
If liste(i, 1) = Nom And liste(i, 2) = Prenom Then present = i
Next xcell
.ColumnCount = 2
.List = liste
.ListIndex = present - 1
End With
End If
End Sub
Private Sub UserForm_Activate()
MaListe
End Sub