A voir également:
- Tri de gauche à droite avec VBA
- Windows 11 barre des taches a gauche - Guide
- 2 ecrans souris de droite a gauche ✓ - Forum Windows
- Barre droite clavier ✓ - Forum Autres distributions Linux
- Tri excel - Guide
- Son plus fort à gauche qu'à droite ecouteur bluetooth ✓ - Forum Audio
1 réponse
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
25 avril 2009 à 16:32
25 avril 2009 à 16:32
Bonjour
les valeurs peuvent être différentes dans les lignes (234, 567 123 ...); les doublons sont éliminés
Option Explicit
les valeurs peuvent être différentes dans les lignes (234, 567 123 ...); les doublons sont éliminés
Option Explicit
Sub trier_horizontal(lig As Byte) Dim plage As Range, cellule As Range Dim coll As Collection Dim cptr As Byte, nbre As Byte Dim alpha(), i As Byte, j As Byte, k As Byte, tmp As Byte, col As Byte Set plage = Range(Cells(lig, 1), Cells(lig, 10)) ' a adapter Set coll = New Collection 'recherche les valeurs sans doublons For Each cellule In plage On Error Resume Next coll.Add cellule.Value, CStr(cellule.Value) On Error GoTo 0 Next nbre = coll.Count ' restitue la plage épurée des doublons dans une variable tableau ReDim alpha(nbre) cptr = 1 While cptr <= nbre alpha(cptr) = coll(cptr) cptr = cptr + 1 Wend 'Tri décroissant For i = 1 To nbre j = i For k = j + 1 To nbre '(pour un tri croissant ecrire <=) If alpha(k) >= alpha(j) Then j = k Next k If i <> j Then tmp = alpha(j) alpha(j) = alpha(i) alpha(i) = tmp End If Next i 'restitution des valeurs en ordre décroissant Application.ScreenUpdating = False Rows(cptr).ClearContents col = 1 While col <= nbre Cells(lig, col) = alpha(col) col = col + 1 Wend Set plage = Nothing Set coll = Nothing End Sub Sub boucler() Dim ligne As Byte Application.ScreenUpdating = False For ligne = 1 To 10 trier_horizontal (ligne) Next End Sub
25 avril 2009 à 17:31