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 37 38 39 40
| Option Explicit
Dim DateDebut As Date, I%, DateFin As Date, nbWeeks%
Private Sub Form_Load()
' Pour tester sur d'autres années, on n'a pas besoin de modifier la date du système
' La modification doit obligatoirement être la même et faite sur les 2 lignes suivantes :
DateDebut = "01/07/" & Year(Date) ' Mettre ici + ou - un nombre par exemple: +1 pour avoir 2017 ou -1 pour 2015
DateFin = "31/08/" & Year(Date) ' et ici : +1 pour avoir 2017 ou -1 pour 2015
DateDebut = FindFirstDayOfWeekInMonth(DateDebut)
nbWeeks = DateDiff("ww", DateDebut, DateFin)
Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " du " & _
Right("00" & Day(DateDebut), 2) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
" " & MonthName(Month(DateDebut), False) & " " & Year(DateDebut)
For I = 2 To nbWeeks
DateDebut = DateAdd("d", 7, DateDebut)
Combo1.AddItem "Semaine " & DatePart("ww", DateDebut, vbSunday, vbFirstFullWeek) & " du " & _
Right("00" & Day(DateDebut), 2) & " au " & Right("00" & Day(DateAdd("d", 4, DateDebut)), 2) & _
" " & MonthName(Month(DateAdd("d", 4, DateDebut)), False) & " " & Year(DateDebut)
Next I
Combo1.ListIndex = 0
End Sub
Function FindFirstDayOfWeekInMonth(newDate As Date) As Date
Dim numWeek%, tb(6) As Date, K%
numWeek% = DatePart("ww", newDate, vbSunday, vbFirstFullWeek)
newDate = DateAdd("d", -8, newDate)
K = 0
For I = 0 To 15
newDate = DateAdd("d", 1, newDate)
If DatePart("ww", newDate, vbSunday, vbFirstFullWeek) = numWeek% Then
tb(K) = newDate
K = K + 1
End If
Next I
FindFirstDayOfWeekInMonth = DateAdd("d", 1, tb(UBound(tb)))
End Function |
Partager