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

Bonsoir à tous
Code:
[COLOR="DarkSlateGray"][B]Sub tata()
Dim i&, j&, k&
Dim sDat(), oDat, nDat&, oColl As New Collection
   With Feuil1
      oDat = .Cells(1, 1).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 2).Value
   End With
   nDat = UBound(oDat, 1)
   For i = 1 To nDat
      oDat(i, 1) = semaine(CDate(oDat(i, 1)))
      On Error GoTo E
      oColl.Add oDat(i, 1), CStr(oDat(i, 1))
      j = j + 1
      ReDim Preserve sDat(1 To 3, 1 To j)
      sDat(1, j) = oDat(i, 1)
      sDat(2, j) = oDat(i, 2)
      sDat(3, j) = 1
R:    On Error GoTo 0
   Next i
   For i = 1 To j
      sDat(2, i) = sDat(2, i) / sDat(3, i)
   Next i
   Feuil2.Cells(2, 1).Resize(j, 2) = WorksheetFunction.Transpose(sDat)
Exit Sub
E:
   For k = j To 1 Step -1
      If oDat(i, 1) = sDat(1, k) Then
         sDat(2, k) = sDat(2, k) + oDat(i, 2)
         sDat(3, k) = sDat(3, k) + 1
         Exit For
      End If
   Next
   Resume R
End Sub

Function semaine(d As Date) As String
Dim ns&
   d = Int(d)
   ns = DateSerial(Year(d + (8 - Weekday(d, vbSunday)) Mod 7 - 3), 1, 1)
   ns = ((d - ns - 3 + (Weekday(ns, vbSunday) + 1) Mod 7)) \ 7 + 1
   semaine = Year(d) - (ns > 50) * (Month(d) = 1) + (ns < 5) * (Month(d) = 12) & "-W" & Right$("0" & ns, 2)
End Function[/B][/COLOR]
devrait faire l'affaire pour autant que la colonne 1 de la feuille 1 contienne des dates et que la colonne 2 contienne des nombres.

