Microsoft 365 Trier sans selection de la feuille

pasquet

XLDnaute Nouveau
Bonjour,

Je voudrait faire un tri mais sans avoir besoin de sélectionner la feuille.

L = Sheets("Suivi SAMSO").Range("a65536").End(xlUp).Row
Sheets("Suivi SAMSO").Select
Sheets("Suivi SAMSO").Range(Cells(9, 1), Cells(L, 29)).Sort key1:=Range("D9"), order1:=xlAscending, Header:=xlYes

Merci de votre aide
Bien cordialement
Jean-Pierre
 
Solution
Bonjour.
Pourquoi diable, alors que vous dites ne pas vouloir sélectionner la feuille, avez vous ensuite une instruction Sheets("Suivi SAMSO").Select, de toute façon inutile pour l'obtention du résultat ?
Faut pas laisser tout ce que l'enregistreur de macro met d'inutile !
Mais je viens de comprendre ce qui vous embarrasse: si vous ne spécifiez pas d'expression Worksheet devant Cells(… il assume la feuille active. Ce n'est pas une raison pour la sélectionner. Faites donc comme ça par exemple :
VB:
Dim Wsh as Worksheet, L as Long
Set Wsh = Worksheets("Suivi SAMSO")
L = Wsh.Range("A65536").End(xlUp).Row
Wsh.Range(Wsh.Cells(9, 1), Wsh.Cells(L, 29)).Sort key1:=Wsh.Range("D9"), order1:=xlAscending, Header:=xlYes
Moi, j'aurais plus...

pasquet

XLDnaute Nouveau
Bonjour Pasquet,
Dans ce cas, ne faites pas référence à la feuille.
La macro s’exécutera sur la feuille courate.
VB:
Sub essai()
    L = Range("a65536").End(xlUp).Row
    Range(Cells(9, 1), Cells(L, 29)).Sort key1:=Range("D9"), order1:=xlAscending, Header:=xlYes
End Sub

L'idée est de pouvoir effectuer le tri quelque soit la feuille courante et sans avoir besoin de l'afficher avec ".Select"
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pourquoi diable, alors que vous dites ne pas vouloir sélectionner la feuille, avez vous ensuite une instruction Sheets("Suivi SAMSO").Select, de toute façon inutile pour l'obtention du résultat ?
Faut pas laisser tout ce que l'enregistreur de macro met d'inutile !
Mais je viens de comprendre ce qui vous embarrasse: si vous ne spécifiez pas d'expression Worksheet devant Cells(… il assume la feuille active. Ce n'est pas une raison pour la sélectionner. Faites donc comme ça par exemple :
VB:
Dim Wsh as Worksheet, L as Long
Set Wsh = Worksheets("Suivi SAMSO")
L = Wsh.Range("A65536").End(xlUp).Row
Wsh.Range(Wsh.Cells(9, 1), Wsh.Cells(L, 29)).Sort key1:=Wsh.Range("D9"), order1:=xlAscending, Header:=xlYes
Moi, j'aurais plus tendance à faire :
VB:
Dim Wsh as Worksheet, Rng As Range
Set Wsh = Worksheets("Suivi SAMSO")
Set Rng = Wsh.[A9].Resize(Wsh.[A1000000].End(xlUp).Row - 8), 29)
Rng.Sort key1:=Rng.Columns("D"), order1:=xlAscending, Header:=xlYes
 

pasquet

XLDnaute Nouveau
Bonjour.
Pourquoi diable, alors que vous dites ne pas vouloir sélectionner la feuille, avez vous ensuite une instruction Sheets("Suivi SAMSO").Select, de toute façon inutile pour l'obtention du résultat ?
Faut pas laisser tout ce que l'enregistreur de macro met d'inutile !
Mais je viens de comprendre ce qui vous embarrasse: si vous ne spécifiez pas d'expression Worksheet devant Cells(… il assume la feuille active. Ce n'est pas une raison pour la sélectionner. Faites donc comme ça par exemple :
VB:
Dim Wsh as Worksheet, L as Long
Set Wsh = Worksheets("Suivi SAMSO")
L = Wsh.Range("A65536").End(xlUp).Row
Wsh.Range(Wsh.Cells(9, 1), Wsh.Cells(L, 29)).Sort key1:=Wsh.Range("D9"), order1:=xlAscending, Header:=xlYes
Moi, j'aurais plus tendance à faire :
VB:
Dim Wsh as Worksheet, Rng As Range
Set Wsh = Worksheets("Suivi SAMSO")
Set Rng = Wsh.[A9].Resize(Wsh.[A1000000].End(xlUp).Row - 8), 29)
Rng.Sort key1:=Rng.Columns("D"), order1:=xlAscending, Header:=xlYes
Merci ça correspond bien à l'objectif recherché
 

Discussions similaires

Réponses
3
Affichages
569

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400