Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA Grouper colonnes sous conditions

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 !

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.
 
Bonjour Flove, et bienvenu(e) sur XLD,
Vous n'auriez pas un petit fichier test représentatif qui serait plus clair ?
En particulier pour comprendre ce que vous entendez par "grouper la colonne".
 
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

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

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:
- 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
26
Affichages
1 K
Réponses
3
Affichages
517
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…