(Je n'ai pas pris connaissance des contributions au format .xlsm dont la place est ailleurs que sur ce forum.)​
ROGER2327
#3678


Mardi 24 Merdre 137 (Sainte Purge, sage-femme, SQ)
22 Prairial An CCXVIII
2010-W23-4T23:35:21Z
 

Pièces jointes

  • Calcul_par_semaine_3678.zip
    14.1 KB · Affichages: 34
Dernière édition:

brigadero

XLDnaute Junior
Re : Regroupement de jours en semaines

Bonjour!

Merci Roger2327 c'est super!
Cependant il y'a juste un petit pb, cela prend les moyennes du mardi au lundi, alors que je voudrais du lundi au dimanche...
Et pour la 1ère semaine je pnsais prendre les jours qu'il manque dans la 2e semaine pour que cela fasse une semaine complete. (prendre le montant du lundi mardi mercredi jeudi pr 2009, et on aura donc juste les montants vendredi samedi dimanche qui changeront entre la semaine 1 et 2)
Et aussi si vous pouviez commenter parceque j'avou que je ne comprends pas grand chose!! Merci

Et pour répondre à Gruick en fait mon but est le suivant :
Je veux voir si le montant d'un jour férié à un impact sur un montant hebdomadaire, c'est pour cela que tout d'abord je veux regrouper les semaines entre elle.

Je veux ensuite mettre dans une colonne si telle ou telle semaine contient un jour férié.
A partir de ce moment là, je vais comparer le montant moyen de la semaine ac un jour férié avec la moyenne des deux montants moyens des semaines qui entourent cette semaine là. (semaine S-1 et semaine S+1)
Et ensuite je vais voir si l'écart entre ces deux montants est significatifs ou pas. (en utilisant la loi normale centré et la densité de probabilité)

Voila tout. et pour l'instant j'ai quelque difficultés pour coder cela c'est pourquoi j'ai besoin de votre aide.

Merci encore.

brigadero
 

ROGER2327

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Re...
Pas d'impatience ! On n'est pas tous rentiers : des fois, on va au chagrin pour manger...
Ceci dit, même si je n'ai pas le temps de répondre tout de suite à l'ensemble de vos questions, une chose m'intrigue :
(...) il y'a juste un petit pb, cela prend les moyennes du mardi au lundi, alors que je voudrais du lundi au dimanche... (...)
dites-vous. Je ne parviens pas au même résultat. Sans le classeur joint, je reprends quelques données de mon classeur précédent et je compare les résultats de la procédure tata et les résultats du calcul direct : j'obtiens des résultats identiques en prenant des semaines du lundi au dimanche.
Pouvez-vous vérifier cela et, au besoin, déposer au moins une partie du classeur où la procédure se trompe en calculant du mardi au lundi ?
Quant à votre demande de commentaire de la procédure, c'est un peu long à rédiger. Je le ferai dans quelques jours, car je ne pense pas avoir le temps cette fin de semaine. De plus, si la procédure ne vous donne pas le résultat attendu, il n'est peut-être pas utile de la commenter : essayons d'abord de trouver la source du mauvais fonctionnement...​
À bientôt...
ROGER2327
#3679


Mercredi 25 Merdre 137 (Apparition d'Ubu Roi, SS)
23 Prairial An CCXVIII
2010-W23-5T23:50:05Z
 

Pièces jointes

  • Calcul_par_semaine_3679.xls
    17.5 KB · Affichages: 74

ROGER2327

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Bonjour à tous
À JCGL :

Merci pour le fichier .xls. Il me semble que notre ami devrait y trouver son compte, car votre solution est bien plus fonctionnelle que mon ébauche. Sauf s'il a une bonne raison pour ne pas utiliser un tableau croisé dynamique, je pense que brigadero devrait s'intéresser à cette solution.​
Bonne journée.
ROGER2327
#3680


Jeudi 26 Merdre 137 (Sainte Barbaque, naïade, SQ)
24 Prairial An CCXVIII
2010-W23-6T07:00:13Z
 

JCGL

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Bonjour à tous,
Salut Roger,

Comme déjà écrit :
Je vous laisse mettre la formule qui (vous) convient dans la colonne 'Semaine"

en colonne C :utilisation de la fonction native NO.SEMAINE() et masquée par "Grouper".

Nous savons tous qu'elle ne correspond pas à la norme ISO; je ne traite ici que le "Regroupement".

A+ à tous
 

brigadero

XLDnaute Junior
Re : Regroupement de jours en semaines

Bonjour à tous!

Tout d'abord merci à vous pour vos aides qui m'ont bien avançé.

Maintenant je me confronte à un nouveau pb dont je vous avais parlé qui est le suivant :
Je veux voir si le montant d'un jour férié a un impact sur un montant hebdomadaire, c'est pour cela que tout d'abord je veux regrouper les semaines entre elle.

Je met dans une colonne si un jour est férié ou non (retourne un booléen)

Maintenant, làoù il faudrait que vous m'aidiez, serait que dans ma feuille 2, si telle ou telle semaine contient un jour férié cela retourne également "Vrai" ou "Faux" (en code vba)
A partir de ce moment là, je vais comparer le montant moyen de la semaine ac un jour férié avec la moyenne des deux montants moyens des semaines qui entourent cette semaine là. (semaine S-1 et semaine S+1)
Et ensuite je vais voir si l'écart entre ces deux montants est significatifs ou pas. (en utilisant la loi normale centré et la densité de probabilité)

Merci encore.

je vous joins en pièce jointe l'avancement. (qui utilise ce que m'a fait roger2327).

brigadero
 

Pièces jointes

  • Moyenne Semaines.zip
    22.2 KB · Affichages: 27

JCGL

XLDnaute Barbatruc
Re : Regroupement de jours en semaines

Bonjour à tous,

Toujours sans VBA et toujours avec le TCD dont visiblement tu n'as que faire.
Rassures toi, moi je m'amuse...

A+ à tous
 

Pièces jointes

  • JC Semaines TCD Fer.zip
    31.1 KB · Affichages: 40

brigadero

XLDnaute Junior
Re : Regroupement de jours en semaines

Merci beaucoup JCL mais le TCD ne m'interesse vraiment pas...
car mon programme doit marcher pour toute les années, avec des jours fériés qui changent, c'est pour cela que j'ai une fonction "férié" pour les détécter en fonction de la date...


Roger 2327 comment puis-je intégrer à votre code le fait que si j'ai un jour férié dans ma semaine "X", je la sélectionne et je la compare à la moyenne des des semaines qui l'entoure...
 

Ubot303

XLDnaute Occasionnel
Re : Regroupement de jours en semaines

Bonjour à tous,

Mon grain de sel : si tu as besoin d'aide pour tout faire, et donc pour tout maintenir derrière en VBA... c'est que ce n'est surement pas la solution qu'il te faut...

Au vu des qq pages que j'ai parcouru, tu as écarté d'entrée les solutions "faciles" comme celle de la formule weeknum (ou No.semaine) avec la compilation en TCD derrière...
Qui me semble la solution la plus évidente et la plus rapide à mettre en place... or le temps semble te manquer...
 

Discussions similaires

Réponses
8
Affichages
147
Réponses
8
Affichages
458

Statistiques des forums

Discussions
312 496
Messages
2 088 982
Membres
103 997
dernier inscrit
SET2A