masquer/afficher des colonnes selon valeur dans cellule ligne 2

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 !

gilles72

XLDnaute Junior
Bonjour à tous,
J'ai dans un fichier, une macro qui masque les colonnes dont la valeur en ligne 2 est nulle ou égale à 0.
j'aimerais que le bouton me serve aussi à afficher toutes les colonnes
Je sais le faire quand on masque x colonnes et qu'on affiches ces mêmes colonnes ensuite.
Mais quand certaines seulement sont masquées dans la selection, mes essais de code ne fonctionnent pas.
Est-ce que kekun verrait comment compléter le code en ce sens?
Merci à vous
gilles72
 

Pièces jointes

Re : masquer/afficher des colonnes selon valeur dans cellule ligne 2

Bonjour gilles72,

Tu peux essayer avec cette macro modifiée :
VB:
Sub testMasqueAfficheColonnes()
    Application.ScreenUpdating = False
    Dim i As Integer
    ActiveSheet.Shapes.Range("Button 1").Select
    If Selection.Characters.Text = "Masquer" Then
        For i = 6 To 35
            If Cells(2, i) = 0 Then
                Columns(i).Hidden = True
            Else: Columns(i).Hidden = False
            End If
        Next i
        ActiveSheet.Shapes.Range("Button 1").Select
        Selection.Characters.Text = "Afficher"
    Else
        Range("A:AI").EntireColumn.Hidden = False
        ActiveSheet.Shapes.Range("Button 1").Select
        Selection.Characters.Text = "Masquer"
    End If
    Range("E1").Select
    Application.ScreenUpdating = True
End Sub

Auparavant, il te faut créer un bouton dans la feuille souhaitée.

A+
 
Re : masquer/afficher des colonnes selon valeur dans cellule ligne 2

Bonjour Gilles, Bonjour FredOo,

une approche un peu différente

Code:
Sub testMasqueAfficheColonnes()
Dim i As Integer, MasqAffich As Boolean
Application.ScreenUpdating = False
    MasqAffich = False
    For i = 6 To 35
        If Columns(i).Hidden Then
            MasqAffich = True
            Exit For
        End If
    Next i
    If MasqAffich Then
        Columns("F:AI").Hidden = False
    Else
    For i = 6 To 35
        If Cells(2, i) = 0 Then
            Columns(i).Hidden = True
        End If
    Next i
    End If
Application.ScreenUpdating = True
End Sub
 
- 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

Retour