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

Incrémentation de Dates

8 réponses
Avatar
grandtroll
Bonjour à tous

Je cherche à créer une incrémentation d'une date en fonction d'une condition.

Je dispose d'une date de traitement (D1) pour calculer la date de renouvellement (D2:D1 AjDate +4mois).
Ma difficulté réside dans le fait que je souhaite garder D1 comme référence pour le calcul du prochain renouvellement (D3:D1 AjDate +8mois) etc ....

------
voilà ma table T_1 contient notamment :
date_traitement (D1)
renouvellement (D2) puis (D3) puis (D4) etc...

la table T_2 comporte :
date_renouv
traité (O/N)

mon idée est :
si (traité.T_2) est vrai alors (renouvellement.T_1) est incrémenté de 4 mois.
au bout de 4 mois quand la prochaine échéance (T_2) est traitée alors (renouvellement.T_1) est incrémenté de 8 mois et ainsi de suite ... de 4 mois en 4 mois.

je ne peux calculer (renouvellement.T_1) sur la base de (date_renouv.T_2) car cette date est la date d'envoi du courrier. Je dois garder absolument (date_traitement.T_1) comme référence de base pour une éventuelle routine qui ajoute +4 mois !

merci

8 réponses

Avatar
Gloops
grandtroll a écrit, le 19/04/2013 10:56 :
(D2:D1 AjDate +4mois).



Bonjour,

Je dois avouer que j'éprouve quelque difficulté à interpréter cet te
formule, et il ne m'a pas semblé que je puisse être d'une quelconque
utilité sur le reste avant d'avoir compris ça ...

Le double point représente-t-il une division, ou s'interprète-t-il co mme
sous Excel ?

AjDate représente-t-il un opérateur ?

Serait-ce quelque chose comme AddDate mais avec une syntaxe différente ?


D'ailleurs, pour ce qui est d'ajouter 4 mois, à ma connaissance c'est
une notion à préciser par une fonction personnalisée. On peut faire une
cote mal taillée en disant qu'on ajoute 4 * 30 jours, on peut faire une
fonction qui va au même quantième dans le mois mais 4 mois plus tard ...
Avatar
grandtroll
Le vendredi 19 Avril 2013 à 10:56 par grandtroll :
Bonjour à tous

Je cherche à créer une incrémentation d'une date en
fonction d'une condition.

Je dispose d'une date de traitement (D1) pour calculer la date de
renouvellement (D2:D1 AjDate +4mois).
Ma difficulté réside dans le fait que je souhaite garder D1 comme
référence pour le calcul du prochain renouvellement (D3:D1 AjDate
+8mois) etc ....

------
voilà ma table T_1 contient notamment :
date_traitement (D1)
renouvellement (D2) puis (D3) puis (D4) etc...

la table T_2 comporte :
date_renouv
traité (O/N)

mon idée est :
si (traité.T_2) est vrai alors (renouvellement.T_1) est
incrémenté de 4 mois.
au bout de 4 mois quand la prochaine échéance (T_2) est
traitée alors (renouvellement.T_1) est incrémenté de 8
mois et ainsi de suite ... de 4 mois en 4 mois.

je ne peux calculer (renouvellement.T_1) sur la base de (date_renouv.T_2) car
cette date est la date d'envoi du courrier. Je dois garder absolument
(date_traitement.T_1) comme référence de base pour une
éventuelle routine qui ajoute +4 mois !

merci


Le double point est effectivement une division et AjDate correspond bien à AddDate.

Je reformule :
Je souhaite obtenir dans tous les cas, une date de renouvellement initiale qui correspond à +4 mois d'une dateX.
Dès que ce renouvellement a été traité, la date de renouvellement est incrémentée de +4 mois et le traitement est mis à zéro.
et ainsi de suite .....

j'avais opté pour 2 tables distinctes afin de connaître le nombre de renouvellements par unité.

j'espère avoir été plus clair
Avatar
Gloops
grandtroll a écrit, le 19/04/2013 16:45 :
Le double point est effectivement une division et AjDate correspond bie n à
AddDate.

Je reformule :
Je souhaite obtenir dans tous les cas, une date de renouvellement initi ale qui
correspond à +4 mois d'une dateX.
Dès que ce renouvellement a été traité, la date de renouvelleme nt est
incrémentée de +4 mois et le traitement est mis à zéro.
et ainsi de suite .....

j'avais opté pour 2 tables distinctes afin de connaître le nombre d e
renouvellements par unité.

j'espère avoir été plus clair




Bon, alors si j'ai bien compris, il y a deux questions :
- la syntaxe pour l'appel de la fonction
- et le moyen de stocker le résultat ?

