Ordre de tri spécial

  • Initiateur de la discussion Initiateur de la discussion blord
  • Date de début Date de début

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 !

blord

XLDnaute Impliqué
Bonjour à tous,

Je cherche à trier une série de données d'une façon partciulière. Cette liste de données contient des codes et tous les codes qui débutent par "S" doivent se retrouver obligatoirement en début de liste et par la suite le autres codes triés de façon normale...

Est-ce faisable ?

Merci !

Blord
 

Pièces jointes

Re : Ordre de tri spécial

Bonsoir le fil, bonsoir le forum,

La macro ci dessous mais qui necessite, comme Tibo, la colonne B de manière temporaire :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim li As Integer 'déclare la variable li (LIgne)
 
dl = Range("A65536").End(xlUp).Row 'définit la variable dl
Set pl = Range("A2:A" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'si la cellule commnence par "S" (ou "s") écrit 0 en colonne B, sinon, écrit 1 en colonne B
    cel.Offset(0, 1).Value = IIf(UCase(Left(cel.Value, 1)) = "S", 0, 1)
Next cel 'prochaine cellule cel de la boucle
Set pl = pl.Resize(, pl.Columns.Count + 1) 'redéfinit la plage pl (ajoute la colonne B)
'tri de la plage pl en fonction de la colonne B
pl.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
li = Columns(2).Find(1, Range("B1"), xlValues, xlWhole).Row 'définit le numéro de la ligne du premier 1 trouvé
'tri les cellules commençant par "S"
Range("A2:A" & li - 1).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
'tri les autres cellules
Range("A" & li & ":A" & dl).Sort Key1:=Range("A" & dl), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Columns(2).Clear 'efface la colonne B
End Sub
 
Dernière édition:
Re : Ordre de tri spécial

Bonjour à tous,

Merci beaucoup pour vos réponses rapides, je vais opter pour la solution de Philippe qui passe directement par une macro sans colonne intermédiaire...

Vos idées sont très appréciées....

Blord
 
Re : Ordre de tri spécial

Bonjour à tous,

Merci beaucoup pour vos réponses rapides, je vais opter pour la solution de Philippe qui passe directement par une macro sans colonne intermédiaire...

Vos idées sont très appréciées....

Blord

Bonsoir le fil, bonsoir le forum,

Heu Blord... La macro de Philippe fait le tri dans la colonne B me semble-t-il... Donc aussi sur une colonne intermédiaire...
 
Re : Ordre de tri spécial

Bonsoir Robert, le fil, le forum,

Vous avez tout à fait raison mon cher Robert, j'ai fait envoyer la réponse un peu trop rapidement...

Finalement, après quelques essais, je vais utiliser la formule de Tibo ...

Merci quand même à vous tous, votre aide et vos idées me permettent beaucoup de progresser en Excel et en VBA...

Blord
 
Re : Ordre de tri spécial

Bonjour à tous,

Bravo itou David...

Ça c'est de la formule, qui,nativement, est plus rapide qu'un code...

Un soit disant aussi bien formuliste que VBAiste...

A++ David
A++ Tibo
A++ Robert
A++ Philippe

A+ à tous
 
Re : Ordre de tri spécial

Re,
merci Tibo, venant d'un maître formuliste ce compliment n'a que plus de valeur😉
merci JC (le "soit-disant" est en trop dans ta phrase🙂
Blord, si tu veux inclure une partie conditionnelle à ta formule pour empêcher l'apparition d'une valeur d'erreur, dis-le. Sur excel 2007, la formule passe sans problème mais pas sur les versions antérieures. Il faut alors passer par une formule nommée. Tu devras donc préciser ta version.
Reste aussi la possibilité d'utiliser une MFC.
A+
 
Dernière édition:
- 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

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
737
Réponses
10
Affichages
720
Retour