Trier sans faire référence au nom de l'onglet

Le
Capitaine Pampers
Bonjour à tous,

Je souhaitrais générer un bout de code qui trie de manière croissante=
les données de la colonne A d'une table. Les données des colonnes B,C,=
D, doivent bien sure suivre le mouvement. (A noter qu'au départ il y a de=
s lignes blanches entre les enregistrements, ces lignes blanches (non rense=
ignées) naturellement disparaissent à l'issue du tri)

Je travaille essentiellement avec l'enregistreur de macro pour générer =
du code et il se trouve que le code généré fait référence au nom =
de la feuille sur laquelle je travaille et moi je souhaiterais un code neut=
re que je puisse utiliser sur des feuilles ayant un autre nom que "TEST T1"=
en l'occurrence.

Voilà le code généré:

Columns("A:A").Select
ActiveWorkbook.Worksheets("TEST T1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("TEST T1").Sort.SortFields.Add Key:=Range("=
A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSor=
tNormal
With ActiveWorkbook.Worksheets("TEST T1").Sort
.SetRange Range("A1:A752")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Quelqu'un pourrait-il me dire comment s'y prendre ?

Merci d'avance - Cpt Pampers
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #24963962
Bonjour,

[A:D].Sort [A1], xlAscending, Header:=xlNo

Pas besoin de chercher plus loin, sauf si ta feuille est protégée et le
tri autorisé.

Cordialement.
Daniel


Bonjour à tous,

Je souhaitrais générer un bout de code qui trie de manière croissante les
données de la colonne A d'une table. Les données des colonnes B,C,D, doivent
bien sure suivre le mouvement. (A noter qu'au départ il y a des lignes
blanches entre les enregistrements, ces lignes blanches (non renseignées)
naturellement disparaissent à l'issue du tri)

Je travaille essentiellement avec l'enregistreur de macro pour générer du
code et il se trouve que le code généré fait référence au nom de la feuille
sur laquelle je travaille et moi je souhaiterais un code neutre que je puisse
utiliser sur des feuilles ayant un autre nom que "TEST T1" en l'occurrence.

Voilà le code généré:

Columns("A:A").Select
ActiveWorkbook.Worksheets("TEST T1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("TEST T1").Sort.SortFields.Add
Key:=Range("A1"), _ SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("TEST T1").Sort
.SetRange Range("A1:A752")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Quelqu'un pourrait-il me dire comment s'y prendre ?

Merci d'avance - Cpt Pampers
MichD
Le #24964012
Bonjour,

Voici un exemple de code pour trier la colonne B de la feuille active avec une plage "A:D"
Cette procédure est valide pour chacune des feuille du classeur où est copiée la macro.


Sub test()
Dim DerLig As Long
With ThisWorkbook
With .ActiveSheet
'Si la feuille n'est pas vide
If Not IsEmpty(.UsedRange) Then
'Avec la plage A:D
With .Range("A:D")
'Trouve la dernière ligne occupé pour les colonnes
'de A à D
DerLig = .Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
End With
With .Range("A1:D" & DerLig)
'Tri croissant sur la colonne B de la plage A:D
'Item(1,1) : 1 = Ligne, 1 la colonne
.Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes
End With
End If
End With
End With
End Sub


MichD
--------------------------------------------------------------
Capitaine Pampers
Le #24964052
Bonjour,

Merci beaucoup pour ces deux réponses. Celle de Daniel est suffisante, et celle de Denis je la garde en mémoire elle me sera peut-être un jour u tile si je dois trier sur des données situées au centre de la table.

Merci encore et bonne soirée - Cpt Pampers
Publicité
Poster une réponse
Anonyme