Ah oui alors on a dit que c'était par unité ...
Qu'est-ce qui existe comme unités, exactement ?
Avatar
MULLER
Le 19/04/2013 10:56, grandtroll a écrit :
Bonjour à tous

Je cherche à créer une incrémentation d'une date en fonction d'une condition.

Je dispose d'une date de traitement (D1) pour calculer la date de renouvellement
(D2:D1 AjDate +4mois).
Ma difficulté réside dans le fait que je souhaite garder D1 comme référence pour
le calcul du prochain renouvellement (D3:D1 AjDate +8mois) etc ....

------
voilà ma table T_1 contient notamment :
date_traitement (D1)
renouvellement (D2) puis (D3) puis (D4) etc...

la table T_2 comporte :
date_renouv
traité (O/N)

mon idée est :
si (traité.T_2) est vrai alors (renouvellement.T_1) est incrémenté de 4 mois.
au bout de 4 mois quand la prochaine échéance (T_2) est traitée alors
(renouvellement.T_1) est incrémenté de 8 mois et ainsi de suite ... de 4 mois en
4 mois.

je ne peux calculer (renouvellement.T_1) sur la base de (date_renouv.T_2) car
cette date est la date d'envoi du courrier. Je dois garder absolument
(date_traitement.T_1) comme référence de base pour une éventuelle routine qui
ajoute +4 mois !

merci




Attention avec les dates , si SQL il faut que les dates soient au format US

Dim SQL_Text As String


' MsgBox MyDate

us1date = Format(MyDate, "mm/dd/yyyy")
us2date = Format(DateAdd("m", 1, MyDate), "mm/dd/yyyy")' ( dans un
mois)

' MsgBox us1Date


'1 creer une action et mettre le résultat dans le fichier temporaire
SQL_Text = "INSERT INTO [FICHIERTMP] " _
& "SELECT * " _
& "FROM [FICHIER SOCIAL] " _
& "WHERE AU BETWEEN " & "#" & us1date & "# AND #" &
us2date & "# ;"


DoCmd.RunSQL SQL_Text, True
Avatar
grandtroll
Le vendredi 19 Avril 2013 à 10:56 par grandtroll :
Bonjour à tous

Je cherche à créer une incrémentation d'une date en
fonction d'une condition.

Je dispose d'une date de traitement (D1) pour calculer la date de
renouvellement (D2:D1 AjDate +4mois).
Ma difficulté réside dans le fait que je souhaite garder D1 comme
référence pour le calcul du prochain renouvellement (D3:D1 AjDate
+8mois) etc ....

------
voilà ma table T_1 contient notamment :
date_traitement (D1)
renouvellement (D2) puis (D3) puis (D4) etc...

la table T_2 comporte :
date_renouv
traité (O/N)

mon idée est :
si (traité.T_2) est vrai alors (renouvellement.T_1) est
incrémenté de 4 mois.
au bout de 4 mois quand la prochaine échéance (T_2) est
traitée alors (renouvellement.T_1) est incrémenté de 8
mois et ainsi de suite ... de 4 mois en 4 mois.

je ne peux calculer (renouvellement.T_1) sur la base de (date_renouv.T_2) car
cette date est la date d'envoi du courrier. Je dois garder absolument
(date_traitement.T_1) comme référence de base pour une
éventuelle routine qui ajoute +4 mois !

merci


bonjour

@Muller : merci pour cette réponse qui je l'avoue reste abscons pour mon niveau débutant. Je pense avoir compris le principe des USDATE (ma date de référence puis un ajout de 1 mois). En revanche j'ai du mal avec le BETWEEN, en l’occurrence vous sélectionnez tout si le tempo remplit la condition "entre date1 et date2" ???

@Gloops : que définissez vous sous "UNITE" ? les champs, les enregistrements ????
Avatar
Gloops
grandtroll a écrit, le 22/04/2013 09:51 :
@Gloops : que définissez vous sous "UNITE" ? les champs, les enregist rements
????



Ce n'est pas ma base de données : c'était une question, que je posais .
Avatar
MULLER
Le 22/04/2013 09:51, grandtroll a écrit :
Le vendredi 19 Avril 2013 à 10:56 par grandtroll :
Bonjour à tous

Je cherche à créer une incrémentation d'une date en
fonction d'une condition.

Je dispose d'une date de traitement (D1) pour calculer la date de
renouvellement (D2:D1 AjDate +4mois).
Ma difficulté réside dans le fait que je souhaite garder D1 comme
référence pour le calcul du prochain renouvellement (D3:D1 AjDate
+8mois) etc ....

