Bonjour,
J'utilise dans une macro pour la première les tris des données et les sous-totaux. Je suis parti de l'enregistreur qui m'a donné ceci :
J'ai tenté de l'alléger en l'écrivant ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub Macro2() ' ' Macro2 Macro ' ' Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select ActiveWorkbook.Worksheets("Detail local accounts").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Detail local accounts").Sort.SortFields.Add Key:= _ Range("A2:A54"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder _ := _ "SALARY EXPENSES,CAR AND TRAVEL EXPENSES,TELECOMMUNICATIONS,MARKETING,VARIETIES REGISTRATION FEES,OTHER EXPENSES,OTHER INCOME,DEPRECIATION ON ASSETS" _ , DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Detail local accounts").Sort .SetRange Range("A1:E54") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5), _ Replace:=False, PageBreaks:=False, SummaryBelowData:=True Selection.Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(5), _ Replace:=False, PageBreaks:=False, SummaryBelowData:=True End Sub
Bien entendu, ça bloque sur la première ligne en-dessous du commentaire avec le message d'erreur suivant : Application-defined or Object-defined error.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub Mon_test() Dim LR1 As Long With Sheets("Detail local accounts") LR1 = .Range("A" & .Rows.Count).End(xlUp).Row 'Trier données et inclure sous-totaux .Range("A1:A" & LR1).Sort , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:="SALARY EXPENSES,CAR AND TRAVEL EXPENSES,TELECOMMUNICATIONS,MARKETING,VARIETIES REGISTRATION FEES,OTHER EXPENSES,OTHER INCOME,DEPRECIATION ON ASSETS" .Range("A1:E" & LR1).Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5), Replace:=True, PageBreaks:=False, SummaryBelowData:=True .Range("A1:E" & LR1).Subtotal GroupBy:=2, Function:=xlSum, TotalList:=Array(5), Replace:=False, PageBreaks:=False, SummaryBelowData:=True End Sub
Pouvez-vous m'aider à résoudre mon problème SVP ? Une deuxième question suivra.
Je vous remercie grandement par avance !
Partager