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 :

Calcul de dates : début de semaine, de mois, de trimestre


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Calcul de dates : début de semaine, de mois, de trimestre
    Bonjour,

    J'aimerais savoir comment je peux faire pour calculer les dates suivantes :
    - début et fin de semaine courante ;
    - début et fin de mois courant ;
    - debut et fin de trimestre courant.

    Merci d'avance

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Début de mois : cdate("01" & format (LaDate, "MM/YYYY") )
    Fin de mois : dateadd("d",cdate("01" & format (dateadd("M",1,LaDate), "MM/YYYY") )), -1)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Kloun
    Début de mois : cdate("01" & format (LaDate, "MM/YYYY") )
    Fin de mois : dateadd("d",cdate("01" & format (dateadd("M",1,LaDate), "MM/YYYY") )), -1)
    Merci pour ces réponses que j'ai un peu modifiées pour cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CDate("01/" & Format(Now, "MM/YYYY"))
    DateAdd("d", -1, CDate("01/" & Format(DateAdd("M", 1, Now), "MM/YYYY")))

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    trimestre
    début
    serialdate(year(madate);(iNT((MOnth(madate)-1)/3)*3)+1;1)
    fin
    serialdate(year(madate);(iNT((MOnth(madate)-1)/3)*3)+4;1-1)

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour la semaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT matable.madate, [madate]+1-Weekday([madate]) AS débutsemaine, [madate]+7-Weekday([madate]) AS finsemaine
    FROM matable;

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour le mois
    serialdate(year(madate);month(madate);1)
    et
    serialdate(year(madate);month(madate)+1;1-1)

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    semaine, avec Weekday :
    Début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDate(DateAdd("d", -WeekDay(Now) + 2, Now))
    Fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDate(DateAdd("d", -WeekDay(Now) + 9, Now))
    Le +2 et +9 est peut-être à adapter.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Pour le trimestre voici :
    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
     
                iMois = Format(Now, "m")
     
                Select Case iMois
                    Case 1 To 3
                        iTrimestre = 1
                    Case 4 To 6
                        iTrimestre = 2
                    Case 7 To 9
                        iTrimestre = 3
                    Case 10 To 12
                        iTrimestre = 4
                End Select
     
                Me.DTdebut = CDate("01/" & (iTrimestre - 1) * 3 + 1 & Format(Now, "/YYYY"))
                Me.DTfin = DateAdd("d", -1, DateAdd("q", 1, Me.DTdebut))

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Merci pour vos réponses.
    J'ai vu que la mienne sur les trimestres est arrivée alors que vous me l'aviez déjà donné.

    ;-)

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Kloun
    semaine, avec Weekday :
    Début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDate(DateAdd("d", -WeekDay(Now) + 2, Now))
    Fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDate(DateAdd("d", -WeekDay(Now) + 9, Now))
    Le +2 et +9 est peut-être à adapter.
    La seule petite adaptation est de mettre +8 à la place de +9 pour ne pas tomber sur le lundi suivant mais arriver au dimanche.

    Merci

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par random
    trimestre
    début
    serialdate(year(madate);(iNT((MOnth(madate)-1)/3)*3)+1;1)
    fin
    serialdate(year(madate);(iNT((MOnth(madate)-1)/3)*3)+4;1-1)
    Est-ce que serialdate() est une fonction VBA car je ne trouve pas d'aide dans Access 2003 ?

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    regarde à datesérie dans l'aide access

  13. #13
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    La fonction est dateserial et non serialdate.

    Et pourquoi écrire 1-1 et non pas 0 ?

    Ce qui revient en utilisant l'opérateur \ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSerial(Year(madate), (((Month(madate) - 1) \ 3) * 3) + 4, 0)
    Pour le trimestre

    Au passage, je préfere largement les solutions de random sans dateAdd. Bravo pour les calculs

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    tofalu tu as raison 1-1 =0
    en fait je mets 1-1 pour des raisons de lisibilité c'est assez bête je le reconnais

Discussions similaires

  1. Récupération Date début de semaine dans Talend
    Par Clement M dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 31/10/2014, 09h27
  2. Dates début et fin pour chaque semaine d'un mois.
    Par smailhop dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/12/2009, 16h45
  3. [PHP 5.2] [Dates] début et fin de mois précédent
    Par kaboume dans le forum Langage
    Réponses: 2
    Dernier message: 13/08/2009, 14h09
  4. Réponses: 14
    Dernier message: 30/12/2005, 19h31
  5. Calcul de date en années ET mois
    Par priest69 dans le forum Access
    Réponses: 2
    Dernier message: 26/09/2005, 18h53

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