[Résolu] Tri alphabétique dans cellule

Starkoala

XLDnaute Nouveau
Bonjour à tous,

Je n'arrive pas à trouver une solution élégante à ce problème simple et intéressant. Je suis certains que des experts pourront trouver une belle solution.

Sujet:
J'ai un tableau de taches avec une colonne "Personnes associées" à la tâche.
Cette case peut prendre un ou plusieurs noms. En revanche, afin de faciliter le remplissage, les gens mettent les noms comme ça leur viens ce qui peut donner:

"personnes associées"
Pierre Paul Jacques
Jacques Paul
Pierre Paul
Jean_Pierre

La seule règle est de relier les noms composés par un "_". Tous les noms sont donc séparés par un espace

Besoin:
Je souhaite faire en sorte que lorsque la case est remplie, elle se trie par ordre alphabétique automatiquement. Afin d'obtenir:

"personnes associées"
Jacques Paul Pierre
Jacques Paul
Paul Pierre
Jean_Pierre

etc....

Je sais faire intervenir une macro type "Worksheet_Change(ByVal Target As Range)"
Ici le principal sujet est le tri.

J’espère que ce petit sujet pourra vous intéresser.

A bientot

Thibaut
 

merinos

XLDnaute Accro
J'ai un spreadsheet de Jocelyn qui reponds a ta question...

Tu écris ton prénom a la place de "gris" dans la colonne B et tu regarde ce qui change en jaune.

DESOLÉ, c'est pas rangé par ordre alphabetique...



Merinos
 

Pièces jointes

  • Liste dynamique Jocelyn.xlsx
    16.2 KB · Affichages: 19

vgendron

XLDnaute Barbatruc
Hello all
petit code à mettre dans l'évènement change de ta feuille
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

tablo = Split(Target, "-")

For i = LBound(tablo) To UBound(tablo)
    x = i

    For k = x + 1 To UBound(tablo)
        If tablo(k) <= tablo(x) Then x = k
    Next k
    If i <> x Then
        ValTemp = tablo(x): tablo(x) = _
        tablo(i): tablo(i) = ValTemp
    End If
Next i

Target = Join(tablo, "-")
Application.EnableEvents = True
End Sub
 

Starkoala

XLDnaute Nouveau
Bon et bien Parfait !!

Je me lançais dans des trucs un peu compliqué.Je ne connaissais pas split ni join...

J'ai ajouté des majuscules à la solution de Pierrejean (les gens les oublies souvent)
For n = LBound(x) To UBound(x)
x(n) = UCase(Left(x(n), 1)) & Mid(LCase(x(n)), 2) 'majuscule
Next n

Merci à Vous!!!
 

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE