[Résolu] Tri alphabétique dans cellule

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 !

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
 
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
 
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!!!
 
- 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
Retour