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
| Function ConverSemaineDate(sJour As Integer, sNumSemaine As Integer, sAnnée As Integer) As Date
'Pourriez-vous m'aider svp.
'Je souhaiterai une fonction qui me permette de récupérer une date ou de reconstruire la date avec:
'sJour = jour de la semaine de 1 à 7
'sNumSemaine = au numéro de semaine de 1 à 52 (voir 53)
'sAnnée = année (ex: 2013)
j = sNumSemaine * 7 'Je calcul le nombre de jour en fonction du dimanche de la semaine 1
d = CDate("1/1/" & sAnnée) 'Je me positionne au 01/01/ de l'année
Dim i As Integer
i = 0
'Je recherche le dimanche de la semaine 1
While Weekday(CDate("1/1/" & sAnnée) - i) <> 1 Or CInt(Format(CDate("1/1/" & sAnnée) - i, "w")) <> 1
DoEvents
'Debug.Print Weekday(CDate("1/1/" & sAnnée) - i) & " : " & CInt(Format(CDate("1/1/" & sAnnée) - i, "w"))
i = i + 1
Wend
d = CDate("1/1/" & sAnnée) - i 'Je fixe le dimanche de la semaine 1
ConverSemaineDate = d + j - 7 + sJour 'J'ajoute le nombre de jour pour trouver le dimanche de la semaine concerné, moins 7 jour plus la valeur du jour de la semaine.
End Function
Sub test()
Debug.Print ConverSemaineDate(1, 42, 2013)
Debug.Print ConverSemaineDate(1, 42, 2012)
Debug.Print ConverSemaineDate(1, 42, 2011)
Debug.Print ConverSemaineDate(1, 42, 2010)
Debug.Print ConverSemaineDate(1, 42, 2009)
Debug.Print ConverSemaineDate(1, 42, 2008)
Debug.Print ConverSemaineDate(1, 42, 2007)
End Sub |
Partager