IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Calcul de nombre de jours ouvrable entre deux date


Sujet :

Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Calcul de nombre de jours ouvrable entre deux date
    Bonjour à tous

    Voila je suis nouveau sur ce forum , et je vous écrit naturelement car j'ai un petit problème , je développe avec delphi 4 pro , a des fin personnel , et je voudrais pouvoir mettre une formule dans mon logiciel qui pourrait calculé le nombre de jours ouvrable qu'il y a entre deux date spécifique , donc en ne tenant pas compte des week end et le mieux serrait encore de ne pas compté égallement les jours ferié ,

    Es possible ? et si oui quelqu'un pourrait-il m'aidé SVP ?

    Je vous remercie d'avance .

    Etienne

  2. #2
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Points : 352
    Points
    352
    Par défaut Le plus dur est là
    En codant autour de ces fonctions , c'est assez simple

    http://www.developpez.net/forums/d59...-jours-feries/

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Pascal Fonteneau Voir le message
    En codant autour de ces fonctions , c'est assez simple

    http://www.developpez.net/forums/d59...-jours-feries/
    Bonjour

    Je te remercie pour ta réponse , et vient de voir le code de Andry , mais cela ne me donne que les jours ferié , et comme je suis un peu novice dans le développement , pourrait tu me dire un peu plus de la manière que je procède pour utiliser ce code , quel composant par exemple utiliser afin de pouvoir parvenir à utiliser ce code , et surtout si ce code peut fonctionner en delphi 4.

    Je te remercie déja d'avance

  4. #4
    Membre averti
    Avatar de Pascal Fonteneau
    Profil pro
    gérant
    Inscrit en
    Février 2007
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2007
    Messages : 139
    Points : 352
    Points
    352
    Par défaut
    Re
    si ce code peut fonctionner en delphi 4
    Oui, mettre DateUtils dans les Uses.
    Ensuite, il faut savoir ce que tu comptes comme jours fériés (les samedis ? les dimanches ?) en France ou en Belgique uniquement.
    Enfin comparer toutes les dates avec la liste des feriés. Attention si changement d'année entre la date de debut et de fin de test.

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Pascal Fonteneau Voir le message
    Re


    Oui, mettre DateUtils dans les Uses.
    Ensuite, il faut savoir ce que tu comptes comme jours fériés (les samedis ? les dimanches ?) en France ou en Belgique uniquement.
    Enfin comparer toutes les dates avec la liste des feriés. Attention si changement d'année entre la date de debut et de fin de test.
    Bonjour

    DateUtils , ne fonctionne pas en delphi4 , et IncDay non plus y aurait-il dautre code qui puis fonctionner ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    effectivement dateUtils n'est apparu qu'avec des versions plus récentes que D4 . En D3 j'utilise le DateUtil des composants RXLib (est il encore trouvable sur la toile ? )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    effectivement dateUtils n'est apparu qu'avec des versions plus récentes que D4 . En D3 j'utilise le DateUtil des composants RXLib (est il encore trouvable sur la toile ? )
    J'ai surfer pendant 1 heure pour trouver le dateutil pour delphi 4 et pas moyen de le trouver .

    dommage.

    Y aurait-il quelqu'un qui pourrait me dire éventuellement ou trouver ce genre de code pour delphi 4 .

    Moi j'ai tenté avec le code suivant mais rien y fait.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Buttons, Math, dateutils, ComCtrls, ExtCtrls, Menus;
     
    type
      TForm1 = class(TForm)
        lbl_datedebut: TLabel;
        lbl_datefin: TLabel;
        lbl_nb_jours: TLabel;
        lbl_resultat7: TLabel;
        bt_calculer: TButton;
        bt_quitter: TButton;
        bt_effacer: TButton;
        bt_aide: TButton;
        Button5: TButton;
        za_heure: TLabel;
        lbl_nb_jours5: TLabel;
        date1: TDateTimePicker;
        date2: TDateTimePicker;
        gb_resultat: TGroupBox;
        Timer: TTimer;
        lbl_resultat5: TLabel;
        lbl_resultatwe: TLabel;
        lbl_nb_sam_dim: TLabel;
        Label5: TLabel;
        date3: TDateTimePicker;
        date4: TDateTimePicker;
        procedure bt_calculerClick(Sender: TObject);
        procedure bt_quitterClick(Sender: TObject);
        procedure bt_effacerClick(Sender: TObject);
        procedure bt_aideClick(Sender: TObject);
        procedure TimerTimer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
     uses unit_aide;
    {$R *.DFM}
     
    procedure TForm1.bt_calculerClick(Sender: TObject);
    var i : integer;
        j : integer;
        jour : string;
    begin
       i := 0;
      j := 0;
     
          date3.DateTime := date1.DateTime;
          date4.DateTime := IncDay(date2.DateTime, 1);
          if date1.DateTime>date2.DateTime then
            begin
              gb_resultat.Visible := false;
              // Messagedlg : Affiche une boîte de dialogue de message au centre de l'écran.
              MessageDlg('La date de début doit être inférieure à la date de fin !',
               mterror,[mbOk],0);
            end
              else
                Repeat
                  // FormatDateTime : Formate un objet TDateTime.
                  jour := FormatDateTime('dddd',date3.DateTime);
                  label5.Caption := jour;
                  if (jour = 'samedi') OR (jour = 'dimanche') Then
                    begin
                      j := j+1;
                      date3.DateTime := IncDay(date3.DateTime, 1);
                      // IncDay : Renvoie une date décalée d'un certain nombre de jours.
                   end
                else
                  begin
                    i := i+1;
                    date3.DateTime := IncDay(date3.DateTime, 1);
                  end;
                  // CompareDate : Indique la relation entre les parties date
                  // de deux valeurs TDateTime.
                Until CompareDate(date3.DateTime,date4.DateTime) = 0;
     
    // Affichage du groupbox et affichage des résultats.
      gb_resultat.Visible:=true;
      lbl_resultat5.Caption := inttostr(i);
      lbl_resultatwe.Caption := inttostr(j);
      lbl_resultat7.Caption := inttostr(i+j);
     
     
    end;
     
    procedure TForm1.bt_quitterClick(Sender: TObject);
    begin
    application.Terminate;
    end;
     
    procedure TForm1.bt_effacerClick(Sender: TObject);
    begin
      gb_resultat.Visible := false;
      lbl_resultat7.caption := '';
      lbl_resultat5.caption := '';
      date1.Date := now;
      date2.date := now;
    end;
     
    procedure TForm1.bt_aideClick(Sender: TObject);
    begin
    form2.Show;
    end;
     
    procedure TForm1.TimerTimer(Sender: TObject);
    var
    str : string;
    begin
      datetimetostring(str,'dddd d mmmm yyyy   hh:mm:ss', now);
      za_heure.Caption := str;
     
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     date1.Date := now; // Now: Renvoie la date et l'heure en cours.
      date2.date := now;
    end;
     
    end.

Discussions similaires

  1. Fonction Calcul automatique de nombre de jours ouvrable entre deux dates
    Par KiMbOoO dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/04/2011, 09h23
  2. Réponses: 1
    Dernier message: 11/09/2007, 12h10
  3. [Dates] calculer le nombre de jour ouvrable entre 2 dates
    Par pimpmyride dans le forum Langage
    Réponses: 1
    Dernier message: 20/11/2006, 17h10
  4. Nombre de jours ouvrables entre deux dates
    Par lenny_ dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/10/2006, 12h13
  5. Réponses: 1
    Dernier message: 10/08/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo