OVH Cloud OVH Cloud

Modification enregistrements avec date

21 réponses
Avatar
Isabelle ex Isa :-)
Bonjour

Comment allez-vous en ce mardi ?

En cet fin d'ann=E9e j'ai des mises =E0 jour =E0 effectuer dans diff=E9rents=

fichiers ( nouvelle ann=E9e oblige)

J'ai donc une base de donn=E9e (syst=E8me d'agenda hebdomaire) avec une
table comprenant en autres
date de d=E9but date de fin semaine etc soit 52 enregistrements pour
2007 (du lundi au vendredi)
01/01/2007 05/01/2007 1
08/01/2007 12/01/2007 2

Existe-t-il un moyen de modifier ces dates d'un coup de baguette
magique ?
au lieu de ressaisir les dates
31/12/2007 04/01/2008 1
07/01/2008 11/01/2008 2

Merci d'avance =E0 la bonne f=E9e

10 réponses

1 2 3
Avatar
Thierry (ze Titi)
Bonjour !

Merci les Dupont ;-)

J'ai remplacé uniquement les virgules par des points virgules et
Access a transformé en
AjDate("d";-1;AjDate("y";1;"date debut"))

Pourquoi?

Et maintenant l'erreur est "Type de données incompatibles dans
l'expression du critère"

Isabelle ex Isa ;-)


AjDate("j";-1;AjDate("a";1;"date debut"))

peut-être ?

--
Cordialement,
Thierry

tout pour Access :
http://www.mpfa.info

Avatar
Eric
Bonsoir,

Si je me trompe pas, il faut mettre aaaa pour année (idem en US)
donc je dirai :
AjDate("j";-1;AjDate("aaaa";1;[Date Debut]))

Rem : ceci ne te donnera pas le 1er jour de la semaine n°1 d'une année
quelconque.

Bonjour !

Merci les Dupont ;-)

J'ai remplacé uniquement les virgules par des points virgules et
Access a transformé en
AjDate("d";-1;AjDate("y";1;"date debut"))

Pourquoi?

Et maintenant l'erreur est "Type de données incompatibles dans
l'expression du critère"

Isabelle ex Isa ;-)


AjDate("j";-1;AjDate("a";1;"date debut"))

peut-être ?



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


Avatar
Eric
.../...

Je viens de voir que "y" ou "a" suivant la langue correspond à Jour de
l'année. Qu'est ce que ça peut bien être ça ? Idem pour w (jour de la
semaine). Si quelqu'un a des exemples "frappant", je suis preneur.
Exemples mettant en évidence la conséquence sur la date suivant que l'on
utilise d ou y ou w (respectivement j ou a ou e)

Bonsoir,

Si je me trompe pas, il faut mettre aaaa pour année (idem en US)
donc je dirai :
AjDate("j";-1;AjDate("aaaa";1;[Date Debut]))

Rem : ceci ne te donnera pas le 1er jour de la semaine n°1 d'une année
quelconque.



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

Avatar
Isabelle ex Isa :-)
Bonjour Eric

Merci pour ta syntaxe => pas d'erreur d'expression ni de syntaxe

mais le résultat n'est pas bon
exemple soit du lundi au vendredi
31/12/2007 04/01/2008
07/01/2008 11/01/2008
etc

si j'applique la mise à jour cela donne
30/12/2008 03/01/2009
06/01/2009 10/01/2009

or le résultat devrait être semaine 1 et 2 de 2009 soit
du lundi 29/12/2008 au vendredi 2 janvier 2009
du lundi 05/01/2009 au vendredi 9 janvier 2009

Si non,
J'ai vu sur le net que l'expression pouvait être différente selon la
langue
Francais :
1. AjDate("j";29;[Date facture])
Anglais:
1. AddDate("d";29;[Date facture])

Isabelle ex Isa ;-)
Avatar
Eric
Bonjour Isa,

