Exemple :
Combien de fois y a t-il le mercredi entre le 14/01/2003 et le 31/01/2003 ???
Source / Exemple :
'COMPTE LE NOMBRE DE FOIS OU UNE JOURNEE (LUNDI, MARDI, MERCREDI, JEUDI.... APPARAIT DANS UNE PERIODE
Public Function CountDowInPeriod(ByVal DateStart As Date, ByVal DateEnd As Date, ByVal dow As Integer)
Dim DOWStart As Date
Dim DOWEnd As Date
Dim TMPDATE As Date
Dim Result As Long
Result = 0
If dow > 0 And dow < 8 Then
If DateStart > DateEnd Then
TMPDATE = DateStart
DateStart = DateEnd
DateEnd = TMPDATE
End If
'------ PREMIERE SEMAINE DE LA PERIODE (éventuellement incomplète)
DOWStart = DateStart
DOWEnd = DateAdd("d", 7 - Weekday(DOWStart, vbUseSystemDayOfWeek), DOWStart)
Result = Result - (dow >= Weekday(DOWStart, vbUseSystemDayOfWeek) And dow <= Weekday(DOWEnd, vbUseSystemDayOfWeek))
'------ LES AUTRES SEMAINES DE LA PERIODE (complètes situées en milieu de période)
DOWStart = DateAdd("d", 1, DOWEnd)
DOWEnd = DateAdd("d", -(Weekday(DateEnd, vbUseSystemDayOfWeek)), DateEnd)
Result = Result + (DateDiff("d", DOWStart, DOWEnd) + 1) / 7
'------ DERNIERE SEMAINE DE LA PERIODE (éventuellement incomplète)
DOWStart = DateAdd("d", 1, DOWEnd)
DOWEnd = DateEnd
Result = Result - (dow >= Weekday(DOWStart, vbUseSystemDayOfWeek) And dow <= Weekday(DOWEnd, vbUseSystemDayOfWeek))
End If
CountDowInPeriod = Result
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.