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.

Rechercher des sujets similaires à "trie nom plage"