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 :

Decaler les dates d'un jour en jours ouvrables


Sujet :

Access

  1. #1
    Provisoirement toléré
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Points : 62
    Points
    62
    Par défaut Decaler les dates d'un jour en jours ouvrables
    Bjr,

    Je désire ajouter +1 a mes dates mais il faut également que cette nouvelle date soit un jour ouvrable.

    J'ai créé une table de jour ouvrable.
    Je désire donc qu'il passe a la cellule date d'apres lorsque j'ajoute +1.

    Merci de m aider

  2. #2
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Si je comprends bien,
    - tu es sur un formulaire,
    - un contrôle lié à un champ date ('txtDate') contient déjà une date,
    - un bouton ('btnIncrement') ou autre 'spin control' incrémente la date, en passant à la suivante dans ta table de jours ouvrables (table 'JoursOuvrables', champ [DateOuvrable])?

    Le + simple semble quelque chose comme une fonction de domaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub brnIncrement_Click
        txtDate = DMin("[DateOuvrable]", "JoursOuvrables", "[DateOuvrable]> #" & Format(txtDate, "mm/dd/yyyy") & "#")
    End Sub
    Ta table serait pas plus simple à gérer (et + petite) si tu faisais l'inverse ? en n'y mettant que les jours fériés.
    C'est ce qu'on fait d'habitude, dans les logiciels de planning (de chantier, gestion des temps de travail, d'agendas : Outlook a une liste des jours fériés, ...)
    Ça serait un poil + compliqué ici, mais pas grand chose...

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Le fonction DateAdd() pour ajouter un jour (entre autres) à une date

  4. #4
    Provisoirement toléré
    Inscrit en
    Septembre 2005
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 147
    Points : 62
    Points
    62
    Par défaut
    Pourquoi faire une table des jours fériés mais dans ce cas je fais comment pour pas prendre en compte ces jours.

    Merci

  5. #5
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    Citation Envoyé par beurnoir
    Pourquoi faire une table des jours fériés
    Parce que, dans cette table, tu ne mets que les jours fériés.
    À moins que ton logiciel soit pour des gens à la retraite , il y en a beaucoup moins, chaque année, que de jours de travail.
    De plus, il existe des règles de calcul pour automatiser la plupart des jours fériés.
    (Genre : "premier dimanche de printemps" ou similaire...)
    P.S. : recherche "ouvrable" dans la FAQ, y a déjà : lundi de pâques + pentecôte + ...
    Ne me les demande pas, mais cherche sur Internet, si ça t'intéresse...
    Microsoft doit savoir, puisqu'Outlook les calcule tous.
    Citation Envoyé par beurnoir
    mais dans ce cas je fais comment pour pas prendre en compte ces jours.
    Suffit de faire l'inverse :
    - tant que le jour suivant est un jour férié, tu passes au suivant
    - on va inclure ici tous les samedis et les dimanches : ça t'évitera déjà d'avoir à les mettre dans cette table
    Exemple (à tester, je ne l'ai pas fait, n'ayant pas de table des "JoursFériés") :
    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
    '---------------------------------------------------------------------------------------
    ' Procedure : brnIncrement_Click
    ' Date      : 06/10/2005
    ' Author    : PapyTurbo - <a href="http://www.developpez.com" target="_blank">www.developpez.com</a>
    ' Returns   : Le jour de travail suivant
    ' Descript. : À partir de lavaleur du contrôle date (txtDate),
    '               cherche le jour suivant qui ne soit ni un week end,
    '               ni un jour férié.
    '             Les jours fériés sont dans la table "JoursFériés", champ [DateFériée]
    ' Parameters: Aucun.  Utilise le contrôle txtDate, et le modifie directement.
    ' Called    : bouton "Jour de travail suivant" (btnIncrement)
    '---------------------------------------------------------------------------------------
    Private Sub btnIncrement_Click()
    Dim WeekDay As Byte 'valeur : 1 à 7
    'IsWorkDay sera vrai si la date suivante n'est
    '   ni un week end, ni un jour férié
    Dim IsWorkDay As Boolean
        Do
            txtDate = txtDate + 1
            'Vérifie si ça tombe un week end, en prenant Lundi = 1
            WeekDay = DatePart("w", txtDate, vbMonday)
            'Samedi = 6, Dimanche = 7
            If WeekDay < 6 Then
                'Vrai si la date n'est PAS dans la table
                IsWorkDay = IsNull(DFirst("[DateFériée]", "JoursFériés", "[DateFériée]= #" & Format(txtDate, "mm/dd/yyyy") & "#"))
            End If
        Loop While IsWorkDay = False
    End Sub

Discussions similaires

  1. [XL-2010] Extraire les dates à partir du nombre de jours
    Par AKRAM77 dans le forum Excel
    Réponses: 5
    Dernier message: 31/03/2013, 21h02
  2. [T-SQL]jours ouvrés: operation sur les dates
    Par agougeon dans le forum Sybase
    Réponses: 5
    Dernier message: 24/01/2011, 14h36
  3. INversement dasn mois et jour dans les dates
    Par HULK dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 10/07/2007, 10h27
  4. Réponses: 3
    Dernier message: 28/10/2006, 15h47
  5. Réponses: 1
    Dernier message: 25/11/2005, 11h43

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