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)
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))
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager