Tri de gauche à droite avec VBA
aqpm
-
aqpm -
aqpm -
Bonjour,
Je dispose d'un tableau(10*10) contenant des valeurs entieres :
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
je voudrai à l'aide de macro, classer ces valeurs dans l'ordre croissant:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
Je dispose d'un tableau(10*10) contenant des valeurs entieres :
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
je voudrai à l'aide de macro, classer ces valeurs dans l'ordre croissant:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
A voir également:
- Tri de gauche à droite avec VBA
- Les textes ne doivent pas être en retrait à droite et à gauche - Guide
- Windows 11 barre des taches a gauche - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Barre droite clavier - Forum Windows
1 réponse
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
aqpm
C'est exactement ça!! Merci beaucoup Michel!