Gestion d'équipes de travail

Messages postés
36
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 novembre 2007
-
Messages postés
1
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
18 septembre 2004
-
Salut,

Je débute en prog et je suis confronté à un problème. Je voudrait pouvoir créer un programme qui me permettrait de savoir comment je travaillerais à une date future en intégrant le fait que je travaille en 3 X 8. Exemple : est-ce que je serai de jour, de matin ou de nuit le 22/12/04. Comment caller le calendrier ? On change d'équipe tous les lundis matin dans cet ordre : Matin, Après-midi, nuit.

Je suis sûr que cela ne doit pas être un gros problème pour les spécialistes des calendriers permanents alors,

Merci d'avance et à charge de revanche dans la mesure de mes faibles moyens

Lap2

9 réponses

Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Salut,

voici un petit source qui pourra peut être t'aider.

procedure TForm1.Button1Click(Sender: TObject);
const
  // Je pars du principe que la semaine 1 tu es du matin.
  DAY  : array[0..2] of string = ('Matin', 'Après Midi', 'Soir');
var
  iNoSemaine : integer;
  iWeek      : integer;
  index      : integer;
begin
  iNoSemaine := WeekOfTheYear(DateTimePicker1.Date);

  for index := 0 to 2 do
  begin
    iWeek := index + 1;

    while (iWeek <= 52) do
    begin
      if iWeek = iNoSemaine then
      begin
        ShowMessage(DAY[index]);
        exit;
      end;

      iWeek := iWeek + 3;
    end;
  end;
end;


Bonne Prog,

Olivier.
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
Bien vu, Olivier ! 8-)

Petit problème, néanmoins : la fonction WeekOfTheYear() est peut-être fournie à partir de Delphi 7 (?), moi je n'en dispose pas... :dissapprove)

Qu'à cela ne tienne...

Voici une fonction

function WeekNumber(ADay: TDateTime): Integer;

trouvée sur internet à cette adresse :

http://www.efg2.com/Lab/Library/UseNet/2001/0405c.txt

Je copie-colle ce code :

function WeekNumber(ADay: TDateTime): Integer;
var
  Year, Month, Day: Word;
  WeekDay: integer;
  DumDay: TDateTime;
  diff, diff2: integer;
begin
  DumDay := ADay;
  DecodeDate(DumDay, Year, Month, Day);
  DumDay := EncodeDate(Year, 1, 1);  { first day of year }
  WeekDay := DayOfWeek(DumDay);
  if (WeekDay < 6) and (Weekday > 1) then  { monday -> thursday }
    DumDay := DumDay - WeekDay + 2
  else
  begin
    if WeekDay > 5 then
      DumDay := DumDay - WeekDay + 9;
    if WeekDay = 1 then
      DumDay := DumDay + 1;
  end;      { DumDay points to monday in week number one }
  diff := Trunc(ADay - DumDay);
  if diff < 0 then
  begin
    Result := WeekNumber(ADay - 7) + 1; { last week of previous year }
    Exit;
  end;
  DumDay := EncodeDate(Year, 12, 31);  { last day of year }
  WeekDay := DayOfWeek(DumDay);
  diff2 := Trunc(DumDay - ADay);
  if (diff2 < 3) and { one of last three days of year }
     (WeekDay > 1) and (WeekDay < 5) and { monday -> wednesday }
     (WeekDay > diff2 + 1) then
  begin
    Result := 1;                     { first week of next year }
    Exit;
  end;
  Result := diff div 7 + 1;
end;


Là, ça marche impec ! :approve)

Bonne prog' :-p
Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Bien vu à toi aussi Japee, ;)

Je ne m'étais pas rendu compte que cette function n'existait pas dans les versions infèrieur à Delphi 7. :sad)
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Que nenni les amis : WeekOfTheYear est au moins livrée avec Delphi 6. Il faut seulement penser à déclarer DateUtils dans une clause uses.
May Delphi be with you
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
Exact, Delphiprog ! :blush)

La fonction ci-dessus reste donc utile pour ceux qui n'ont que Delphi 4 (salut, kenavo ;) ), voire 5 (?) et antérieur...

Bonne prog' :-p
Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Comme ça on aura fait le tour de la question ;)

Pour Delphi 7, utiliser WeekOfTheYear qui se trouve dans DateUtils.

Pour Delphi 6, utiliser WeekOfTheYear sans oublier de déclarer DateUtils dans les uses.

Et pour les version inférieur il faut utiliser la function de Japee

Bonne Prog, :big)

Olivier.
Messages postés
36
Date d'inscription
mardi 3 août 2004
Statut
Membre
Dernière intervention
9 novembre 2007

Salut à tous et merci, pour la solution que j'utiliserais probablement un jour !

Mais dans l'immédiat, vous ne pourriez pas me trouver la solution en VB6 ? ( et c'est là que je me prends les tomates pourries dans la gueule ...) Désolé de ne pas avoir précisé dès le départ.

Merci de votre indulgence,

Lap2
Messages postés
309
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
24 septembre 2008
2
Salut,

Pour les tomates ... je crois que t'es bien partis pour en recevoir ;)
Repose ta question surle forum plus approprié : VBFrance

Ici tu es sur un Forum sur la programmation Delphi.

Bonne Prog,

Olivier.
Messages postés
1
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
18 septembre 2004

Merci a tous, c'est pas tombé sur l'ecran d'un aveugle. Je vais essayer de m'en servir, moi je travaille sur un cycle de 6 semaines en décalé.
J'ai un projet a realiser pour l'equipe : gestion du planning des 3 groupes. Pour commencer je cherche (comme un debutant que je suis) comment afficher en vertical gauche les NOMS et en horizontal le calendrier.
Merci de vos reponses.
Olivier.