Trie avec nom de plage
Bonjour,
Après de longue recherche sur le forum je me contraint à vous écrire car je n'ai pas eu de réponse à ma question.
Je souhaiterai mettre en oeuvre un trie par macro.
Mon problème est que je voudais le faire sur une plage dynamique.
J'ai sélectionné ma plage de la manière suivante :
Range("B7:G7").Select
Range(Selection, Selection.End(xlDown)).Name = "TriePart"
Je souhaiterai faire un trie par ordre alphabétique. l'enregistrement de macro me donne le code suivant :
ActiveWorkbook.Worksheets("Détail").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Détail").Sort.SortFields.Add Key:=Range("E7:E300") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Détail").Sort
.SetRange Range("B7:G300")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Je souhaiterai remplacer la clé : Range("E7:E300") par ma sélection
J'ai essayé d'écrire le nom de la plage dans key et dans .setRange mais cela n'a pas marché.
J'ai dans un premier temps écrit :
Range(Selection, Selection.End(xlDown))
et dans un second temps j'ai eu l'idée de nommer la plage mais dans les deux cas les résultats n'ont pas été convaicant.
Quelqu'un aurait une idée s'il vous plait??
Merci d'avance et bonne journée à tous
Bonjour,
Si tu as la possibilté de travailler avec un tableau (dynamique), teste ce code dans ton fichier que tu n'as pas joint.
Cdlt.
Public Sub Demo()
Dim ws As Worksheet
Dim objList As ListObject
Set ws = ActiveSheet
Set objList = ws.ListObjects.Add( _
SourceType:=xlSrcRange, _
Source:=ws.Range("B7").CurrentRegion, _
XlListObjectHasHeaders:=xlYes)
objList.Name = "Tableau1"
With objList.Sort
With .SortFields
.Clear
.Add objList.ListColumns(5).Range, SortOn:=xlSortOnValues, Order:=xlAscending
End With
.Header = xlYes
.Orientation = xlSortColumns
.Apply
End With
Set objList = Nothing: Set ws = Nothing
End Sub
Désolé de ne pas avoir joint mon fichier mais je travail sur des données clients dans une entrepprise, je ne peut donc pas communiquer le fichier.
Je vais essayer de faire ce dont tu parle, en espérant que ça marche.
On ne peut vraiment pas faire ceci sans tableau?
Je vais quand même essayer. Merci beaucoup.