Sub FiltreSemaine()
Dim rng As Range, wsNew$
Application.ScreenUpdating = False
With ActiveSheet
.Range("A1:G1" & .Range("A65000").End(xlUp).Row).Sort Key1:=Range("A2"), _
Order1:=xlAscending, Key2:=Range("C2"), Order2:=xlAscending, Header:=xlGuess
.AutoFilterMode = False
.Range("A1").AutoFilter Field:=1, Criteria1:=[Semaine]
With .AutoFilter.Range
On Error Resume Next
Set rng = .Offset(1, 1).Resize(.Rows.Count - 1, .Columns.Count) _
.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng Is Nothing Then
wsNew = "Semaine" & [Semaine]
DelFeuille wsNew
Sheets("Modèle").Copy after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = wsNew
.Range("A5") = [Semaine]
.Range("B7").Resize(rng.Rows.Count, rng.Columns.Count) = rng.Value
End With
End If
End With
.AutoFilterMode = False
.Activate
End With
End Sub
Sub DelFeuille(Feuille As String)
On Error Resume Next
Set ws = Sheets(Feuille)
If Not ws Is Nothing Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
On Error GoTo 0
End Sub