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
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
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)
[Access] Les bases du débogage => ici
Merci pour ces réponses que j'ai un peu modifiées pour cela fonctionne :Envoyé par Kloun
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")))
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)
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;
pour le mois
serialdate(year(madate);month(madate);1)
et
serialdate(year(madate);month(madate)+1;1-1)
semaine, avec Weekday :
Début :Fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CDate(DateAdd("d", -WeekDay(Now) + 2, Now))Le +2 et +9 est peut-être à adapter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part CDate(DateAdd("d", -WeekDay(Now) + 9, Now))
[Access] Les bases du débogage => ici
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))
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é.
;-)
La seule petite adaptation est de mettre +8 à la place de +9 pour ne pas tomber sur le lundi suivant mais arriver au dimanche.Envoyé par Kloun
Merci
Est-ce que serialdate() est une fonction VBA car je ne trouve pas d'aide dans Access 2003 ?Envoyé par random
La fonction est dateserial et non serialdate.
Et pourquoi écrire 1-1 et non pas 0 ?
Ce qui revient en utilisant l'opérateur \ :
Pour le trimestre
Code : Sélectionner tout - Visualiser dans une fenêtre à part DateSerial(Year(madate), (((Month(madate) - 1) \ 3) * 3) + 4, 0)
Au passage, je préfere largement les solutions de random sans dateAdd. Bravo pour les calculs![]()
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
Partager