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

XL 2019 Trier les mots d'une colonne après le petit trait.

Caninge

XLDnaute Accro
Bonjour à tous amis excelliens et excelliens,

j'arrive à trier facilement les codes postaux avec les communes (colonne E) mais comment faire
pour trier les communes dans l'ordre alphabétique (Colonne G) en oubliant les codes postaux.
Comme dans l'exemple que j'envoie en pièce jointe.
Est-ce possible que quand je rajoute un mot à la fin de la liste, cette dernière se trie immédiatement !
J'ai cherché mais rien trouvé de probant.
Pouvez m'aider. Merci !
CANINGE
 

Pièces jointes

  • Trier colonne après le petit trait.xlsx
    9.3 KB · Affichages: 47

Caninge

XLDnaute Accro
Bonsoir sylvanu, Job75

je me rappelle avoir été aidé il y a quelques temps avec ce code dans un fichier de sport.
en écrivant le code postal à la dernière ligne, le tri se fait automatiquement sans appuyer sur un bouton.
Il faut certainement modifier le code. Merci de regarder.

Private Sub Worksheet_Change(ByVal Target As Range)

Range("E4:E280").Select
ActiveWorkbook.Worksheets("Références").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Références").Sort.SortFields.Add Key:=Range("b1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Références").Sort
.SetRange Range("B4:B280")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With


End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Caninge,
En PJ vous l'avez en automatique. j'ai gardé les deux boutons que vous pouvez supprimer. J'ai simplement ajouté dans Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    TriAlpha
End Sub
Je n'avais pas utilisé cette option car j'en ai horreur.
Vous ajoutez une référence, et par reflexe vous voulez la vérifier. Hop! elle a disparue, il vous faut la rechercher dans la liste car celle ci a été triée.
Mais bon, chacun son truc. Si cela vous sied, c'est le principal.
 

Pièces jointes

  • Trier colonne après le petit trait (1) (2).xlsm
    18.1 KB · Affichages: 5

Caninge

XLDnaute Accro
Bonjour sylvanu, Job75

Je suis nul...je n'arrive pas à faire fonctionner la macro.
en fait je ne sais pas où il faut positionner TriAlpha. Et puis peut-être autre chose...pfff
Je suis embêté aussi avec mon site que je ne peux pas publier. message d'erreur...Mais ça c'est autre chose...
A plus
 

Pièces jointes

  • Trier colonne après le petit trait (1) (4).xlsm
    20 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Mais faites comme dans ma PJ.
Dans Feuil1 vous mettez :
Private Sub Worksheet_Change(ByVal Target As Range)
TriAlpha
End Sub
et dans un module :
VB:
Sub TriAlpha()
Dim DL%, i%, j%, T(), tablo()
Application.ScreenUpdating = False
DL = Range("E65500").End(xlUp).Row
tablo = Range("E4:E" & DL)
ReDim T(UBound(tablo), 1)
For i = 1 To UBound(tablo)
    T(i, 0) = Split(tablo(i, 1), " - ")(0)
    T(i, 1) = Split(tablo(i, 1), " - ")(1)
Next i
For i = 1 To UBound(T)
    For j = 1 To UBound(T)
        If T(i, 1) < T(j, 1) Then
            buffer1 = T(j, 0): buffer2 = T(j, 1)
            T(j, 0) = T(i, 0): T(j, 1) = T(i, 1)
            T(i, 0) = buffer1: T(i, 1) = buffer2
        End If
    Next j
Next i
For i = 1 To UBound(tablo)
    tablo(i, 1) = T(i, 0) & " - " & T(i, 1)
Next i
Range("$E$4").Resize(DL - 3, 1) = tablo
End Sub

ou encore tout dans feuille 1 comme vous voulez.
si vous séparez la macro peut être accessible dans une autre feuille en rajoutant un Worksheet_Change.
 

Pièces jointes

  • Trier colonne après le petit trait (1) (4) (1).xlsm
    16.5 KB · Affichages: 9

Caninge

XLDnaute Accro
Je reviens !

ca fonctionne presque sylvanu !
Di je rajoute un code postal à la fin de la liste.
si je clique sur débogage. Ca bloque sur la ligne: DL = Range("E65500").End(xlUp).Row
si je clique sur Fin. Ca débugue.
Allez je vais jardiner un peu.
A plus
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je viens de tester en rajoutant des lignes sans aucun problème. Voir PJ.
Je ne vois pas d'où ça peut venir car le DL = Range("E65500").End(xlUp).Row donne la dernière ligne occupée et n'a jamais de problème habituellement.
 

Pièces jointes

  • Trier colonne après le petit trait (1) (4) (1) (1).xlsm
    16.5 KB · Affichages: 9
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…