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

Rechercher des sujets similaires à "rangement ordre croissant suivant couleur case nombre"