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

Access Discussion :

Jours Ouvrés (Access) [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    PMO
    Inscrit en
    Septembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : PMO

    Informations forums :
    Inscription : Septembre 2016
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Jours Ouvrés (Access)
    Bonjour,

    Je souhaiterais par une macro VBA, car je ne pense pas que l'on puisse le faire avec une requête (Si c'est possible dite le moi), incrémenter une date sans prendre en compte les weekend et jours fériés. Toutes les dates exclus sont regroupées dans une table.

    Pour cela, j'aimerais dans une table à partir du champ date, pouvoir à cette date incrémenter un nombre de jour de travail (jour ouvré). c'est à dire je ne tiens pas compte des weekends, des jours fériés ainsi que des dates dite de "non travail" que je considère comme "fériés", j'ai donc créé une table : "Vacances" cette table regroupe toutes les dates à ne pas prendre en compte.

    L'idée est de pouvoir pour une "Date" dite quelconque ajouter un certain "Nombre de jour de travail" dans un autre champ dit "Date de fin de tache attendu"

    Exemple:

    Date
    Mercredi 5 Octobre 2016

    Nombre de jour de travail
    7

    Date de fin de tache attendu
    Jeudi 13 Octobre 2016

    Je fais appel à vous car je ne sais pas comment m'y prendre

    Cordialement

    MaelF

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    L'idée c'est d'utiliser une fonction qui va tester dans la table Vacances si le jour passé en argument est présent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function JourVac(DateJour As Date) as boolean
       JourVac=Not IsNull(DLookup("Jour","Vacances","Jour=#" & Format(DateJour,"mm/dd/yyyy") & "#"))
    end function
    * Ici je suppose que la table Vacances possède un champ Jour de format Date/Heure.

    Ensuite, il faut déterminer la date finale en fonction du nombre de jours ouvrés, en parcourant une boucle, en incrémentant la date et en testant à chaque passage si la date est un jour ouvré:

    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
    Function AjoutDate(dt as Date, nbJoursOuvres as long) as date
     
    Do while (nbJoursOuvres>0)
     
    dt=dt+1
     
       if Not (EstVac(dt)) then
          nbJoursOuvres=nbJoursOuvres-1
       end if
     
    Loop
     
    AjoutDate=dt
     
    end function
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour MaelF, bonjour Denis,

    Une proposition décrite ici : http://claudeleloup.developpez.com/t...plic-ploc/#LIV

    avec quelques applications pratiques.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    Membre à l'essai
    Homme Profil pro
    PMO
    Inscrit en
    Septembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : PMO

    Informations forums :
    Inscription : Septembre 2016
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Merci Claude,

    Je pense que ça va pas mal m'aider merci beaucoup !

    MaelF

  5. #5
    Membre à l'essai
    Homme Profil pro
    PMO
    Inscrit en
    Septembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : PMO

    Informations forums :
    Inscription : Septembre 2016
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    J'ai utilisé ce code VBA qui m'est très pratique voir ci-dessous

    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
    Public Function Echeance(DateDebut As Date, NbreJrs As Integer) As Date
     'Renvoie la date ouvrable qui vient après le nombre de jours (qui peut être négatif)
     'DateDebut sous la forme anglo-saxonne
     'Si cette DateDebut n'existe pas dans la table, la fonction renvoie 00:00:00
     
      Dim rst As Recordset
      Set rst = CurrentDb.OpenRecordset("SELECT JoursOuvres FROM tJoursOuvres ORDER BY JoursOuvres;")
      Do While Not rst.EOF
        If rst("JoursOuvres") = DateDebut Then
            rst.Move NbreJrs
            Echeance = rst("JoursOuvres")
            Exit Function
          Else
            rst.MoveNext
        End If
      Loop
    End Function
    Cependant si la date de début dite dateDebut n'est pas dans la table, la fonction renvoie 00:00:00 comme expliqué dans le commentaire.

    J'aimerai quand même pourvoir renvoyer une date mais je ne vois pas comment.

    Ma dateDebut est un jour de vacances, mais je souhaiterais quand même incrémenter dessus en phase avec ma table tJoursOuvres

    Avez-vous une solution?

    MaelF

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Ceci devrait mieux te convenir :

    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
    Option Compare Database
    Option Explicit
     
    Public Function EcheanceModifiee(DateDebut As Date, NbreJrs As Integer) As Date
     'Renvoie la date ouvrable qui vient après le nombre de jour
     'DateDebut sous la forme anglo-saxonne
     'Si cette DateDebut n'existe pas dans la table, on remplace DateDebut par le 1er jour ouvrable qui suit
     
      Dim rst As Recordset
      'début ouvrable ?
      If DCount("JoursOuvres", "tJoursOuvres", "JoursOuvres=#" & Format(DateDebut, "mm/dd/yyyy") & "#") = 0 Then
         DateDebut = DMin("JoursOuvres", "tJoursOuvres", "JoursOuvres>#" & Format(DateDebut, "mm/dd/yyyy") & "#")
      End If
     
      Set rst = CurrentDb.OpenRecordset("tJoursOuvres")
      Do While Not rst.EOF
        If rst("JoursOuvres") = DateDebut Then
            rst.Move NbreJrs
            EcheanceModifiee = rst("JoursOuvres")
            Exit Function
          Else
            rst.MoveNext
        End If
      Loop
    End Function
    N.B. Quand tu postes du code, tu dois l'insérer dans les balises !

    http://dolphy35.developpez.com/images/Balises.gif
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre à l'essai
    Homme Profil pro
    PMO
    Inscrit en
    Septembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : PMO

    Informations forums :
    Inscription : Septembre 2016
    Messages : 22
    Points : 14
    Points
    14
    Par défaut Une dernière chose
    Bonjour,

    Oups dsl !!

    Merci beaucoup ça fonctionne.

    Une dernière chose,

    Par cette manipe il prend en compte la date de début sous forme anglo-saxonne "mm"/"jj"/"aaaa" et la restitue en date "jj"/"mm"/"aaaa"

    Y a-t-il un moyen de pallier cela, c'est-à-dire garder toujours le même format qui est de type "jj"/"mm"/"aaaa"

    Date de début
    ex : 01/12/16 --> 01 décembre 2016

    Date restituée après incrémentation
    ex : 10/02/17 --> 10 février 2016

    Cordialement

    MaelF

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Cela dépend du contexte.


    Tu veux dire dans un formulaire ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Membre à l'essai
    Homme Profil pro
    PMO
    Inscrit en
    Septembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : PMO

    Informations forums :
    Inscription : Septembre 2016
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Non directement dans ma table,

    Je souhaiterais traiter (c'est-à-dire selectionner mon champ dateDebut dans la fonction EcheanceModifiee au format "dd"/"mm"/"aaaa") et retranscrire la date au format "dd"/"mm"/"aaaa" dans mon champ date dans lequel j'aurais incrémenté le NbreJrs

    Je ne sais pas si je suis clair...

    MaelF

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    N.B. il y avait une erreur dans le code proposé dans mon billet N° 6. C'est maintenant corrigé !

    Voici un exemple d'utilisation :

    Fichiers attachés Fichiers attachés
    • Type de fichier : zip tst.zip (11,7 Ko, 260 affichages)
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Membre à l'essai
    Homme Profil pro
    PMO
    Inscrit en
    Septembre 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : PMO

    Informations forums :
    Inscription : Septembre 2016
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    Bonjour Claude,

    Un grand merci !!

    Ca semble fonctionner

    Je vais l'utiliser en mode testeur fou et si je vois des problèmes je reviendrais vers vous

    Cordialement

    MaelF

  12. #12
    Membre à l'essai
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Octobre 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2021
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Bonjour à tous,

    Je me permets de déterrer ce post car je rencontre exactement la même problématique.
    Je suis plutôt novice et je rencontre le même cas de figure que MaelF, à savoir la fonction renvoie "00:00:00", à la différence près que mon champ date de départ est systématiquement renseigné.
    J'ai scrupuleusement suivi le mode opératoire de ClaudeLELOUP, et je l'en remercie énormément pour la clarté de ses explications, mais là je ne comprends pas d'où vient le soucis.
    Peut-être cela provient-il du format de cellule de la colonne "DateDepart", mais tout ce que j'ai pu essayer n'a pas fonctionné
    Ci-dessous les captures d'écran si cela peut aider.

    Nom : 2021-10-06_10-19-33.jpg
Affichages : 679
Taille : 507,1 Ko
    Nom : CBBA912B-7AB6-48B6-8CA9-73C46CF2427B.jpg
Affichages : 667
Taille : 285,0 Ko

    Merci par avance pour l'aide qui pourrait m'être apportée

  13. #13
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour Nono945 et bienvenue de ce côté.

    Pour t'aider j'aurais besoin de ta table.

    Cependant je ne dispose que d'Access 2000.

    Peux-tu poster une db format 2000 (*.mdb) ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  14. #14
    Membre à l'essai
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Octobre 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2021
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Bonjour ClaudeLELOUP,

    Merci pour votre réponse si rapide.
    Malheureusement, il semblerait que ma base ne puisse être convertie au format demandé car j'obtiens le message d'erreur ci-dessous

    Nom : 2021-10-06_11-04-23.jpg
Affichages : 661
Taille : 57,2 Ko

  15. #15
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut Claude
    J'ai quelques minutes devant moi, si tu veux je peux récupérer la bdd au format accdb et la convertir en mdb, si Nono est d'accord
    EDIT 13:21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date jalon : Echeance(Format(DATE SOUCRIMPTION PDV];"jj/mm/aaaa hh:nn:ss");[NbreJrs]+1)
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  16. #16
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Espérons qu'un autre forumeur, plus moderne prendra le relai...

    Bonne continuation.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  17. #17
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour hyperion,

    Tu as posté pendant que je rédigeais...

    Bien volontiers, en fait je crois qu'une db avec les tables en jeu suffirait.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  18. #18
    Membre à l'essai
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Octobre 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2021
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Bonjour Hyperion,

    Un immense merci à vous 2.
    Voici la base de données
    Fichiers attachés Fichiers attachés

  19. #19
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Pouvez-vous convertir la tbl DIMO V2 en tbl locale svp car je ne peux pas lire votre qry 1_req_portail_souscription
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  20. #20
    Membre à l'essai
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Octobre 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2021
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Hyperion,

    C'est fait; Merci encore
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Compter des jours ouvrés Access 2003
    Par Maryloo2005 dans le forum IHM
    Réponses: 4
    Dernier message: 30/05/2007, 23h03
  2. Réponses: 7
    Dernier message: 22/08/2006, 16h01
  3. Décompte des jours ouvrés sous Access
    Par kirouha dans le forum Access
    Réponses: 7
    Dernier message: 11/07/2006, 10h08
  4. [Access] nombre de jours ouvrés
    Par shinobi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/06/2006, 11h18
  5. [Info] Jours ouvrés entre 2 dates
    Par Dinytro dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 10/08/2005, 16h05

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