Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

En vba, comment faire un tri sur une plage de cellules en ligne?

  • Initiateur de la discussion Initiateur de la discussion tarvel
  • 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 !

tarvel

XLDnaute Occasionnel
Bonjour,
En vba, j'ai besoin d'un éclaircissement concernant des tris croissants sur 3 lignes (indépendamment)
40 25 36 95 12 tri croissant => 12 25 36 40 95
38 14 10 54 36 tri croissant => 10 14 36 38 54
14 29 54 78 31 tri croissant => 14 29 31 54 78

J'ai utilisé ce code qui fonctionne bien sur la 1ère ligne
Code:
Range("B2:F2").Select
    ActiveWorkbook.Worksheets("test").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("test").Sort.SortFields.Add Key:=Range("B2:F2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("test").Sort
        .SetRange Range("B2:F2")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With

Mais comment faire sur la plage de cellules des 3 lignes en Range("B2:F5").Select
J'ai une erreur d'exécution 1004...Réf de tri non valide
Merci pour votre aide!
 
Re : En vba, comment faire un tri sur une plage de cellules en ligne?

Re

Comme ceci par exemple (test ok chez moi)
Code:
Sub Macro1()
Dim lig&, i&
lig = Selection.Rows.Count
For i = 1 To lig
Selection.Cells(i, 1).Resize(1, Selection.Columns.Count).Sort Key1:=Selection.Cells(i, 1), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
Next i
End Sub
 
Re : En vba, comment faire un tri sur une plage de cellules en ligne?

Merci Staple1600 pour ta réponse rapide!
Il n'existe aucune solution de tri sur sur une plage de cellules avec une seule boucle?
 
Re : En vba, comment faire un tri sur une plage de cellules en ligne?

Dslé Staple1600 ...C'est Ok je voulais dire par 1 plage de cellules (et non boucle)...avec l'objet Range!

Merci pour tes réponses 😉
 
Re : En vba, comment faire un tri sur une plage de cellules en ligne?

Re

c'est le Selection qui te gêne?

je l'avais laissé exprès pensant que tu saurais adapter mon code avec Range à la place de Selection

c'était une sorte d'invitation implicite à te faire mettre les mains dans le cambouis 😉

Apparemment l'invitation s'est égarée dans les limbes du web 😉

Code:
Sub Macro1a()
Dim lig&, i&, r As Range
Set r = ActiveSheet.Range("B2:F4")
lig = r.Rows.Count
For i = 1 To lig
r.Cells(i, 1).Resize(1, r.Columns.Count).Sort Key1:=r.Cells(i, 1), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
        DataOption1:=xlSortNormal
Next i
End Sub
 
Dernière édition:
Re : En vba, comment faire un tri sur une plage de cellules en ligne?

Exactement c'était la sélection qui me gênait 😉
Je commençais à mettre les mains dans le camboui..mais ton éclaircissement est venu plus vite que ma recherche de solution 🙂
lig = Selection.Rows.Count ne pouvait pas me convenir dans mon cas car j'avais d'autres données à ne pas trier 😉...
Je vais potasser l'objet Range
Merci bcp pour tout!
 
- 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

Réponses
11
Affichages
2 K
Réponses
17
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…