C'est bien ce que je signalais dans mon PS ;-)
Je pense que tu devrais essayer la fonction de W. Stucki :
http://homepage.bluewin.ch/wstucki//CalculsDates.htm#LundiSem
Le nouveau lundi devrait être calculé ainsi :
LeLundi: LundiSemaineAnnéeQuelconque([nosemaine];Année([datefin])+1)

A vérifier sur une série de dates sur plusieurs années.

Bonjour Eric

Merci pour ta syntaxe => pas d'erreur d'expression ni de syntaxe

mais le résultat n'est pas bon
exemple soit du lundi au vendredi
31/12/2007 04/01/2008
07/01/2008 11/01/2008
etc

si j'applique la mise à jour cela donne
30/12/2008 03/01/2009
06/01/2009 10/01/2009

or le résultat devrait être semaine 1 et 2 de 2009 soit
du lundi 29/12/2008 au vendredi 2 janvier 2009
du lundi 05/01/2009 au vendredi 9 janvier 2009

Isabelle ex Isa ;-)


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

Avatar
Fabien
Bonjour Isa,

C'est bien ce que je signalais dans mon PS ;-)
Je pense que tu devrais essayer la fonction de W. Stucki :
http://homepage.bluewin.ch/wstucki//CalculsDates.htm#LundiSem
Le nouveau lundi devrait être calculé ainsi :
LeLundi: LundiSemaineAnnéeQuelconque([nosemaine];Année([datefin])+1)

A vérifier sur une série de dates sur plusieurs années.

Bonjour Eric

Merci pour ta syntaxe => pas d'erreur d'expression ni de syntaxe

mais le résultat n'est pas bon
exemple soit du lundi au vendredi
31/12/2007 04/01/2008
07/01/2008 11/01/2008
etc

si j'applique la mise à jour cela donne
30/12/2008 03/01/2009
06/01/2009 10/01/2009

or le résultat devrait être semaine 1 et 2 de 2009 soit
du lundi 29/12/2008 au vendredi 2 janvier 2009
du lundi 05/01/2009 au vendredi 9 janvier 2009

Isabelle ex Isa ;-)


Just for fun !

Function test()
'Les lundis (au soleil ...)
'et le vendredi (chouette bientôt le week-end)
'en partant du 01/01 de l'année
Dim ma_date, date_deb As Date
Dim Num_Semaine As Integer
date_deb = "01/01/2008"

ma_date = date_deb
While Weekday(ma_date) <> 2
ma_date = DateAdd("d", -1, ma_date)
Wend
Debug.Print ma_date, DateAdd("d", 4, ma_date), Format(DateAdd("d",
4, ma_date), "ww")'un peu compliqué quant on sait que c'est forcément la
semeine 1 ;-)
For Num_Semaine = 2 To 52
ma_date = DateAdd("d", 7, ma_date)
Debug.Print ma_date, DateAdd("d", 4, ma_date), Format(ma_date,
"ww")'pareil c'est forcement la semaine Num_Semaine ;-)

Next Num_Semaine
End Function

A adapter


Avatar
Eric
Bonjour,

Et quid de la semaine 53 ? Par exemple comme celle-ci :
http://cjoint.com/?mtn7CoG2wn

D'ailleurs le problème est le même avec la fonction de W. Stucki, je crois.


Just for fun !
Function test()
'Les lundis (au soleil ...)
'et le vendredi (chouette bientôt le week-end)
'en partant du 01/01 de l'année
Dim ma_date, date_deb As Date
Dim Num_Semaine As Integer
date_deb = "01/01/2008"

ma_date = date_deb
While Weekday(ma_date) <> 2
ma_date = DateAdd("d", -1, ma_date)
Wend
Debug.Print ma_date, DateAdd("d", 4, ma_date), Format(DateAdd("d",
4, ma_date), "ww")'un peu compliqué quant on sait que c'est forcément la
semeine 1 ;-)
For Num_Semaine = 2 To 52
ma_date = DateAdd("d", 7, ma_date)
Debug.Print ma_date, DateAdd("d", 4, ma_date), Format(ma_date,
"ww")'pareil c'est forcement la semaine Num_Semaine ;-)

