Sub ListeCol(noCol)
Dim E As Object 'déclare la variable E (onglet Effectif)
Dim R As Range 'déclare la variable R (Recherche)
Set MonDico = CreateObject("Scripting.Dictionary")
For I = 1 To [bd].Rows.Count
ok = True
For n = 1 To [bd].Columns.Count
If n <> noCol Then
If Not Range("BD").Cells(I, n) Like Me("comboBox" & n) Then ok = False
End If
Next n
If ok Then
tmp = Range("BD").Cells(I, noCol)
MonDico(tmp) = tmp
End If
Next I
MonDico.Add "*", "*"
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me("ComboBox" & noCol).List = temp
Set E = Sheets("Effectif") 'définit l'onglet E
'définit la recherche R (recherche dans la colonne noCol de l'onglet E, la valeur de la combobox qui a été modifiée)
Set R = E.Columns(noCol).Find(Me.Controls("ComboBox" & noCol).Value, , xlValues, xlWhole)
If Not R Is Nothing Then 'condition : si il existe au moins une occurrence trouvée
'condition 2 : si l'occurrence est unique
If Application.WorksheetFunction.CountIf(E.Columns(noCol), Me.Controls("ComboBox" & noCol).Value) = 1 Then
Me.TextBox1.Value = E.Cells(R.Row, 4) 'récupère la valeur correspondante dans la TextBox1
Me.TextBox2.Value = E.Cells(R.Row, 5) 'récupère la valeur correspondante dans la TextBox2
Else 'sinon (si par exemple, plusieurs fois le même prénom ou homonymie)
Me.TextBox1.Value = "" 'vide l TextBox1
Me.TextBox2.Value = "" 'vide l TextBox2
End If 'fin de la condition 1
End If 'fin de la condition 2
End Sub