Sub test2()
Dim J&, NJ As New Dictionary, T(), F As Object, L&, S$(), N&
For J = 1 To 7: NJ(UCase(Format(DateSerial(1900, 1, J), "dddd"))) = J: Next J
ReDim T(1 To ThisWorkbook.Sheets.Count, 1 To 3)
For Each F In ThisWorkbook.Sheets
L = L + 1: S = Split(F.Name, "_")
On Error Resume Next: T(L, 1) = Val(S(1)): On Error GoTo 0
If NJ.Exists(S(0)) Then T(L, 2) = NJ(S(0))
T(L, 3) = F.Name: Next F
With New TableIndex
.Init 1, UBound(T, 1)
While .Actif
If T(.B, 1) = T(.A, 1) Then .BInfA = T(.B, 2) < T(.A, 2) Else .BInfA = T(.B, 1) < T(.A, 1)
Wend
.Parcourir
While .Actif
L = .Suivant: N = N + 1
ThisWorkbook.Sheets(T(L, 3)).Move Before:=ThisWorkbook.Sheets(N)
Wend: End With
End Sub