Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul sur dates

8 réponses
Avatar
Epicurien
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.

8 réponses

Avatar
ejc
Salut,
C'est quoi la règle de calcul de qui, quoi, etc. ?
Les données c'est : du 01/01/09 au 30/03/09 ?
Et on doit obtenir : Echeance 31/12/09 ?
Si c'est le cas, quelle règle applique-tu pour calculer l'échéance ?
A+
Jero

"Epicurien" a écrit dans le message de news:
00f59851$0$17160$
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.


Avatar
Epicurien
Merci de la réponse. Voilà La règle.

du 01/01/09 au 30/03/09 Echeance 31/12/09 Pas de
problème, c'est la fin de l'année en cours

01/04/09 au 30/06/09 Echeance 30/03/10 Je
reprends le dernier mois du trimestre précédent et j'ajoute un an

01/07/09 au 30/09/09 Echeance 30/06/10 Idem, je
reprends le dernier mois du trimestre précédent et j'ajoute 1 an

01/10/09 au 31/12/09 Echeance 30/09/10 Idem

01/01/10 au 30/03/10 On recommence mais année
2010 31/12/10

01/04/10 au 30/06/10 Le dernier mois du
trimestre précédent est 03 donc l'échéance sera 30/03/11 1 an en plus

N'hésite pas si j'ai oublié un élément.

"ejc" <~ a écrit dans le message de
news:
Salut,
C'est quoi la règle de calcul de qui, quoi, etc. ?
Les données c'est : du 01/01/09 au 30/03/09 ?
Et on doit obtenir : Echeance 31/12/09 ?
Si c'est le cas, quelle règle applique-tu pour calculer l'échéance ?
A+
Jero

"Epicurien" a écrit dans le message de news:
00f59851$0$17160$
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.






Avatar
Eric
Bonjour,

Dans une requête, tu peux mettre un truc du genre :
Choisir(PartDate("q";[ladate]);SérieDate(Année([ladate]);13;0);SérieDate(Année([ladate])+1;4;0);SérieDate(Année([ladate])+1;7;0);SérieDate(Année([ladate])+1;10;0))
ou en US :
Choose(DatePart("q",[ladate]),DateSerial(Year([ladate]),13,0),DateSerial(Year([ladate])+1,4,0),DateSerial(Year([ladate])+1,7,0),DateSerial(Year([ladate])+1,10,0))

En VBA, quelque chose du genre (vite fait donc à tester):

Function Echeance(unedate)
If IsNull(unedate) Or Not IsDate(unedate) Then Exit Function
Dim rang As Byte
rang = DatePart("q", unedate)
Select Case rang
Case 1
Echeance = DateSerial(Year(unedate), 13, 0)
Case Else
Echeance = DateSerial(Year(unedate) + 1, 2 * rang + rang - 2, 0)
End Select
End Function



Epicurien a écrit :
Merci de la réponse. Voilà La règle.

du 01/01/09 au 30/03/09 Echeance 31/12/09 Pas de
problème, c'est la fin de l'année en cours

01/04/09 au 30/06/09 Echeance 30/03/10 Je
reprends le dernier mois du trimestre précédent et j'ajoute un an

01/07/09 au 30/09/09 Echeance 30/06/10 Idem,
je reprends le dernier mois du trimestre précédent et j'ajoute 1 an

01/10/09 au 31/12/09 Echeance 30/09/10 Idem

01/01/10 au 30/03/10 On recommence mais année
2010 31/12/10

01/04/10 au 30/06/10 Le dernier mois du
trimestre précédent est 03 donc l'échéance sera 30/03/11 1 an en plus

N'hésite pas si j'ai oublié un élément.

"ejc" <~ a écrit dans le message de
news:
Salut,
C'est quoi la règle de calcul de qui, quoi, etc. ?
Les données c'est : du 01/01/09 au 30/03/09 ?
Et on doit obtenir : Echeance 31/12/09 ?
Si c'est le cas, quelle règle applique-tu pour calculer l'échéance ?
A+
Jero

"Epicurien" a écrit dans le message de
news: 00f59851$0$17160$
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.










--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Michel__D
Bonjour,

Epicurien a écrit :
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.



Tu ajoute 1 an puis tu enlève 1 jour à la date du début de la période.
Avatar
Epicurien
Merci à tous mais j'ai honte de dire que je ne comprends pas.

Pourriez vou me donner l'exemple de:

