Année glissante
Le
Douda
Bonjour,
Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les douze
derniers mois.
J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.
Merci de votre aide.
Nadia
Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les douze
derniers mois.
J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.
Merci de votre aide.
Nadia

Poser une question


Entre Mois(Maintenant())-12 Et Mois(Maintenant())
Je viens de comprendre mon erreur, pourquoi Mois()-12 marche pas.
J'ai essayé qqch du genre entre (année(maintenant)-1) et
mois(maintenant) Et année(maintenant) et mois(maintenant) !
Bonjour Nadia,
Comme ça à chaud, je dirais quelque chose comme
DateFiltree >= (Now() - 365) AND DateFiltree <= Now()
Je n'exclue pas qu'il faille un peu formater les dates aux bornes, donc
"DateFiltree >= DateSerial(" & Year(Now() - 365) & ", " & Month(Now() -
365) & ", " & Day(Now() - 365) & ") AND DateFiltree <= DateSerial(" &
Year(Now()) & "," & Month(Now()) & ", " & Day(Now()) & ")"
Je laisse gérer la question de la coupure de ligne liée à la public ation
dans le newsgroup ...
Il est possible aussi que la gymnastique que je viens de proposer avec
DateSerial soit nécessaire sur la date calculée d'il y a un an, mais pas
sur celle d'aujourd'hui.
Comme tu as peut-être compris, j'ai une certaine expérience sur Acces s,
mais je n'ai pas le produit à la maison, donc je réponds de mémoire , je
te laisse tester.
J'ai essayé de faire attention aux fermetures de parenthèses et de
guillemets, dans le bon ordre. C'est au test qu'il se confirme si je me
suis planté ou pas.
Une chose à préciser encore peut-être, ce que j'ai proposé comme requête
prend en charge les 365 derniers jours écoulés, donc un an. Si on veu t
prendre en compte des mois calendaires entiers, alors il faudra mettre
la bonne valeur dans l'argument Day. A priori, ce sera 1, et si on veut
le dernier jour du mois précédent on retire 1.
Donc je fournis des éléments de réflexion, il reste à s'en servir ;)
Dernier jour du mois en cours : il y a eu un certain nombre de fils
là-dessus ici il y a quelques années. J'ai oublié la proposition la plus
élégante, alors je retiens juste le principe : évaluer la date du
premier du mois suivant, et en retirer 1.
DtTemp = Now() + 35 'une date quelconque au cours du mois suivant
DernierJourMoisEnCours = DateSerial(Year(DtTemp), Month(DtTemp), 1) - 1
ce qui peut aussi s'exprimer :
DernierJoursMoisEnCours = DateSerial(Year(DtTemp), Month(DtTemp), 0)
En cherchant dans les FAQ on va bien trouver quelque chose de mieux. :)
C'est normal : 'mois' retourne un nombre entre 1 et 12.
Quand tu dis les douze derniers mois, pour moi, le 17/11/11, cela veut dire
entre le 1/10/10 et le 31/10/11 inclus.
WHERE ((([Table].[Champ]) Between
DateSerial(Year(Date()),Month(Date())-13,1) And
DateSerial(Year(Date()),Month(Date()),-1)));
Entre SérieDate(Année(Date());Mois(Date())-13;1) Et
SérieDate(Année(Date());Mois(Date());-1)
Cdt
"Douda"
Bonjour,
Je cherche à faire un filtre année glissante sur un champ pour que
chaque fois que la requête s'exécute, elle prenne en compte les douze
derniers mois.
J'ai essayé "Entre Mois(MonChamp)-12 Et Mois(Maintenant())" mais ça a
pas l'air de marcher. Aucun message d'erreur, juste aucun
enregistrement alors que j'en ai.
Merci de votre aide.
Nadia