Afficher/masquer une ou plusieurs colone VBA
G
Bonjour,
Afin de masquer/afficher une ou plusieurs colonnes a partir d'un bouton. J'ai vu plein de solution et aucune mais aucune ne me convient car trop longue a programmer.
solution1 : es possible d'avoir un filtre sur les colonnes sachant qu'il y a déjà un filtre pour les ligne ? ( si oui
solution 2: es possible d'avoir un macro simple pour avoir un bouton par colonne pour les afficher/masquer ? ( le top ça serai dans un onglet extérieur )
Merci d'avance pour votre aide
Salut Goun80,
voici un début de solution avant d'autres précisions...
1 un clic sur Tarif A ou B
- si les deux tarifs sont visibles, la colonne cliquée se cache ;
- si une seule colonne est visible, switch entre les deux colonnes.
2 un clic sur Site 1/2...
- si une seule colonne Tarif est visible, les deux colonnes sont affichées ;
- si les deux colonne sont visibles, elles sont cachées toutes les deux et leur libellé apparaît dans une liste en [A:A] où un clic les faire réapparaître.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
iCol = Target.Column
iCol1 = IIf(iCol Mod 2 = 0, iCol - 1, iCol + 1)
iCol2 = IIf(iCol Mod 2 = 0, iCol, iCol + 1)
'
Application.EnableEvents = False
'
If Not Intersect(Target, Range("C2:R2")) Is Nothing Then
If Columns(iCol).Hidden = True Or Columns(iCol1).Hidden = True Then
Columns(iCol1).Hidden = False
Else
iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(iRow, 1) = "Site " & (iCol2 - 2) / 2
If iRow > 2 Then Range("A2:A" & iRow).Sort key1:=Range("A2"), order1:=xlAscending
Range(Columns(iCol2 - 1), Columns(iCol2)).Hidden = True
End If
End If
'
If Not Intersect(Target, Range("C3:R3")) Is Nothing And Target <> "" Then
Columns(iCol).Hidden = True
Columns(iCol1).Hidden = IIf(Columns(iCol).Hidden = True, False, True)
End If
Cells(2, iCol2) = IIf(Columns(iCol).Hidden = False And Columns(iCol1).Hidden = False, "", "Site " & (iCol2 - 2) / 2)
'
If Not Intersect(Target, Range("A:A")) Is Nothing And Target <> "" Then
iCol1 = 2 + (CInt(Split(Target, " ")(1)) * 2)
iCol = iCol1 - 1
Cells(2, iCol1) = ""
Range(Columns(iCol), Columns(iCol1)).Hidden = False
Target.Delete shift:=xlUp
End If
'
Application.EnableEvents = True
'
End Sub
A+