Macro de Groupage par Semaine

  • Initiateur de la discussion Initiateur de la discussion soaresden
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

soaresden

XLDnaute Nouveau
Bonjour à tous !

Une fois de plus mon manque de connaissance en macro m'invite à poster sur le forum !

Voici ce que je souhaite réaliser :

En ligne 4 : j'ai des numéros de semaine (1 à 53 , l'année entière quoi ! (colonne E:NE)
En ligne 6 : j'ai des dates (jj/mm/aaaa)
en ligne 7 : les jours associés aux dates (lundi, mardi ..dimanche)

J'aimerai grouper les colonnes dès le mardi (pour avoir un affichage du numéro de semaine) ligne 7) (Selection.Columns.Group) dès que mon numéro de semaine change

Merci d'avance !
 

Pièces jointes

Dernière édition:
Re : Macro de Groupage par Semaine

Bonjour à tous

soaresden

En attendant la macro, une petite suggestion formulistique pour alléger tes formules en ligne 7
En C7 par exemple, cette formule donnera le même résultat que ton actuelle formule.
=NOMPROPRE(TEXTE(C8;"jjjj"))
 
Re : Macro de Groupage par Semaine

Re


Une piste à améliorer
(A TESTER UNIQUEMENT SI EXCEL 2007 ou supérieur)
Code:
Sub testGroup()
Dim i&
Cells.ClearOutline
For i = 1 To 366
If Weekday(Cells(1, i), vbMonday) = 2 Then
Cells(1, i).Resize(, 6).Columns.Group
End If
Next i
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
End Sub

PS: Pour tester cet exemple il faut au préalable remplir la ligne 1 du 1er jour au dernier jour de l'année choisie.
 
Re : Macro de Groupage par Semaine

Rebonjour,

Merci Staple1600, lors du lancement de ton code, j'ai une erreur dûe a "Cells.ClearOutline"

J'ai donc enlevé cette ligne et j'ai adapté un petit peu le code à mon cas présent

Sub Groupagesemaine()
Dim i
For i = 5 To 369

If Weekday(Cells(6, i), vbMonday) = 2 Then
Cells(6, i).Columns.Group

End If

Next i

ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1

End Sub

Neanmoins ca ne fonctionne pas très bien encore, Excel me groupe selon 2 niveaux mais il groupe "mal"
Je pense qu'il manque une instruction de type ".select" qui selectionnerai les colonnes du mardi au dimanche inclus

Par ailleurs j'ai une question sur le vbmonday = 2 ... pourquoi 2 alors que lundi est 1 ?

Merci pour vos recommandations par avance
 
Re : Macro de Groupage par Semaine

Re à tous, finalement je suis arrivé à quelque chose !

Sub Groupagesemaine()
Dim i
Application.ScreenUpdating = False
For i = 5 To 369
Do While ActiveSheet.Cells(6, i) = 1
i = i + 1
Loop

If Weekday(Cells(8, i), vbMonday) = 2 Then
ActiveSheet.Range(Cells(8, i), Cells(8, i + 5)).Select
Selection.Columns.Group
End If

If ActiveSheet.Cells(6, i) = 53 Then GoTo FinProg


Next i

FinProg:

Columns("E:NE").EntireColumn.AutoFit
ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Application.ScreenUpdating = True
MsgBox ("Groupage des Semaines Réalisé")
End Sub

Certainement optimisable mais ca fonctionne déja pas mal 🙂
Merci !
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
475
  • Question Question
Réponses
25
Affichages
1 K
Réponses
12
Affichages
1 K
Réponses
2
Affichages
1 K
Réponses
6
Affichages
1 K
Réponses
22
Affichages
3 K
Réponses
5
Affichages
4 K
Retour