Private Sub Worksheet_Change(ByVal Target As Range)
Dim choix As Range, deb As Range, nom$, w As Worksheet, i&, x$, j&
Set choix = [C5]
Set deb = [A18]
nom = CStr(choix)
If Intersect(Target, choix) Is Nothing Or nom = "" Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
Set w = Sheets(nom)
On Error GoTo 0
If w Is Nothing Then
Me.Move Before:=Sheets(1)
Set w = Sheets.Add(After:=Me)
w.Name = nom
For i = 2 To Sheets.Count - 1
x = Sheets(i).Name
For j = i + 1 To Sheets.Count
If Sheets(j).Name < x Then Sheets(j).Move Before:=Sheets(i)
Next j, i
End If
Cells.Copy w.[A1]
w.Range(choix(1, 0).Address).Resize(, 2).Clear
w.Range(deb.Address).CurrentRegion.Clear
choix(0) = "NAME"
deb.CurrentRegion.AdvancedFilter xlFilterCopy, choix(0).Resize(2), w.Range(deb.Address)
choix(0) = ""
With w.UsedRange: End With
w.Activate
End Sub