Comptage du nombre de fois ou un jour apparait dans une période

Contenu du snippet

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

A voir également

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.