Trier contenu d'1 cellule Excel

  • Initiateur de la discussion Initiateur de la discussion Singlar
  • Date de début Date de début

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 !

S

Singlar

Guest
Bonjour,

Je voudrais savoir s'il existe une manière de trier alphabétiquement le contenu d'une cellule à savoir des mots séparés par une virgule.

Merci pour votre aide!
 
Salut Singlar,

Oui, mais c'est un peu long.

Il faut d'abord Convertir (Menu Données), puis Trier (Menu Données), puis Concatener (fonction).

En enregistrant la procédure, cela devient plus aisé.

Ândré.
 
bonjour Singlar , bonjour André

ci joint un exemple par macro : les données de la cellule A1 sont extraites dans un tableau en fonction du separateur ","
ensuite le tri est effectué par la methode du Tri en bulle .


Sub ExtractionEtTriCellule()
Dim I As Integer
Dim J As Byte, K As Byte
Dim Cible As String, Val As String
Dim Tableau() As String

Cible = Range("A1") & ","
For I = 1 To Len(Cible) 'extraire donnees
J = InStr(I, Cible, ",")
K = K + 1
ReDim Preserve Tableau(K - 1)
Tableau(K - 1) = LTrim(Mid(Cible, I, J - I))
I = I + Len(Mid(Cible, I, J - I))
Next

For I = LBound(Tableau) To UBound(Tableau) 'trier
J = I
For K = J + 1 To UBound(Tableau)
If Tableau(K) <= Tableau(J) Then J = K
Next K
If I <> J Then
Val = Tableau(J): Tableau(J) = Tableau(I): Tableau(I) = Val
End If
Next I

Dim resultat As String
For I = 1 To UBound(Tableau) + 1
resultat = resultat & Tableau(I - 1) & Chr(10)
Next

MsgBox resultat, , "Resultat du tri alphabetique "
End Sub


bonne journee
michel
 
Salut,
Voici une possibilité de tri par macro :

Sub TriCellule()
'
' TriCellule Macro
' La fonction Split transforme une chaîne en tableau
' La fonction Join fait l'inverse
'
Dim Chn As String, Tri As Boolean, I As Integer, Tmp As String
Chn = ActiveCell.Text
If Chn = "" Then Exit Sub
TbChn = Split(Chn, ",")
If UBound(TbChn) > 0 Then
Do
Tri = False
For I = 1 To UBound(TbChn)
If TbChn(I) < TbChn(I - 1) Then
Tmp = TbChn(I - 1)
TbChn(I - 1) = TbChn(I)
TbChn(I) = Tmp
Tri = True
End If
Next
Loop While Tri = True
Chn = Join(TbChn, ",")
ActiveCell.Value = Chn
End If
'
End Sub

A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
127
Réponses
6
Affichages
209
Réponses
3
Affichages
103
  • Question Question
Réponses
6
Affichages
137
Réponses
3
Affichages
109
Retour