Rangement Ordre Croissant suivant Couleur Case et Nombre
Bonjour,
Je souhaite optimiser ma macro Excel que j'ai écrite car je trouve le run de la fonction trop longue.
Elle peut durer jusqu'à 20 secondes (le temps de l'execution des différentes boucles).
Merci pour vos conseils.
Sub Macro1()
'
' Macro1
'
Application.ScreenUpdating = False
'
Sheets("Criticality analysis").Select
Range("BC3").Select
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("BC3:BC7999"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields. _
Add(Range("BC3:BC7999"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 0, 0)
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields. _
Add(Range("BC3:BC7999"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 192, 0)
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields. _
Add(Range("BC3:BC7999"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 255, 0)
ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort.SortFields. _
Add(Range("BC3:BC7999"), xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(146, 208, 80)
With ActiveWorkbook.Worksheets("Criticality analysis").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Simulate action").Select
Range("BH3").Select
ActiveWorkbook.Worksheets("Simulate action").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Simulate action").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("BH3:BH7999"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
:=xlSortNormal
With ActiveWorkbook.Worksheets("Simulate action").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("Simulate action").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Simulate action").Sort.SortFields.Add(Range( _
"BH3:BH7999"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue. _
Color = RGB(255, 0, 0)
ActiveWorkbook.Worksheets("Simulate action").Sort.SortFields.Add(Range( _
"BH3:BH7999"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue. _
Color = RGB(255, 192, 0)
ActiveWorkbook.Worksheets("Simulate action").Sort.SortFields.Add(Range( _
"BH3:BH7999"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue. _
Color = RGB(255, 255, 0)
ActiveWorkbook.Worksheets("Simulate action").Sort.SortFields.Add(Range( _
"BH3:BH7999"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue. _
Color = RGB(146, 208, 80)
With ActiveWorkbook.Worksheets("Simulate action").Sort
.SetRange Range("A3:BH7999")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Graph").Select
Application.ScreenUpdating = True
End Sub
Bonsoir,
de ce que je vois dans ton code, tu n'effectues que des tris...
je suppose qu'il doit y avoir moult formules, pour que cela prenne autant de temps
en début de code, en plus du "ScreenUpdating", tu peux également modifer la méthode de calcul...
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
et en fin de code :
Application.Calculation = xlCalculationAutomatic
Peut-être?
Bonjour
Merci pour cette fonction, mais malheureusement cela n’a pas amélioré l’exécution de la macro.
Oui il y a pas mal de données et de calcul par feuille mais c’est un classement que je veux. Donc je ne comprends pas pourquoi cela met autant de temps car lorsqu’on utilise le filtre de la colonne c’est instantané
Je suis toujours à la recherche de la meilleure façon d’écrire mon code pour qu’il s’exécute correctement: entre 5 et 10 secondes