Faire un tri spécifique A, R, D, V, 10, ...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

marmotte18

XLDnaute Impliqué
Bonjour,

J'aimerais trier la plage B11:B23 par macro dans l'ordre suivant :
A R D V 10 9 8 7 6 5 3 2 1

J'arrive à le faire via "Outils" < "Options" < "Liste pers." dans laquelle j'ai introduit ma liste ci-dessus. Chez moi, elle se trouve en 6e position.

Le code suivant fonctionne alors très bien :

HTML:
    Range("B11:B23").Select
    Selection.Sort Key1:=Range("B11"), Order1:=xlAscending, Header:=xlNo, OrderCustom:=6

Problème :

J'aimerais que mon fichier soit exportable et que je ne sois pas obliger d'introduire cette liste en 1ère position chez les uns, en 2e chez les autres, etc. ... ni d'être amené à adapter ma macro en fonction de l'emplacement de cette liste.

Merci par avance
 
Re : Faire un tri spécifique A, R, D, V, 10, ...

Bonjour à tous,

Toutes mes excuses Job75, j'étais passé au dessus de ta solution sans la voir.

J'ai essayé de la mettre en application mais je n'arrive pas à la faire fonctionner. Quelle bêtise ai-je bien pu commettre ?

Merci par avance
 

Pièces jointes

Dernière édition:
Re : Faire un tri spécifique A, R, D, V, 10, ...

Bonjour Hasco,

Merci pour ton intervention mais cela me gêne de venir supprimer de manière autoritaire la liste personnalisée A R D ... 2

En effet, il se peut que l'hébergeur de ma macro ait lui même eu besoin de générer cette liste pour une ou plusieurs autres applications inconnues de moi. Je ne vois pas pourquoi je m'autoriserai à les faire planter !
 
Re : Faire un tri spécifique A, R, D, V, 10, ...

Re,

Bonjour à tous,

Toutes mes excuses Job75, j'étais passé au dessus de ta solution sans la voir.

J'ai essayé de la mettre en application mais je n'arrive pas à la faire fonctionner. Quelle bêtise ai-je bien pu commettre ?

Merci par avance

Avec le fichier que vous avez édité, ça marche normalement car vous avez supprimé la liste personnalisée.

J'avais heureusement ouvert le 1er fichier où cette liste empêchait le tri par la macro...

A+
 
Re : Faire un tri spécifique A, R, D, V, 10, ...

Re,

En complément de mon post #18, noter que la macro peut fonctionner même en présence de la liste personnalisée.

Il faut alors compléter l'instruction de tri pour qu'elle ne tienne pas compte de cette liste :

Code:
Plage.Resize(, 2).Sort Key1:=Plage.Offset(, 1), Order1:=xlAscending, Header:=xlNo, [COLOR="Red"]OrderCustom:=1[/COLOR]

Voir le fichier joint.

A+
 

Pièces jointes

Re : Faire un tri spécifique A, R, D, V, 10, ...

Bonjour job75,

Effectivement, votre méthode fonctionne impeccablement bien et rentre parfaitement dans le mode de fonctionnement que je souhaite obtenir.

Je vais garder soigneusement cet exemple dans mes fiches techniques.

Un grand MERCI à vous !
 
Re : Faire un tri spécifique A, R, D, V, 10, ...

Bonjour marmotte18, le fil, le forum,

Pour le fun, une macro qui trie sans utiliser la méthode Sort (et sans colonne auxiliaire) :

Code:
Sub Tri_sans_trier()

Dim Tablo1, Plage As Range, Tablo2(), i As Byte, j As Byte, n As Byte, cel As Range

Tablo1 = Array("A", "R", "D", "V", "10", "9", "8", "7", "6", "5", "4", "3", "2")
Set Plage = [B11:B23]
ReDim Tablo2(Plage.Count - 1)

For i = 0 To UBound(Tablo1) 'valeurs du Tablo1 (s'il y en a)
  For j = 1 To Application.CountIf(Plage, Tablo1(i))
    Tablo2(n) = Tablo1(i)
    n = n + 1
  Next
Next

For Each cel In Plage 'autres valeurs (s'il y en a)
  If IsError(Application.Match(CStr(cel), Tablo1, 0)) Then
    Tablo2(n) = cel
    n = n + 1
  End If
Next

Plage = Application.Transpose(Tablo2) 'restitution

End Sub

Qu'il y ait des listes personnalisées ou pas, on s'en moque.

Fichier (2) joint.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour