Regroupement de jours en semaines

brigadero

XLDnaute Junior
Bonjour,

Je voudrais juste savoir comment faire pour, à partir de dates sur un an, regrouper les jours en fonction des semaines.
Et que mes semaines soient du lundi au dimanche.
C'est à dire pour 2009 le 1er janvier est un vendredi, donc regrouper en semaine1 le vendredi samedi dimanche, après semaine 2 du lundi au dimanche suivant etc...le but étant de mettre dans la colonne Semaine la semaine à laquelle appartient le jour, jusqu'à la 52e semaine.
Tout ceci doit être fait en vba!

Merci d'avance
 

Pièces jointes

  • Semaines.xls
    31.5 KB · Affichages: 84
  • Semaines.xls
    31.5 KB · Affichages: 83
  • Semaines.xls
    31.5 KB · Affichages: 78

ROGER2327

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Bonjour brigadero
Une fonction personnalisée possible :
Code:
[COLOR="DarkSlateGray"][B]Function NOSEM(d As Date) As Long
[COLOR="SeaGreen"]'
' N° de la semaine dans l'année de la date D conforme à la norme ISO.
' Fonction EXCEL équivalente
' =ENT((D-SOMME(MOD(DATE(ANNEE(D-MOD(D-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)
' =ENT((10+D-JOURSEM(D;3)-DATE(ANNEE(3+D-JOURSEM(D;3));1;4)+JOURSEM(DATE(ANNEE(3+D-JOURSEM(D;3));1;4);3))/7)
'[/COLOR]
   d = Int(d)
   NOSEM = DateSerial(Year(d + (8 - Weekday(d, vbSunday)) Mod 7 - 3), 1, 1)
   NOSEM = ((d - NOSEM - 3 + (Weekday(NOSEM, vbSunday) + 1) Mod 7)) \ 7 + 1
End Function[/B][/COLOR]
(Au passage, le 1/1/2009 est un jeudi...
Le 1/1/2010 est un vendredi et, de ce fait, appartient à la cinquante-troisième semaine de 2009.)​
ROGER2327
#3667


Lundi 23 Merdre 137 (Interprétation de l'humour, ST)
21 Prairial An CCXVIII
2010-W23-3T15:53:17Z
 
Dernière édition:

Habitude

XLDnaute Accro
Re : Regroupement de jours en semaines

Effectivement
tout les 5 à 6 ans il y a 53 semaines dans un année
Dépendamment du nombre de bissextile (1 à 2) dans cette période.

Par contre, en quoi Vendredi nous dit indique que c'est la 53ieme sem?
 

Gruick

XLDnaute Accro
Re : Regroupement de jours en semaines

Bonjour,

Oooouh l la la, ROGER2327, tu aimes bien te creuser la tête, je le sais, mais j'apporte une solution plus simple et plus conforme à ce que demandait Brigadero, en utilisant le résultat de l'instruction Weekday d'excel.

Voir fichier et sa petite macro.

Gruick
 

Pièces jointes

  • Semaines.xls
    47.5 KB · Affichages: 86
  • Semaines.xls
    47.5 KB · Affichages: 89
  • Semaines.xls
    47.5 KB · Affichages: 82

ROGER2327

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Re...
Bonjour,

Oooouh l la la, ROGER2327, tu aimes bien te creuser la tête, je le sais, mais j'apporte une solution plus simple et plus conforme à ce que demandait Brigadero, en utilisant le résultat de l'instruction Weekday d'excel.

Voir fichier et sa petite macro.

Gruick
Sauf dans quelques contrées reculées où on se tamponne des normes internationales, c'est excellent si on aime les solutions fausses.​
ROGER2327
#3669


Lundi 23 Merdre 137 (Interprétation de l'humour, ST)
21 Prairial An CCXVIII
2010-W23-3T16:45:14Z
 

ROGER2327

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Re...
Effectivement
tout les 5 à 6 ans il y a 53 semaines dans un année
Dépendamment du nombre de bissextile (1 à 2) dans cette période.

Par contre, en quoi Vendredi nous dit indique que c'est la 53ieme sem?
Si j'en crois la norme ISO8601 (et pourquoi la mettrais-je en doute ?), la première semaine de l'année est celle qui contient le premier jeudi de la dite année. Par conséquent, si le premier janvier tombe un vendredi (ou un samedi, ou un dimanche), il ne peut appartenir à la première semaine de l'année. Toujours selon la norme sus citée, on convient que le premier janvier appartient alors à la dernière semaine de l'année précédente.
Cette dernière semaine est, selon les années, la cinquante-deuxième ou la cinquante-troisième :

samedi 1 janvier 2000.......1999-W52-6
samedi 1 janvier 2005.......2004-W53-6
dimanche 1 janvier 2006.....2005-W52-7
vendredi 1 janvier 2010.....2009-W53-5
samedi 1 janvier 2011.......2010-W52-6
dimanche 1 janvier 2012.....2011-W52-7
dimanche 1 janvier 2006.....2005-W52-7
vendredi 1 janvier 2016.....2015-W53-5
dimanche 1 janvier 2017.....2016-W52-7
vendredi 1 janvier 2021.....2020-W53-5
samedi 1 janvier 2022.......2021-W52-6
dimanche 1 janvier 2023.....2022-W52-7
vendredi 1 janvier 2027.....2026-W53-5
samedi 1 janvier 2028.......2027-W52-6

(Je n'y peux rien : ce n'est pas moi qui fixe les normes internationales.)​
ROGER2327
#3670


Lundi 23 Merdre 137 (Interprétation de l'humour, ST)
21 Prairial An CCXVIII
2010-W23-3T16:54:26Z
 
Dernière édition:

Gruick

XLDnaute Accro
Re : Regroupement de jours en semaines

re,
Sauf dans quelques contrées reculées où on se tamponne des normes internationales, c'est excellent si on aime les solutions fausses.
Un compliment et une vacherie...

Ma solution n'est pas fausse, puisque je n'ai fait que répondre à la question particulière de Brigadero, qui doit avoir ses raisons pour vouloir une semaine 1 dès le premier jour ce son année.

Et puis Brigadero n'a pas demandé une glose, sur les normes internationales.

Bon, pour moi, c'est plié.

Gruick
 

hoerwind

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Bonjour, salut les autres,

Ce qui est demandé ne serait-ce pas tout simplement ce qui est renvoyé par la fonction NO.SEMAINE(), suivant la norme US ? :
=NO.SEMAINE(A2;2))
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Bonjour à tous

Il ya quelques temps, j'avais trouvé cette formule qui peut être adaptée suivant le cas que l'on désire:

En mettant les dates en colonne 1:

Code:
Sub Trouve_semaine()
'Catrice
'Semaine = Format(Calendar1, "ww", vbMonday, vbFirstFourDays)
For Each cell In ActiveSheet.Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Rows.Row, 1))
cell.Offset(0, 1) = Format(cell, "ww", vbMonday, vbFirstFourDays)
Next
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Re...
Ok merci
Je ne savais pas.
Intéressant.


