Dim Col As Byte
Private Sub ComboBox1_Change()
' Si une option de liste est choisie, elle est reportée en ligne 6 sous la liste déroulante
' Si la liste est vide, la cellule en ligne 6 est effacée
If ComboBox1.ListIndex = -1 Then Cells(5, Col) = "": Exit Sub
Cells(5, Col) = ComboBox1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Row = 4 Then ' vérifie si une cellule de la ligne 3 est modifiée
Select Case Target.Column
Case 2 To 29 ' ne prend en compte que les cellules situées en colonnes 2:18
With ComboBox1
Col = Target.Column ' enregistre le n° de colonne de la ligne modifiée
.Left = Cells(3, Target.Column).Left ' aligne la liste déroulante sur la cellule de recherche
.Clear ' réinitialise la liste
' remplissage de la liste déroulante
For Each cel In Sheets("DONNEES").Range("A2:A" & Rows.Count).SpecialCells(xlCellTypeConstants)
If InStr(UCase(cel.Value), UCase(Target)) > 0 Then .AddItem (cel.Value)
Next
End With
End Select
End If
End Sub