Tier ligne par ordre Alphabetique Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
reinruof77
Membre fidèle
Membre fidèle
Messages : 383
Inscrit le : 10 mars 2014
Version d'Excel : 2010

Message par reinruof77 » 17 février 2019, 19:21

Bonjour le forum

Je cherche le moyen de trier une colone par ordre alphabetique avec une macro car j'ai environ 9000 lignes
( voir exemple)
Trier ligne.xlsx
(9.59 Kio) Téléchargé 8 fois
J'ai beau chercher je ne trouve pas j'ai essayer avec l'option trier par ligne mais cela ne va pas .

Merci de votre aide

:btres:
Je ne suis pas très douer mais j’écoute quand on m'explique ;)
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'425
Appréciations reçues : 542
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 17 février 2019, 20:27

Bonjour,
Une première proposition.
A te relire.
Cdlt
reinruof77.xlsm
(18.68 Kio) Téléchargé 7 fois
Public Sub Main()
Dim tbl As Variant, N As Long, i As Long
    With ActiveSheet
        N = .Cells(.Rows.Count, 1).End(xlUp).Row
        tbl = .Cells(2, 2).Resize(N - 1)
        For i = LBound(tbl) To UBound(tbl)
            tbl(i, 1) = Sort_a_string(tbl(i, 1))
        Next i
        .Cells(2, 2).Resize(N - 1).Value = tbl
    End With
End Sub

Private Function Sort_a_string(ByVal txt As String) As String
Dim arr As Variant, x As Long, y As Long, tmp As String, tmp2 As String
    txt = Replace(txt, " ", "")
    arr = Split(txt, ",")
    For x = LBound(arr) To UBound(arr)
        For y = x To UBound(arr)
            If UCase(arr(x)) > UCase(arr(y)) Then
                tmp = arr(x): tmp2 = arr(y)
                arr(x) = tmp2: arr(y) = tmp
            End If
        Next y
    Next x
    Sort_a_string = Join(arr, ", ")
End Function
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Avatar du membre
reinruof77
Membre fidèle
Membre fidèle
Messages : 383
Inscrit le : 10 mars 2014
Version d'Excel : 2010

Message par reinruof77 » 17 février 2019, 20:51

bonjour Jean-Eric Jean Eric

Déjà merci

le seul problème que j'ai relever c'est que l'lorsque j'ai un mot composer (lundi matin, mardi soir, mercredi matin et soir)
je me retrouve avec (lundimatin, mardisoir, mercredimatinetsoir)
en effet les espace entre les mots sont supprimer .

comment modifier cela?

Merci de ton aide

:btres:
Je ne suis pas très douer mais j’écoute quand on m'explique ;)
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'425
Appréciations reçues : 542
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 17 février 2019, 21:03

Re,
J'ai modifié la fonction.
A tester.
La prochaine fois, soit plus précis dans ta demande. ;;)
Cdlt.
Private Function Sort_a_string(ByVal txt As String) As String
Dim arr As Variant, x As Long, y As Long, tmp As String, tmp2 As String
    txt = Application.Trim(txt)
    arr = Split(txt, ", ")
    For x = LBound(arr) To UBound(arr)
        For y = x To UBound(arr)
            If UCase(arr(x)) > UCase(arr(y)) Then
                tmp = arr(x): tmp2 = arr(y)
                arr(x) = tmp2: arr(y) = tmp
            End If
        Next y
    Next x
    Sort_a_string = Join(arr, ", ")
End Function
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
Avatar du membre
reinruof77
Membre fidèle
Membre fidèle
Messages : 383
Inscrit le : 10 mars 2014
Version d'Excel : 2010

Message par reinruof77 » 17 février 2019, 21:43

Re bonjour

Merci c'est exactement cela.

probleme résolu.
:btres:
Je ne suis pas très douer mais j’écoute quand on m'explique ;)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message