Voici deux fonctions qui donnent le numéro de la semaine et le numéro de l'année. Ces deux fonctions ont l'air de renvoyer les bonnes valeurs.

Function TrouveSemaineDeLaDate(ByVal DateConcernee As Date) As String
' Bogue du lundi 29 décembre 2003 qui est compté en semaine 53 au lieu de semaine 1
If Format(DateConcernee, "dd/mm/yyyy", vbMonday, vbFirstFourDays) = "29/12/2003" Then
TrouveSemaineDeLaDate = "01"
Else
TrouveSemaineDeLaDate = Format(Format(DateConcernee, "ww", vbMonday, vbFirstFourDays), "00")
End If
End Function
Function TrouveAnneeDeLaDate(ByVal DateConcernee As Date) As String
' Bogue du lundi 29 décembre 2003 qui est compté en semaine 53 au lieu de semaine 1
If Format(DateConcernee, "dd/mm/yyyy", vbMonday, vbFirstFourDays) = "29/12/2003" Then
TrouveAnneeDeLaDate = "2004"
Else
TrouveAnneeDeLaDate = Format(DateConcernee, "yyyy", vbMonday, vbFirstFourDays)
End If
End Function