|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 311 ![]() |
Bonjour à tous,
Je souhaite calculer automatiquement une date de début et de fin par rapport à un combobox qui contiendrait une liste de type : - Année en cours -1 - Année en cours -2 - Année en cours -3 - Ce trimestre ci - Ce trimestre -1 - Ce trimestre -2 - Ce trimestre -3 - Ce mois-ci - Etc ... Je voudrais écrire une fonction qui remplirait les champs "Date de début" et "Date de fin" automatiquement par rapport à la liste et actualiserait une liste de données basée sur une requête. Je sais à peu près quoi faire, toute ma structure et requête marchent, il ne me manque plus que le calcul des dates dans les 2 champs date après maj du combo. Je suppose qu'il faut utiliser datediff en négatif pour soustraire entre deux dates, mais comment faire pour calculer par exemple une date de début du genre "Année en cours" ou "Trimestre en cours" ou "Trimestre en cours -1". Il faut qu'après maj du combo les 2 champs dates se remplissent correctement du genre : "Année en cours" >>> Date debut = 1/1/2011, Date fin = 31/12/2011 Enfin, je pense que vous comprenez le but ... Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Développeur informatique Inscription : juin 2009 Messages : 944 ![]() |
Bonjour
Penches toi sur des fonctions comme: -DateSerial(y,m,d) qui permet de reconstituer une date en partant de année,mois,jour -DateAdd("interval",nombre,dateDepart) qui permet d'additioner ou soustraire un nombre de jour, mois ou année. - bien évidemment la fonction Date() qui renvoie la date du jour. - sans oublier Day(),Month(),Year() Bon courage
__________________
Frédéric Développeur d'Applications Access |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 311 ![]() |
C'est gentil de répondre, mais je connaissais déjà ces fonctions ...
J'aurai surtout besoin d'aide concernant la mise en place / logique à adopter ... Ce que je veux c'est qu'une date de début et de fin soit injectée dans les champs [date début], [date fin], or je ne vois pas comment utiliser ces fonctions dans ce cas là ... Prenons par exemple "Année en cours -1" qui devra injecter automatiquement > 1/1/2010 dans le premier champ et 31/12/2010 dans le deuxième... Il faut donc que l'intervalle correct donne le premier jour de l'année antérieure ainsi que le dernier , par rapport à l'année en cours déclarée en variable year(now()), je suppose... Comment extraire ces dates ? J'ai essayé : Code :
DateSerial(Year(now()), Month(now()) + 1, 0) Je pense que ça doit pas être très compliqué mais je ne vois pas pour l'instant comment faire... Merci |
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() Frédéric Développeur informatique Inscription : juin 2009 Messages : 944 ![]() |
Bonjour
On va prendre ton exemple Citation:
Code :
__________________
Frédéric Développeur d'Applications Access |
|||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 311 ![]() |
C'est plus qu'une approche cette fois-ci, c'est LA solution !
Mais avant de clore le sujet, pourrait-on expliquer aux non initiés le pourquoi de cette syntaxe "rocambolesque " (entre autre l' espace laissé vide devant la première virgule de la deuxième formule et la parenthèse fermée avant le "- 1" ?). Bref, expliquer un peu la logique à adopter ... Merci mille fois |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Chef d'entreprise Inscription : mai 2011 Messages : 57 ![]() |
Bonjour,
Il n'y a pas d'espace vide devant la première virgule de la deuxième formule mais l'expression "Year(now())", autrement dit, l'année de la date du jour (soit 2011). C'est d'ailleurs ainsi que l'on obtient l'année précédente dans la première formule en retirant 1 à l'année actuelle (Year(now()) -1). Pour finir sur la seconde formule, il faut visualiser le fait que les dates sont stockées sous forme de Réel double où la partie entière représente un nombre de jours et la partie décimale un nombre de secondes. La seconde formule revient donc à fixer la date au premier janvier de l'année en cours (DateSerial(Year(Now()), 1, 1)), puis de retrancher 1, soit 1 jour afin d'arriver au 31 décembre de l'année précédente. |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : janvier 2011 Messages : 311 ![]() |
J'ai enfin saisi ! C'est génial !
Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com