Function GetSpecificalDay(ByVal eDayOfWeek As System.DayOfWeek, ByVal iIterationInMonth As Integer, ByVal dDate As Date) As Date
'iDayOfWeek jour de la semaine recherché
'iIterationInMonth position du jour dans le mois. ex : 2 pour le 2ème mercredi du mois
'dDate date de recherche, le mois et l'année servent de référence
'1er du mois/année à charger
Dim dRef As Date = New Date(dDate.Year, dDate.Month, 1)
Dim dDif As Date = dRef
'à laquelle on ajoute le jour recherché
For i As Int16 = 0 To 6
dDif = dRef.AddDays(i)
If dDif.DayOfWeek = eDayOfWeek Then Exit For
Next
'on a maintenant le premier jour recherché. exception nombre négatif non-pris en compte
If iIterationInMonth > 1 Then dDif = dDif.AddDays((iIterationInMonth - 1) * 7)
'test de valeur MAX (supérieur à 4 ou 5 selon les mois pour la cohérence)
If Not dDif.Month.Equals(dRef.Month) Then _
Throw New Exception(String.Format("Erreur d'utilisation de la fonction 'GetSpecificalDay'" & _
", le mois [M-{0}] ne contient pas {1} [D-{2}].", _
dRef.Month, iIterationInMonth, dDif.DayOfWeek))
Return dDif
End Function