------
voilà ma table T_1 contient notamment :
date_traitement (D1)
renouvellement (D2) puis (D3) puis (D4) etc...

la table T_2 comporte :
date_renouv
traité (O/N)

mon idée est :
si (traité.T_2) est vrai alors (renouvellement.T_1) est
incrémenté de 4 mois.
au bout de 4 mois quand la prochaine échéance (T_2) est
traitée alors (renouvellement.T_1) est incrémenté de 8
mois et ainsi de suite ... de 4 mois en 4 mois.

je ne peux calculer (renouvellement.T_1) sur la base de (date_renouv.T_2) car
cette date est la date d'envoi du courrier. Je dois garder absolument
(date_traitement.T_1) comme référence de base pour une
éventuelle routine qui ajoute +4 mois !

merci


bonjour

@Muller : merci pour cette réponse qui je l'avoue reste abscons pour mon niveau
débutant. Je pense avoir compris le principe des USDATE (ma date de référence
puis un ajout de 1 mois). En revanche j'ai du mal avec le BETWEEN, en
l’occurrence vous sélectionnez tout si le tempo remplit la condition "entre
date1 et date2" ???




Oui , cette routine montre bien tous les problèmes que l'on peut
rencontrer avec access.
- SQL demande que les dates soient au format USA
- ne pas oublier de mettre les dates entre ## ( oui car le 'Format'
renvoi un string )
- choisir une date jour/mois +X ne pose pas de problème avec DateAdd
- avec cette routine je crée une nouvelle base de donnée qui ne
contient que les enregistrements qui ont une date 'AU' comprise entre
mes choix.


@Gloops : que définissez vous sous "UNITE" ? les champs, les enregistrements
????

Avatar
grandtroll
Le lundi 22 Avril 2013 à 21:12 par MULLER :
Le 22/04/2013 09:51, grandtroll a écrit :
Le vendredi 19 Avril 2013 à 10:56 par grandtroll :
Bonjour à tous

Je cherche à créer une incrémentation d'une date en
fonction d'une condition.

Je dispose d'une date de traitement (D1) pour calculer la date de
renouvellement (D2:D1 AjDate +4mois).
Ma difficulté réside dans le fait que je souhaite garder D1
comme
référence pour le calcul du prochain renouvellement (D3:D1
AjDate
+8mois) etc ....

------
voilà ma table T_1 contient notamment :
date_traitement (D1)
renouvellement (D2) puis (D3) puis (D4) etc...

la table T_2 comporte :
date_renouv
traité (O/N)

mon idée est :
si (traité.T_2) est vrai alors (renouvellement.T_1) est
incrémenté de 4 mois.
au bout de 4 mois quand la prochaine échéance (T_2) est
traitée alors (renouvellement.T_1) est incrémenté de 8
mois et ainsi de suite ... de 4 mois en 4 mois.

je ne peux calculer (renouvellement.T_1) sur la base de (date_renouv.T_2) car
cette date est la date d'envoi du courrier. Je dois garder absolument
(date_traitement.T_1) comme référence de base pour une
éventuelle routine qui ajoute +4 mois !

merci



bonjour

@Muller : merci pour cette réponse qui je l'avoue reste abscons pour
mon niveau
débutant. Je pense avoir compris le principe des USDATE (ma date de
référence
puis un ajout de 1 mois). En revanche j'ai du mal avec le BETWEEN, en
l’occurrence vous sélectionnez tout si le tempo remplit la
condition "entre
date1 et date2" ???





Oui , cette routine montre bien tous les problèmes que l'on peut
rencontrer avec access.
- SQL demande que les dates soient au format USA
- ne pas oublier de mettre les dates entre ## ( oui car le 'Format'
renvoi un string )
- choisir une date jour/mois +X ne pose pas de problème avec DateAdd
- avec cette routine je crée une nouvelle base de donnée qui ne
contient que les enregistrements qui ont une date 'AU' comprise entre
mes choix.


@Gloops : que définissez vous sous "UNITE" ? les champs, les
enregistrements
????




@ MULLER : merci pour ces explications.

@GLOOPS : oui d'accord mais vous citiez "unité" .... ???
je développe alors le contenu de la base

T1
numerox1
date_creation
date_traitement
dernier_renouv

T2
numerox2
numerox1
renouvellement
traite

Quand date_traitement (T1) est renseignée alors calculer renouvellement (T2) (Úte_traitement + 4 mois).
Quand traite (T2) est vrai alors inscrire renouvellement (T2) dans dernier_renouv (T1), calculer renouvellement (T2) (Úte_traitement +8 mois) remettre traite en faux.

merci j'espère avoir été clair
Quand renouvellement (T2) est traité alors "remettre le