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

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
 

gilles72

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

Bonjour FREDOo et tototi
Fabuleux
les 2 fonctionnent nickel
je vais essayer de copier votre savoir pour être un peu moins nul...!
merci encore
 

Discussions similaires

Réponses
24
Affichages
806
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…