Next Num_Semaine
End Function

A adapter


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

Avatar
Fabien
Bonjour,

Et quid de la semaine 53 ? Par exemple comme celle-ci :
http://cjoint.com/?mtn7CoG2wn

D'ailleurs le problème est le même avec la fonction de W. Stucki, je crois.


Just for fun !
Function test()
'Les lundis (au soleil ...)
'et le vendredi (chouette bientôt le week-end)
'en partant du 01/01 de l'année
Dim ma_date, date_deb As Date
Dim Num_Semaine As Integer
date_deb = "01/01/2008"

ma_date = date_deb
While Weekday(ma_date) <> 2
ma_date = DateAdd("d", -1, ma_date)
Wend
Debug.Print ma_date, DateAdd("d", 4, ma_date), Format(DateAdd("d",
4, ma_date), "ww")'un peu compliqué quant on sait que c'est forcément
la semeine 1 ;-)
For Num_Semaine = 2 To 52
ma_date = DateAdd("d", 7, ma_date)
Debug.Print ma_date, DateAdd("d", 4, ma_date), Format(ma_date,
"ww")'pareil c'est forcement la semaine Num_Semaine ;-)

Next Num_Semaine
End Function

A adapter


Bonjour,

Peut on considérer que la semaine 53 est la 1ere semaine de l'année
suivante ?
J'avais bien vu le probleme puisque 53 c'est ce que me retournait le 1er
debug.print sous la forme suivante: Debug.Print ma_date, DateAdd("d", 4,
ma_date), Format(ma_date, "ww")
C'est selon le désir de l'utilisatrice ;-)


Avatar
Isabelle
Bonsoir tout le monde

eh bien ! Je ne pensais pas qu'une simple petite question de ma part
aurait donner une telle discussion

N'ayant pas trouvé la syntaxe idéale j'ai donc pour cette année fais une
simple requête mise à jour avec [date début]+ 364 et vérifier le
résultat avec un calendrier
mais pour les années futures....


Isabelle ex isa ;-)
Avatar
Gilles MOUGNOZ
Bonjour, Isabelle
S'il s'agit de garder le même jour de la semaine pour tes dates, il faut,
comme tu le fait, leur ajouter le multiple de 7 le plus proche d'une année
entière, soit 364 jours (52 semaines de 7 jours).
Toutefois, une année comptant 365 jours (ou 366 pour 2008, par exemple), tu
vas rapidement voir apparaître un décalage. C'est pour cela que certaines
années comptent 53 semaines, afin de rattraper ce décalage. Il faudrait donc
compléter ta base en ajoutant une 53ème semaine facultative.
Je n'ai pas trouvé de formule pour déterminer si une année compte 52 ou 53
semaines, simplement que 2009 sera la prochaine année de 53 semaines. Le
problème n'est pas si simple. De plus, les américains et les européens
n'ayant pas la même définition de la première semaine de l'année: la norme
américaine dit que c'est la semaine qui contient le 1er janvier alors que la
norme ISO (en vigueur en Europe) retient la première semaine comptant au
moins quatre jours sur la nouvelle année. Les deux normes seront donc
d'accord si le 1er janvier tombe un lundi, un mardi, un mercredi ou un
jeudi. Sinon, le jour de l'An est en dernière semaine pour les Européens.
Pour l'année qui suit une année de 53 semaines, il faut décaler les dates de
371 jours (364+7) et ne pas renseigner la 53ème semaine.
J'espère que toutes ces informations te seront utiles pour ton travail et
que quelqu'un pourra t'aider pour la formule calculant le nombre de
semaines...
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Bonsoir tout le monde

eh bien ! Je ne pensais pas qu'une simple petite question de ma part
aurait donner une telle discussion

N'ayant pas trouvé la syntaxe idéale j'ai donc pour cette année fais une
simple requête mise à jour avec [date début]+ 364 et vérifier le résultat
avec un calendrier
mais pour les années futures....


Isabelle ex isa ;-)



1 2 3