Grouper/Dissocier via Macro selon condition

  • Initiateur de la discussion Initiateur de la discussion Fabie2003
  • 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 !

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

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
 
- 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
4
Affichages
255
Retour