par polbusse » 13 Nov 2003 à 13:56
Cette fonction retourne ne n° de semaine, il n'y a pas de semaine 53, le restant des jours de l'année sont inclu ds la 52.Function RecupNumeroSemaine(dateJour As Variant) As Integer On Error Goto ReturnZero Dim dt As NotesDateTime Set dt = New notesDateTime(dateJour) RecupNumeroSemaine = Format$(dt.lslocaltime, "ww") Exit Function '// Solution qui inclu la semaine 53 ds la 52. Const Janvier = 1, Fevrier = 2, Mars = 3, Avril = 4, Mai = 5, Juin = 6 Const Juillet = 7, Aout = 8, Septembre = 9, Octobre = 10, Novembre = 11 Const Decembre = 12 Dim i%, y%, m%, d%, Semaine%, Jours% Dim aMois(12) As Integer aMois(Janvier) = 31 aMois(Fevrier) = 28 aMois(Mars) = 31 aMois(Avril) = 30 aMois(Mai) = 31 aMois(Juin) = 30 aMois(Juillet) = 31 aMois(Aout) = 31 aMois(Septembre) = 30 aMois(Octobre) = 31 aMois(Novembre) = 30 aMois(Decembre) = 31 y% = Year(dateJour) m% = Month( dateJour) d% = Day( dateJour ) If y% Mod 4 = 0 Then aMois(Fevrier) = aMois(Fevrier) + 1 End If Jours% = Weekday( Datenumber(y%, 1, 1) ) + 1 For i% = 1 To m% - 1 Jours% = Jours% + aMois(i%) Next Jours% = Jours% + d% Semaine% = Jours% / 7 If Semaine% > 52 Then Semaine% = 1 RecupNumeroSemaine = Semaine% Exit Function ReturnZero: RecupNumeroSemaine = 0 Exit Function End Function