Dim i As Long
Dim sTemp As String

Private Sub ListBox1_Change()
  sTemp = ""
  For i = 0 To Me.ListBox1.ListCount - 1
    If Me.ListBox1.Selected(i) Then
      sTemp = sTemp & Me.ListBox1.List(i) & "¬"
      End If
    Next
    sTemp = VBA.Left(sTemp, VBA.Len(sTemp) - 1)
    ActiveCell = sTemp
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If ActiveCell.Column = 4 Then
    If Cells(ActiveCell.Row, 2) = "" Then
      Me.ListBox1.Visible = False
      Exit Sub
    End If
    With Me.ListBox1
      .MultiSelect = fmMultiSelectMulti
      .ListStyle = fmListStyleOption
      .Height = 150
      .Width = 100
      .Top = ActiveCell.Top
      .Left = ActiveCell.Offset(0, 1).Left
      .Visible = True
    End With
    On Error Resume Next
    i = Application.WorksheetFunction.Match(Cells(ActiveCell.Row, 2), Worksheets("donnée").Range("Groupe"), 0) - 1
    Me.ListBox1.List = Worksheets("Donnée").Range(Worksheets("Donnée").Range("A1").Offset(1, 0), _
      Worksheets("Donnée").Range("A1").Offset(0, i).End(xlDown))
    On Error GoTo 0
    
  Else
    Me.ListBox1.Visible = False
  End If
End Sub