Bonjour à tous,
J'aimerais pouvoir trier automatiquement cette liste :
Dans cet ordre :
Quelle est selon vous la meilleure méthode VBA ?
Merci d'avance.
Bonjour à tous,
J'aimerais pouvoir trier automatiquement cette liste :
Dans cet ordre :
Quelle est selon vous la meilleure méthode VBA ?
Merci d'avance.
Bonjour,
Une solution avec la liste des valeurs à partir de A2 (attention, utilisation de la colonne B, à modifier si déjà occupée)
Sub Tri()
Cdlt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Application.ScreenUpdating = False DerLig = [A10000].End(xlUp).Row Range("B2:B" & DerLig).FormulaR1C1 = "=RC[-1]&"" aaa""" Range("A2:B" & DerLig).Select ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2:B" & DerLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Feuil1").Sort .SetRange Range("A2:B" & DerLig) .Header = xlGuess .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Columns(2).Delete End Sub
@ARTURO83
Merci pour cette solution, je vais la tester.
A quoi correspond cette formule ?
@halaster08
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range("B2:B" & DerLig).FormulaR1C1 = "=RC[-1]&"" aaa"""
Je n'ai pas d'obligation concernant les formats, je peux donc les convertir en texte, je vais tester aussi.
Merci.
A quoi correspond cette formule ?
Range("B2:B" & DerLig).FormulaR1C1 = "=RC[-1]&"" aaa"""
On ajoute " aaa" derrière chaque valeur, ce qui donne:
Pièce jointe 480321
Il ne reste plus qu'à faire un tri sur la colonne B et de la supprimer après le tri
Cdlt
Bonjour,
En convertissant les nombres en texte, cela fonctionne :
Essaies et dis-moi !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub TriParValeur() Range("A1").CurrentRegion.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 2), TrailingMinusNumbers:=True Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo End Sub
J'ai choisi la méthode donné par halaster08,
J'ai dû étager les deux fonctions .sort car on ne peux pas utiliser plus de 3 critères de tri à la fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Option Explicit Sub Tri() Dim i As Integer With ThisWorkbook.Sheets("Feuille") i = .Range("A" & Rows.Count).End(xlUp).Row .Range("A4:AL" & i).Sort Key1:=.Range("C1"), Order1:=xlDescending, DataOption1:=xlSortNormal, Key2:=.Range("D1"), Order2:=xlAscending, DataOption2:=xlSortNormal, Key3:=.Range("E1"), Order3:=xlAscending, DataOption3:=xlSortNormal .Range("A4:AL" & i).Sort Key1:=.Range("A1"), Order1:=xlAscending, DataOption1:=xlSortNormal, Key2:=.Range("B1"), Order2:=xlAscending, DataOption2:=xlSortOnValues End With MsgBox "Opération terminée" End Sub
Merci !![]()
Partager