1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
   | Sub JO()
Dim ok As Boolean, jf As Boolean, JoursFériés As Variant, k As Byte
Dim i As Integer, j As Integer, NoLigne As Integer, dateref As Date
    Application.DisplayAlerts = False
    'Suppression de toutes les feuilles du classeur sauf une
    ActiveWorkbook.Sheets.Add Before:=Worksheets(1)
    For i = ActiveWorkbook.Worksheets.Count - 1 To 1 Step -1
        Worksheets(i).Delete
    Next
    JoursFériés = Array("", "1 janvier 2007", "28 mars 2007", "1 mai 2007", "8 mai 2007", "17 mai 2007", "28 mai 2007", "14 juillet 2007", "15 août 2007", "1 novembre 2007", "11 novembre 2007", "25 décembre 2007")
    'On nomme la feuille qui reste (janvier)
    ActiveSheet.Name = Format(DateSerial(2007, 1, 1), "mmmm")
    NoLigne = 2
    For i = 1 To 365
        dateref = DateSerial(2007, 1, i)
        'Création de la feuille du mois
        'La feuille de janvier existe, on l'exclut : C'est le 1er du mois, mois > janvier
        If Format(dateref, "dd") = "01" And Month(dateref) > 1 Then
            NoLigne = 2
            ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
            ActiveWorkbook.ActiveSheet.Name = Format(dateref, "mmmm")
        End If
        jf = False 'Exclusion des jours fériés
        For k = 1 To UBound(JoursFériés)
            jf = jf Or InStr(Format(CDate(dateref), "dd mmmm yyyy"), JoursFériés(k)) <> 0
            If jf Then Exit For 'C'est un jour férié
        Next k
        If Format(Weekday(dateref), "dddd") <> "samedi" And _
            Format(Weekday(dateref), "dddd") <> "dimanche" And _
            Not jf Then
            ActiveSheet.Cells(NoLigne, 1).Formula = UCase(Left(Format(dateref, "dddd"), 1))
            ActiveSheet.Cells(NoLigne, 2).Formula = Format(dateref, "dd")
            NoLigne = NoLigne + 1
        End If
    Next
End Sub | 
Partager