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

Calculer automatiquement le premier jour de chaque semaine

10 réponses
Avatar
pyfux
Bonjour,

J'ai besoin de calculer pour un année, les dates des premiers jour de chaque
semaine.
Pour l'année 2008 et la semaine 01 c'est le 01/01/2008
Pour l'année 2008 et la semaine 02 c'est le 07/01/2008
Pour l'année 2008 et la semaine 03 c'est le 14/01/2008
Pour l'année 2008 et la semaine 04 c'est le 21/01/2008
Pour l'année 2008 et la semaine 05 c'est le 28/01/2008

jusque là c'est plutôt facile, non ?

mais:
Pour l'année 2008 et la semaine 06 c'est le 4/02/2008


La piste de ma solution c'est de partir du 01/01/2008
et de faire date..jour += 7

mais ça ne marche pas, l'opérateur + n'incrémente pas le mois !!!

Help
PYFUX

10 réponses

Avatar
Bruno Wrk
pyfux a utilisé son clavier pour écrire :
Bonjour,

J'ai besoin de calculer pour un année, les dates des premiers jour de chaque
semaine.
Pour l'année 2008 et la semaine 01 c'est le 01/01/2008
Pour l'année 2008 et la semaine 02 c'est le 07/01/2008
Pour l'année 2008 et la semaine 03 c'est le 14/01/2008
Pour l'année 2008 et la semaine 04 c'est le 21/01/2008
Pour l'année 2008 et la semaine 05 c'est le 28/01/2008

jusque là c'est plutôt facile, non ?

mais:
Pour l'année 2008 et la semaine 06 c'est le 4/02/2008


La piste de ma solution c'est de partir du 01/01/2008
et de faire date..jour += 7

mais ça ne marche pas, l'opérateur + n'incrémente pas le mois !!!

Help
PYFUX



Bonjour,

Bizarre

-------------------------------------
dTest est une Date="20080101"
i est un entier
POUR i=1 A 25
dTest..Jour+=7
Trace(dTest)
FIN
-------------------------------------

Fonctionne très bien.
Avatar
pyfux
La solution est simple..désolé!

dDATES=EntierVersDate(DateVersEntier(dDATES)+7)


"pyfux" a écrit dans le message de news:
48806ac4$0$12665$
Bonjour,

J'ai besoin de calculer pour un année, les dates des premiers jour de
chaque semaine.
Pour l'année 2008 et la semaine 01 c'est le 01/01/2008
Pour l'année 2008 et la semaine 02 c'est le 07/01/2008
Pour l'année 2008 et la semaine 03 c'est le 14/01/2008
Pour l'année 2008 et la semaine 04 c'est le 21/01/2008
Pour l'année 2008 et la semaine 05 c'est le 28/01/2008

jusque là c'est plutôt facile, non ?

mais:
Pour l'année 2008 et la semaine 06 c'est le 4/02/2008


La piste de ma solution c'est de partir du 01/01/2008
et de faire date..jour += 7

mais ça ne marche pas, l'opérateur + n'incrémente pas le mois !!!

Help
PYFUX



Avatar
pyfux
Merci

"Bruno Wrk" a écrit dans le message de news:

pyfux a utilisé son clavier pour écrire :
Bonjour,

J'ai besoin de calculer pour un année, les dates des premiers jour de
chaque semaine.
Pour l'année 2008 et la semaine 01 c'est le 01/01/2008
Pour l'année 2008 et la semaine 02 c'est le 07/01/2008
Pour l'année 2008 et la semaine 03 c'est le 14/01/2008
Pour l'année 2008 et la semaine 04 c'est le 21/01/2008
Pour l'année 2008 et la semaine 05 c'est le 28/01/2008

jusque là c'est plutôt facile, non ?

mais:
Pour l'année 2008 et la semaine 06 c'est le 4/02/2008


La piste de ma solution c'est de partir du 01/01/2008
et de faire date..jour += 7

mais ça ne marche pas, l'opérateur + n'incrémente pas le mois !!!

Help
PYFUX



Bonjour,

Bizarre

-------------------------------------
dTest est une Date="20080101"
i est un entier
POUR i=1 A 25
dTest..Jour+=7
Trace(dTest)
FIN
-------------------------------------

Fonctionne très bien.




