VBA Excel Tri d'une plage nommée par une colonne particulière

J'ai une plage sélectionnée et à l'intérieur de cette Plage, je voudrais effectuer un tri par colonne particulière, de sorte que chaque ligne est gardé le même c'est à dire la fonction de tri juste réorganise l'ensemble des lignes en fonction de la colonne j'ai choisi de trier par.

Mon code jusqu'à présent est: est-ce

Sub CustomSortAscendingExcel(ByVal control As IRibbonControl, ByRef cancelDefault As Variant)
Dim selRange As range
Dim usedRange As range
Dim checkRange As range
Dim shtData As Worksheet
Set shtData = Worksheets("Data")
shtData.Activate
shtData.Unprotect
Set selRange = Selection
Set usedRange = returnUsedRange
Set checkRange = Intersect(usedRange, selRange)
If Not Application.Intersect(usedRange, selRange) Is Nothing Then
With ActiveSheet
    usedRange.Sort Key1:=selRange, Order1:=xlAscending, DataOption1:=xlSortNormal, MatchCase:=False, SortMethod:=xlPinYin, _
    Header:=xlNo, Orientation:=xlSortColumns
    .Sort.Apply
End With

Et similaires pour le tri Décroissant. Cela fonctionne très bien pour colonne1. Mon problème est que pour les colonnes 2, 3, 4, il ne fonctionne que pour les lignes qui ont une valeur dans colonne1 pas pour tout ce qui ne. Par exemple dans l'image ci-dessous le tri par colonne 3 correctement réorganise les 9 premières lignes mais pas les deux derniers.

Quelqu'un peut-il suggérer une manière de résoudre ce problème? Merci!

VBA Excel Tri d'une plage nommée par une colonne particulière

  • la zone fait référence à usedRange dans votre code?
  • usedRange se réfère ici à l'ensemble de la table (A:2, D:11), selRange se réfère à la colonne j'ai choisi de trier par
  • l'idée est bonne pour le résoudre... +1 pour lui-dessous.