Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B1]) Is Nothing Then Exit Sub
Range("A2:Z" & Rows.Count).ClearContents 'RAZ
If [B1] = "" Then Exit Sub
Dim lig&, cel As Range, col%
Application.ScreenUpdating = False
With Feuil1 'CodeName
.AutoFilterMode = False
With .Range("AH7", .Cells(.Rows.Count, "AH").End(xlUp))
.AutoFilter 1, IIf([B1] = "Tous", "*", [B1]) 'filtre automatique
.Offset(, -2).Resize(, 4).SpecialCells(xlCellTypeVisible).Copy [A2]
.Offset(, -4).Resize(, 2).SpecialCells(xlCellTypeVisible).Copy [C2]
lig = 2
For Each cel In .SpecialCells(xlCellTypeVisible)
For col = 3 To 24
If LCase(.Parent.Cells(cel.Row, col)) = "o" Then _
Cells(lig, col + 2) = .Parent.Cells(5, col)
Next
lig = lig + 1
Next
End With
.AutoFilterMode = False
End With
End Sub