Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim nomMois As String, i As Long, xcol, ncol As Long
' nom de la feuille activée (minuscule et sans accent)
nomMois = Replace(Replace(LCase(Sh.Name), "é", "e"), "û", "u")
For i = 1 To 12   ' boucle sur chaque numéro de mois
   ' si le nom de la feuille est le nom du i ème mois (minuscule et sans accent)
   If nomMois = Replace(Replace(LCase(Format(29 * i, "mmmm")), "é", "e"), "û", "u") Then
      With Sh                                   ' avec la feuille activée
         Application.ScreenUpdating = False     ' on fige l'écran (plus rapide)
         If .FilterMode Then .ShowAllData       ' si filtre actif alors on affiche tout
         For Each xcol In Split("b e j m r u")  ' pour chaque première colonne (en lettre) des blocs à trier
            ncol = .Cells(9, xcol).Column       ' la même colonne en nombre
            .Cells(9, ncol).Resize(80, 3).Sort key1:=.Cells(9, ncol), order1:=xlAscending, _
            key2:=.Cells(9, ncol + 1), order2:=xlAscending, Header:=xlNo, MatchCase:=False      ' tri du bloc
         Next xcol
      End With
      Exit For    ' la feuille activée a été trié (son mois a été trouvé), on quitte la boucle des mois
   End If
Next i