Microsoft 365 Trier les données d'une colonne.

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 !

Jojo973

XLDnaute Occasionnel
Supporter XLD
Bonjour la communauté.
Je développe un petit outil qui permet de renommer des pdf. Une des étapes consiste à récupérer le nom des fichiers dans un dossier. Ils sont sous la forme :
1_Splitom.pdf
9_Splitom.pdf
8_Splitom.pdf
7_Splitom.pdf
6_Splitom.pdf
5_Splitom.pdf
4_Splitom.pdf
3_Splitom.pdf
2_Splitom.pdf
19_Splitom.pdf
18_Splitom.pdf
17_Splitom.pdf
16_Splitom.pdf
15_Splitom.pdf
14_Splitom.pdf
13_Splitom.pdf
12_Splitom.pdf
11_Splitom.pdf
10_Splitom.pdf

Ces noms n'étant pas dans l'ordre, j'ai fais une macro de tri mais je n'obtiens pas ce que je souhaite, un classement de 1_ à 19_

J'ai essayé différent mode de tri mais je bloque.
Un coup de main serait le bien venu.
En pj le fichier avec une macro de tri de base.

Merci à vous
 

Pièces jointes

Bonjour Jojo, Bsalv,
Classique, car "10" sera devant "2_" puisque tri alpha.
Une solution en rajoutant un 0 si <10 puis tri puis suppression des 0, avec :
VB:
Sub tri_split()
Worksheets("Feuil1").Sort.SortFields.Clear
Set Plage = Range("A2:A20")
For Each cell In Plage
    If Mid(cell, 2, 1) = "_" Then Range(cell.Address) = "0" & cell.Value
Next cell
Plage.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
For Each cell In Plage
    If Mid(cell, 1, 1) = "0" Then Range(cell.Address) = Mid(cell.Value, 2)
Next cell
End Sub
 

Pièces jointes

Bonjour,
pour le fun
VB:
Sub tri_split()
Dim I As Integer, T() As String
Const Digit = 2 ' 0 a 99 2 digits, 100 a 999 3 digits Etc.
With Worksheets("Feuil1")
    .Sort.SortFields.Clear
    With .Range("A1").CurrentRegion
        For I = 2 To .Rows.Count
        T() = Split(.Cells(I, "A"), "_")
        T(0) = Format(T(0), String(Digit, "0"))
        .Cells(I, "A") = Join(T, "_")
        Next
        .Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
    End With
End With
End Sub
 
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

Retour