1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Sub Menu()
resetmenu
Set newpop = CommandBars("Cell").Controls.Add(msoControlButton, before:=1)
With newpop
'.BeginGroup = True
.Caption = "MASQUER LES COLONNES"
.OnAction = "CacheColonne"
End With
Set newpop = CommandBars("Cell").Controls.Add(msoControlButton, before:=2)
With newpop
'.BeginGroup = True
.Caption = "AFFICHER LES COLONNES"
.OnAction = "AfficheColonne"
End With
End Sub
Sub CacheColonne()
Dim RngDebut As Range, RngFin As Range, DateD As Range, DateF As Range, i&, VA
With Sheets("Data")
Set RngDebut = Union(.Range(.Cells(2, 3), .Cells(Rows.Count, 3).End(xlUp)), .Range(.Cells(2, 6), .Cells(Rows.Count, 6).End(xlUp)))
Set RngFin = Union(.Range(.Cells(2, 4), .Cells(Rows.Count, 4).End(xlUp)), .Range(.Cells(2, 7), .Cells(Rows.Count, 7).End(xlUp)))
.Columns("B:B").EntireColumn.AutoFit
End With
Set DateD = RngDebut.Find(CDate(WorksheetFunction.Min(RngDebut)))
Set DateF = RngFin.Find(CDate(WorksheetFunction.Max(RngFin)))
Application.ScreenUpdating = False
With Sheets("Planning")
.Cells.EntireColumn.Hidden = False
VA = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft)).Value
For i = 4 To UBound(VA, 2)
If VA(1, i) = DateD Then .Range(.Cells(1, 4), .Cells(1, i - 1)).EntireColumn.Hidden = True
If VA(1, i) = DateF Then .Range(.Cells(1, i + 1), .Cells(1, Columns.Count).End(xlToLeft)).EntireColumn.Hidden = True: Exit Sub
Next
.Columns("B:B").EntireColumn.AutoFit
End With
Application.ScreenUpdating = True
Set RngDebut = Nothing: Set RngFin = Nothing: Set DateD = Nothing: Set DateF = Nothing
End Sub
Sub AfficheColonne()
Application.ScreenUpdating = False
Sheets("Planning").Columns.EntireColumn.Hidden = False
Application.ScreenUpdating = True
End Sub |
Partager