Macro de Groupage par Semaine

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

  • Groupageparsemaine.xlsx
    12.6 KB · Affichages: 63
Dernière édition:

Staple1600

XLDnaute Barbatruc
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"))
 

Staple1600

XLDnaute Barbatruc
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.
 

soaresden

XLDnaute Nouveau
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
 

soaresden

XLDnaute Nouveau
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:

Discussions similaires

Réponses
25
Affichages
866