function PremierJourApres(UneDate : TDateTime; QuelJour: Integer): TDateTime;
begin
Result := IncDay(UneDate, 6-((DayOfTheWeek(UneDate)+6-QuelJour) mod 7));
end;
function NumeroSemaine(UneDate : TDateTime): Integer;
var
PremierJeudi, DebutSemaine1: TDatetime;
begin
UneDate := DateOf(UneDate);
PremierJeudi := PremierJourApres(StartOfTheYear(UneDate), 4);
DebutSemaine1 := IncDay(PremierJeudi, -4);
Result := 1+(DaysBetween(DebutSemaine1, UneDate) div 7);
end;