VBA : tri automatique sur 2 critères

Répondre
Partager Rechercher
Bon, j'avais pas touché du VBA depuis des lustres, et j'ai un problème. Mineur, mais bon, ça me dérange. J'avais d'abord opté pour une automation en faisant ceci (entre autres, mais c'est le principe) :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Range("D25:H30").Select
    ActiveWorkbook.Worksheets("Input").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Input").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "E26:E30"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Input").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "F26:F30"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Input").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Le résultat en tant que tel convient, ça fait le travail, sauf que hmm... A chaque modification, j'ai donc droit à un retour sur les plages concernées. Très peu pratique ce faisant. Je me suis donc dis que j'allais passer ça en Calculate. Sauf que j'ai beau faire F9, rien, nada. Le tri ne se fait plus. Je comprends pas bien où je me suis planté. Bon cela étant s'il y a moyen que ça reste automatique mais en tâche de fond, sans avoir à m'importuner à revenir aux plages triées à chaque modification, ce serait aussi bien.
Pas fait de vba depuis longtemps mais une petite solution rapide c'est de définir ton focus a la fin de ton code.
Mais ça dépend combien tu as de page dans ton fichier. Si tu en as que deux "input" et une autres ça doit être OK.

par ex:

Code:
Worksheets("sheet2").Activate
T'ouvriras ta page sheet2.

Si t'en as plusieurs il faut passer ton nom de page en variable.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés