Function DatSem(an%, sem%, jour$) As Variant
Dim a, n As Variant, premier As Date, lundi As Date
jour = LCase(jour) 'minuscules
a = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche")
DatSem = ""
n = Application.Match(jour, a, 0)
If sem < 1 Or IsError(n) Then Exit Function
premier = DateSerial(an, 1, 1) '1er de l'an
lundi = 7 * sem + premier - Weekday(premier) - 5 'lundi de la semaine
If Weekday(premier) > 5 Then lundi = lundi + 7 'semaine ISO
If Year(lundi) <= an Then DatSem = lundi + n - 1 'avec limitation du numéro de semaine
End Function