Bonjour,
Ton code d'origine dont j'ai mis en gras et souligné les constantes que tu devrais remplacer par des variables.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Sub Tri_num_mat()
' Tri_num_mat Macro
'
Range("A82:Q101").Select
ActiveWorkbook.Worksheets("ES").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("ES").Sort.SortFields.Add Key:=Range("A82:A101"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("ES").Sort
.SetRange Range("A82:Q101")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A82").Select
End Sub |
A une procédure Sub ou Function, tu peux ajouter des arguments.
Si tu regardes les constantes, tu constates que tu en as 2.
ES qui représente le nom de la feuille et A82:Q101 qui représente la référence à la plage de cellules qui doit être triée.
Donc tu dois prévoir au moins un argument (le nom de la feuille) et de préférence un 2ème argument pour le cas où la plage à trier ne serait pas la même sur toutes les feuilles.
Exemple de ta procédure modifiée :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub Tri_num_mat(nomFeuille as String, maPlage as String)
' Tri_num_mat Macro
'
Range(maPLage).Select
ActiveWorkbook.Worksheets(nomFeuille).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(nomFeuille).Sort.SortFields.Add Key:=Range(maPLage), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(nomFeuille).Sort
.SetRange Range(maPLage)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub |
Pour appeler ta procédure
Tri_num_mat("ES", "A82:Q101")
Attention, je n'ai pas vérifié si ta procédure d'origine fonctionnait.
Première remarque, ne pas utiliser la méthode Select, c'est parfaitement inutile et cela ralenti la procédure.
Partager