Famille de feuilles de calcul Microsoft avec des outils pour l’analyse, le graphique et la communication des données.
La macro suivante commence par te demander la plage à trier, par exemple B2:C4 :
Sub Tri()
Dim Tabl() As String, C As Range, Plage As Range
Set Plage = Application.InputBox("Sélectionnez la plage des cellules à trier", Type:=8)
For Each C In Plage
Tabl = Split(C, Chr(10))
QuickSort Tabl, LBound(Tabl), UBound(Tabl)
C = Join(Tabl, Chr(10))
Next C
End Sub
Sub QuickSort( _
list() As String, _
ByVal lngMin As Long, _
ByVal lngMax As Long)
Dim strMidValue As String
Dim lngHi As Long
Dim lngLo As Long
Dim lngIndex As Long
' S'il y a 0 ou 1 élément dans la liste,
' la sous-liste est déjà triée
If lngMin >= lngMax Then Exit Sub
' Valeur de partionnement
lngIndex = Int((lngMax - lngMin + 1) * Rnd + lngMin)
strMidValue = list(lngIndex)
' Echanger les valeurs
list(lngIndex) = list(lngMin)
lngLo = lngMin
lngHi = lngMax
Do
' Chercher, à partir de lngHi, une valeur < strMidValue
Do While list(lngHi) >= strMidValue
lngHi = lngHi - 1
If lngHi <= lngLo Then Exit Do
Loop
If lngHi <= lngLo Then
list(lngLo) = strMidValue
Exit Do
End If
' Echanger les valeurs lngLo et lngHi
list(lngLo) = list(lngHi)
' Chercher à partir de lngLo une valeur >= strMidValue
lngLo = lngLo + 1
Do While list(lngLo) < strMidValue
lngLo = lngLo + 1
If lngLo >= lngHi Then Exit Do
Loop
If lngLo >= lngHi Then
lngLo = lngHi
list(lngHi) = strMidValue
Exit Do
End If
' Echanger les valeurs lngLo et lngHi
list(lngHi) = list(lngLo)
Loop
' Trier les 2 sous-listes
QuickSort list, lngMin, lngLo - 1
QuickSort list, lngLo + 1, lngMax
End Sub
Pour l'installer dans ton classeur, fais un clic droit sur un onglet, clique sur "visualiser le code". Dans la fenêtre VBE, repère, à gauche, le VBAProject qui porte le nom de ton classeur. Fais un clic droit dessus, clique sur "Insertion" et sur "Module". Colle le code dans la partie droite. Enregistre le classeur au format .xlsm (classeur prenant en charge les macros). Referme l'éditeur VBA.
Pour l'exécuter, clique sur l'onglet "Affichage" et sur le bouton "Macro". Double clique sur la macro "Tri".
Daniel