masquer/afficher des colonnes selon valeur dans cellule ligne 2

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

  • test masque affiche colonnes.xlsm
    13.8 KB · Affichages: 212

Fred0o

XLDnaute Barbatruc
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+
 

tototiti2008

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
24
Affichages
779

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87