Grouper/Dissocier via Macro selon condition

Fabie2003

XLDnaute Nouveau
Bonjour à tous,

je vous sollicite car je n'arrive pas à "grouper/dissocier" des colonnes en VBA en utilisant la fonction if.

Voici mon exemple (ci-joint le fichier excel):

J'ai 3 onglets: Index , Magasins, Siège.

Je souhaiterais qu'à partir d'une macro, les colonnes sur les onglets Magasins et Siège soient automatiquement grouper afin de ne voir apparaitre que les 3 colonnes du mois sélectionné dans l'onglet Index (dans l'exemple le mois d'avril) et les 3 colonnes "Total". sachant que le mois est renseigné en ligne 5 sur les onglet au dessus du tableau (ligne normalement masquée).

A noter que les 2 onglets "magasins" et "siège" ne sont pas exactement les mêmes car le tableau de l'onglet "Magasins" commence en B8 et le tableau de l'onglet "Siège" en A8.

J'espère avoir été suffisamment claire...

Merci d'avance pour votre aide :)
 

Pièces jointes

  • Test Macro.xlsx
    22.9 KB · Affichages: 33

Theze

XLDnaute Occasionnel
Bonjour,

Une piste pour la feuille "MAGASINS" (adaptes pour la feuille "SIEGE") le code est à mettre dans le module de la feuille "INDEX" (procédure événementielle) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  
    Dim FeMag As Worksheet
    Dim T
    Dim Adr As String
  
    Set FeMag = Worksheets("MAGASINS")
  
    If Target.Address(0, 0) <> "B4" Then Exit Sub
  
    Adr = Choose(Target.Value, "H:AN,H:AN", "E:G,K:AN", "E:J,M:AN", "E:M,Q:AN", "E:P,T:AN", "E:S,W:AN", _
                               "E:V,Z:AN", "E:Y,AC:AN", "E:AB,AF:AN", "E:AE,AI:AN", "E:AH,AL:AN", "E:AK,E:AK")
  
    T = Split(Adr, ",")
  
    FeMag.Columns("E:AN").EntireColumn.Hidden = False
  
    On Error Resume Next
    FeMag.Columns("E:AN").Columns.Ungroup
    On Error GoTo 0
  
    FeMag.Columns(T(0)).Columns.Group: FeMag.Columns(T(0)).EntireColumn.Hidden = True
    FeMag.Columns(T(1)).Columns.Group: FeMag.Columns(T(1)).EntireColumn.Hidden = True
  
End Sub
Une précision, il faut que tu remplaces les valeurs de ta liste de choix en supprimant l'apostrophe devant tes nombres, pour avoir par exemple 01 dans la cellule, il te suffit d'appliquer le format personnalisé 00
 

Discussions similaires

Réponses
1
Affichages
167
Réponses
21
Affichages
391

Statistiques des forums

Discussions
312 166
Messages
2 085 886
Membres
103 018
dernier inscrit
mohcen23