Bonjour le Forum!
A nouveau besoin de vous .
Je voudrais utiliser une procedure Workbook_sheetchange pour cacher les lignes en dessous de mon TCD. Je precise qu'il n'y aucune donee en dessous.
Je me suis resservi d'un code gentillement ecrit par Hasco l'an dernier mais je n'arrive pas a le faire fonctionner.
Mais avant de mettre le code, je me demandais si cacher/faire apparaitre des ligne dans un TCD etait considerer comme "change" par excel.
Quand je dis cacher/faire apparaitre je veux dire utiliser les petite croix me permettant de montrer le details des sous totaux.
Voile le code
A nouveau besoin de vous .
Je voudrais utiliser une procedure Workbook_sheetchange pour cacher les lignes en dessous de mon TCD. Je precise qu'il n'y aucune donee en dessous.
Je me suis resservi d'un code gentillement ecrit par Hasco l'an dernier mais je n'arrive pas a le faire fonctionner.
Mais avant de mettre le code, je me demandais si cacher/faire apparaitre des ligne dans un TCD etait considerer comme "change" par excel.
Quand je dis cacher/faire apparaitre je veux dire utiliser les petite croix me permettant de montrer le details des sous totaux.
Voile le code
Code:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim dl As Integer
Dim i As Long
Dim plgRows As Range
Dim X As Integer
Dim oldCalculation As XlCalculation
10 On Error GoTo ErrHandler
15 Application.EnableEvents = False
20 With Application
30 oldCalculation = .Calculation
40 .ScreenUpdating = False: .Calculation = xlCalculationManual: .EnableEvents = False
50 End With
60 With Sheets("Tracker")
dl = .Range("A65536").End(xlUp).Row
120 For X = dl To 1 Step -1
130 If .Cells(X, 1).Value = "" Then
140 If plgRows Is Nothing Then
150 Set plgRows = .Cells(X, 1)
160 Else
170 Set plgRows = Union(plgRows, .Cells(X, 1))
180 End If
190 End If
200 Next X
'If there is at least one line to delete, we delete all in one shot
210 If Not plgRows Is Nothing Then plgRows.Hidden = True
320 End With
' In case of problem, the macro stops and we have to launch it again
ErrHandler:
330 With Application: .ScreenUpdating = True: .EnableEvents = True: .EnableEvents = True: End With
340 If Err.Number > 0 Then
350 MsgBox "An error occurs in 'Sheet_change_treatment macro' at line " & Erl & vbCrLf & vbCrLf & Err.Number & ":" & vbCrLf & Err.Description, vbExclamation, "S_GMRB_treatment"
360 End If
End Sub