15/09/09 date d'inscription, la date d'échéance est alors la fin du dernier
mois du trimestre précédent; soit 30/06/10
avec une année en plus. La date d'inscription est toujours la date du jour.

C'est l'année en plus que je ne sais pas faire car les trimestres je pense
que je peux faire avec un select ou if.

Merci par avance de vos réponses.

Heureux de voir que tu es toujours présent Eric.

"Michel__D" a écrit dans le message de
news:
Bonjour,

Epicurien a écrit :
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.



Tu ajoute 1 an puis tu enlève 1 jour à la date du début de la période.


Avatar
Eric
Bonjour,

Tu copies la fonction Echeance(unedate) dans un module de portée globale
et tu l'utilises aussi bien dans une requête ou un formulaire de la
manière suivante:

Echeance([LeChampQuiContientLaDate]) dans une requête

ou

= Echeance([LeChampQuiContientLaDate]) dans la source d'un contrôle de
formulaire

Voila

Epicurien a écrit :
Merci à tous mais j'ai honte de dire que je ne comprends pas.

Pourriez vou me donner l'exemple de:

15/09/09 date d'inscription, la date d'échéance est alors la fin du
dernier mois du trimestre précédent; soit 30/06/10
avec une année en plus. La date d'inscription est toujours la date du jour.

C'est l'année en plus que je ne sais pas faire car les trimestres je
pense que je peux faire avec un select ou if.

Merci par avance de vos réponses.

Heureux de voir que tu es toujours présent Eric.

"Michel__D" a écrit dans le
message de news:
Bonjour,

Epicurien a écrit :
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.



Tu ajoute 1 an puis tu enlève 1 jour à la date du début de la période.






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Michel__D
Bonjour,

Voici un exemple de formule utilisable aussi bien en VBA
que dans une requête (affichage mode SQL) :

DateAdd("d",-1,DateSerial(Year(LaDate)+1,((DatePart("q",LaDate)-1)*3)+1,1))


Epicurien a écrit :
Merci à tous mais j'ai honte de dire que je ne comprends pas.

Pourriez vou me donner l'exemple de:

15/09/09 date d'inscription, la date d'échéance est alors la fin du
dernier mois du trimestre précédent; soit 30/06/10
avec une année en plus. La date d'inscription est toujours la date du jour.

C'est l'année en plus que je ne sais pas faire car les trimestres je
pense que je peux faire avec un select ou if.

Merci par avance de vos réponses.

Heureux de voir que tu es toujours présent Eric.

"Michel__D" a écrit dans le
message de news:
Bonjour,

Epicurien a écrit :
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.



Tu ajoute 1 an puis tu enlève 1 jour à la date du début de la période.





Avatar
Eric
Bonjour,

Sur la base de la proposition de Michel_D et en faisant l'économie de la
fonction DateAdd() ou AjDate() en Fr :

Dans le générateur de requête
SérieDate(Année([LaDate])+1;(PartDate("q";[LaDate])-1)*3+1;0)

En SQL ou VBA :
DateSerial(Year([LaDate])+1,(DatePart("q",[LaDate])-1)*3+1,0)

Epicurien a écrit :
Merci à tous mais j'ai honte de dire que je ne comprends pas.

Pourriez vou me donner l'exemple de:

15/09/09 date d'inscription, la date d'échéance est alors la fin du
dernier mois du trimestre précédent; soit 30/06/10
avec une année en plus. La date d'inscription est toujours la date du jour.

C'est l'année en plus que je ne sais pas faire car les trimestres je
pense que je peux faire avec un select ou if.

Merci par avance de vos réponses.

Heureux de voir que tu es toujours présent Eric.

"Michel__D" a écrit dans le
message de news:
Bonjour,

Epicurien a écrit :
Bonjour à tous.

Je sèche sur une procédure à écrire. Voici les données.

du 01/01/09 au 30/03/09 Echeance 31/12/09
du 01/04/09 au 30/06/09 Echeance 31/03/10
du 01/07/09 au 30/09/09 Echeance 30/06/10
du 01/10/09 au 31/12/09 Echeance 30/09/10
du 01/01/10 au 30/03/10 Echeance 31/12/10
du 01/04/10 au 30/06/10 Echeance 31/03/11

etc...et que les années soient prises en compte.

Merci par avance de votre aide.



Tu ajoute 1 an puis tu enlève 1 jour à la date du début de la période.






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr