Bonsoir,
Je viens de créer un code pour masquer les groupes en colonne, à l'exception du dernier.
Cela utilise une autre fonction (laquelle contient la limitation à 255 colonnes)
Il y a peut-être plus simple mais je ne vais pas y passer la nuit ;-)
Deuxième fonction
HTH
Je viens de créer un code pour masquer les groupes en colonne, à l'exception du dernier.
Cela utilise une autre fonction (laquelle contient la limitation à 255 colonnes)
Il y a peut-être plus simple mais je ne vais pas y passer la nuit ;-)
Code:
Sub Outline_Show_Ultimate_Group()
Dim rTarget As Range, rV As Range, rBuild As Range, aA As Areas, rStill As Range
Dim vResult As Variant
Dim wsh As Worksheet
Set wsh = ActiveSheet
Set rgTarget = ActiveSheet.UsedRange
' Loop on first row
For Each rV In rgTarget.Rows(1).Cells
' Find address of parent outline group
Set vResult = Outline_InColumnAddress(rV)
' Build range object of outline groups
If Not vResult Is Nothing Then _
If rBuild Is Nothing Then Set rBuild = vResult Else Set rBuild = Union(rBuild, vResult)
Next rV
' Hide all groups
For Each rV In rBuild.Areas
rV.EntireColumn.Hidden = True
Next rV
' Redisplay the Ultimate Group
Set rStill = Range(rBuild.Areas(rBuild.Areas.Count).Address)
rStill.EntireColumn.Hidden = False
End Sub
Code:
Public Function Outline_InColumnAddress(rngTest As Range) As Range
On Error Resume Next
Dim lOffset As Long
Dim lLevel As Long
lLevel = rngTest(1, 1).EntireColumn.outlineLevel
If lLevel = 1 Then GoTo TheExit
Do While rngTest(1, 1).Column > 1
If rngTest(1, 1).offset(0, -1).EntireColumn.outlineLevel = lLevel Then
Set rngTest = Union(rngTest, rngTest.offset(0, -1))
Else
Exit Do
End If
Loop
Do While rngTest(1, rngTest.Columns.Count).Column < 255
If rngTest(1, rngTest.Columns.Count).offset(0, 1).EntireColumn.outlineLevel = lLevel Then
Set rngTest = Union(rngTest, rngTest.offset(0, 1))
Else
Exit Do
End If
Loop
Set Outline_InColumnAddress = rngTest
TheExit:
Outline_InColumnAddress = False
End Function
HTH