Or cette règle ne nous dit pas si c'est la 52 ième ou la 53ième semaine si j'ai bien compris.
Effectivement, on ne sait pas immédiatement le numéro de la dernière semaine de l'année précédente. Mais il n'est pas trop difficile de le déterminer. La petite complication vient des années bissextiles.
Dans une année ordinaire, il y a 52 semaines et 1 jour (52 x 7 + 1 = 365).
Dans une année bissextile, il y a 52 semaines et 2 jours (52 x 7 + 2 = 366).
Par conséquent, connaissant le jour du 1er janvier année "A", on voit que le jour du 1er janvier de l'année "A-1" est :
- le même que le jour du 31 décembre de l'année "A-1" si "A-1" est une année ordinaire ;
- le même que le jour du 30 décembre de l'année "A-1" si "A-1"1 est une année bissextile.

Précisément :

Lorsque l'année "A-1" est une année ordinaire :
Si le 1/1/"A" tombe un________alors le 1/1/"A-1" tombe un
lundi_________________________dimanche
mardi_________________________lundi
mercredi______________________mardi
jeudi_________________________mercredi
vendredi______________________jeudi
samedi________________________dimanche
dimanche______________________samedi

Lorsque l'année "A-1" est une année bissextile :
Si le 1/1/"A" tombe un________alors le 1/1/"A-1" tombe un
lundi_________________________samedi
mardi_________________________dimanche
mercredi______________________lundi
jeudi_________________________mardi
vendredi______________________mercredi
samedi________________________jeudi
dimanche______________________vendredi

On en déduit facilement une règle générale :
- si le 1/1/"A" est un vendredi, il appartient à la semaine 53 de l'année précédente ;
- si le 1/1/"A" est un samedi, il appartient à la semaine 53 de l'année précédente si l'année précédente est bissextile, à la semaine 52 de l'année précédente si l'année précédente est ordinaire ;
- si le 1/1/"A" est un dimanche, il appartient à la semaine 52 de l'année précédente.

ROGER2327
#3672


Lundi 23 Merdre 137 (Interprétation de l'humour, ST)
21 Prairial An CCXVIII
2010-W23-3T20:07:30Z
 
Dernière édition:

brigadero

XLDnaute Junior
Re : Regroupement de jours en semaines

Rebonjour à vous,

Tout d'abord Merci à tous pour votre aide!
ca marche parfaitement.
cependant je me rends comptes que ce dont j'ai besoin est juste un tout petit peu différent.
j'ai sur ma feuille 1 des valeurs en fonction des dates, et ce que je voudrais sur ma feuille 2, ce serait d'avoir en fonction des semaines (des 53 semaines), la moyenne des valeurs des jours ( du lundi au dimanche).
et donc commence par le lundi 5/01 en semaine 1 et mettre les jeudi vendredi samedi dimanche dans la moyenne de la semaine 53.

Je vous joins un fichier pour que ce soit plus clair.

Merci encore et merci d'avance!

Ps: tout doit être fait en vba! :)
Brigadero
 

Pièces jointes

  • Semaines.xlsm
    24.1 KB · Affichages: 66
  • Semaines.xlsm
    24.1 KB · Affichages: 67
  • Semaines.xlsm
    24.1 KB · Affichages: 68

Discussions similaires

Réponses
8
Affichages
443

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS