Microsoft 365 VBA Grouper colonnes sous conditions

Flove91

XLDnaute Nouveau
Bonjour tout le monde,

Je viens de faire ma première session de formation VBA, je reste donc encore très novice.
Mais j'ai déjà des idées de grandeurs dans l'optimisation de mes tâches au quotidien mais surtout sur le maintient de mon apprentissage suite à ma formation des bases VBA.

Dans ce contexte, je souhaiterais dans une plage de colonnes D à AM, grouper la colonne si dans celle-ci en ligne 2 est inscrit "0".

Je vous remercie d'avance.
 

Flove91

XLDnaute Nouveau
Bonjour Sylvanu,

Voici le fichier.
Dans la ligne 2 se met à 0 sur tous les mois suivants le mois en cours (ceux que je veux grouper)
Etant en Novembre, je veux que par la macro, cela me groupe automatique les colonnes AK à AM.

Merci.
 

Pièces jointes

  • VBA Grouper.xlsx
    10.7 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Un essai en PJ avec :
VB:
Sub Regroupe()
    Dim DC As Integer, C As Integer
    DC = Cells(2, Columns.Count).End(xlToLeft).Column               ' Dernière colonne
    For C = 4 To DC Step 3                                          ' Pour toutes les colonnes par 3
        If Cells(2, C) + Cells(2, C + 1) + Cells(2, C + 2) = 0 Then ' Si la somme en ligne 2 vaut 0
            Range(Cells(1, C), Cells(1, C + 2)).Columns.Group       ' Alors regrouper par 3 colonnes
        End If
    Next C
End Sub
Mais au vu de votre fichier, pourquoi les regrouper et non les masquer ?
Comme cela :
Code:
Sub Masquer()
    Dim DC As Integer, C As Integer
    DC = Cells(2, Columns.Count).End(xlToLeft).Column               ' Dernière colonne
    For C = 4 To DC Step 3                                          ' Pour toutes les colonnes par 3
        If Cells(2, C) + Cells(2, C + 1) + Cells(2, C + 2) = 0 Then ' Si la somme en ligne 2 vaut 0
            Range(Cells(1, C), Cells(1, C + 2)).EntireColumn.Hidden = True ' Alors masquer les 3 colonnes
        End If
    Next C
End Sub
 

Pièces jointes

  • VBA Grouper (1).xlsm
    16.9 KB · Affichages: 2

Flove91

XLDnaute Nouveau
Bonjour Sylvanu,

Un grand merci, tout fonctionne très bien !!
J'ai effectivement opté pour me masquage.
Je partais pour grouper car en manuel c'est ce qui me faisait perdre moins de temps.
J'ai ajouté un complément au début pour démasquer toutes les colonnes :
Columns.EntireColumn.Hidden = False

Merci beaucoup, un grand gain de temps au quotidien.

Bonne journée.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
127

Statistiques des forums

Discussions
312 199
Messages
2 086 159
Membres
103 147
dernier inscrit
tubaman