Avatar
Eric Laurent
Bizarre en effet car chez moi, le code suivant fonctionne
dDhjour est une Date="20080101"
POUR i=1 A 20
dDhjour..Jour+=7
Trace (dDhjour)
FIN

le résultat est:
20080108
20080115
20080122
20080129
20080205
20080212
20080219
20080226
20080304
20080311
20080318
20080325
20080401
20080408
20080415
20080422
20080429
20080506
20080513
20080520


Tu peux toujours utiliser dateversentier(date)+7

Cordialement,

--
Eric Laurent

(enlever nospam.)
Avatar
pyfux
Et bien essayez:

---------------------------------------------

dDate est une Date

dDate=ChaîneVersDate("01/01/2008")

TANTQUE DateVersChaîne( dDate,"YYYY")="2008"

dDate..JourÝate..Jour + 7

Info(DateVersChaîne(dDate,"dd/mm/yyyy"))

FIN

---------------------------------------------

Petit crash en semaine 6.

Des idées d'explication? Sachant que c'est solutionné...

PYFUX

"Eric Laurent" a écrit dans le message de
news:
Bizarre en effet car chez moi, le code suivant fonctionne
dDhjour est une Date="20080101"
POUR i=1 A 20
dDhjour..Jour+=7
Trace (dDhjour)
FIN

le résultat est:
20080108
20080115
20080122
20080129
20080205
20080212
20080219
20080226
20080304
20080311
20080318
20080325
20080401
20080408
20080415
20080422
20080429
20080506
20080513
20080520


Tu peux toujours utiliser dateversentier(date)+7

Cordialement,

--
Eric Laurent

(enlever nospam.)




Avatar
Bruno Wrk
Dans son message précédent, pyfux a écrit :
Petit crash en semaine 6.

Des idées d'explication? Sachant que c'est solutionné...



dDate..JourÝate..Jour + 7

Erreur, voir notes concernant "Jour".
Un exemple le cite comme une chose à ne pas faire.
Avatar
Romain PETIT
Bruno Wrk a exprimé avec précision :
dDate..JourÝate..Jour + 7
Erreur, voir notes concernant "Jour".
Un exemple le cite comme une chose à ne pas faire.



Il faut avouer que c'est piégieux et pas très logique...

Dans le même genre, j'ai perdu un peu de temps (ya pas de message
d'erreur là...) :

mValeur est un monétaire
mvaleur = 42.9999999
trace(mValeur) //-> donne 43


--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Daireaux Jean-Baptiste
Romain PETIT a écrit :
Bruno Wrk a exprimé avec précision :
dDate..JourÝate..Jour + 7
Erreur, voir notes concernant "Jour".
Un exemple le cite comme une chose à ne pas faire.



Il faut avouer que c'est piégieux et pas très logique...

Dans le même genre, j'ai perdu un peu de temps (ya pas de message
d'erreur là...) :

mValeur est un monétaire
mvaleur = 42.9999999
trace(mValeur) //-> donne 43





Moi je fait :

m est un monétaire

mB.999999
trace(m) //-> affiche 42.999999

par contre

mB.9999999
trace(m) //-> affiche 43

un monétaire n'a que 6 décimale donc '42.999999' peut être considéré
comme un monétaire mais '42.9999999' est lui un réel si tu l'affecte a
un monétaire il y a exécution implicite de arrondi(42.9999999,6)C

voila...
J.B.D.
Avatar
Romain PETIT
Daireaux Jean-Baptiste avait soumis l'idée :

un monétaire n'a que 6 décimale donc '42.999999' peut être considéré comme un
monétaire mais '42.9999999' est lui un réel si tu l'affecte a un monétaire il
y a exécution implicite de arrondi(42.9999999,6)C



Oui, je sais, c'est pour ça que je dit que c'est également piégieux et
que ça m'a fait perdre un peu de temps...
J'aurais préféré que WD m'insulte avec un beau mesage d'erreur de cast
que de laisser passer ça...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Albert
Bonjour

La piste de ma solution c'est de partir du 01/01/2008
et de faire date..jour += 7

mais ça ne marche pas, l'opérateur + n'incrémente pas le mois !!!



Normal

Pour incémenter le mois < dDate..mois += 1 >

Maintenant en partant du n° de semaine renvoyé par la fonction

<Résultat> = NuméroDeSemaine(<Date>)

il est assez simple de déterminer la date du lundi de la semaine
concernée

Cordialement

Albert