Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

trie tableau (vba)

2 réponses
Avatar
Emcy
bonjour,

en vba, j'ai tableau de type string
à l'interieur, j'ai ceci
Tab(0) = "C3"
Tab(1) = "A1"
Tab(2) = "C32"
Tab(3) = "C302"
Tab(4) = "C31"
Tab(5) = "C301"
Tab(6) = "AB1"

comment faire pour que pon tableau soit trié :
1- de façon alaphabetique pour les caractères qui sont toujours dans la
partie gauche
2- de façon croissante pour la partie numérique

je dois avoir comme résultat :
Tab(0) = "A1"
Tab(1) = "AB1"
Tab(2) = "C3"
Tab(3) = "C31"
Tab(4) = "C32"
Tab(5) = "C301"
Tab(6) = "C302"

2 réponses

Avatar
michdenis
Bonjour Emcy,

Essaie ceci :

'---------------------------
Sub test()

Dim T(0 To 6)

T(0) = "C3"
T(1) = "A1"
T(2) = "C32"
T(3) = "C302"
T(4) = "C31"
T(5) = "C301"
T(6) = "AB1"

'True or false = ordre croissant ou décroissant
BubbleSort T, True
Msgbox T(0)

End Sub

'---------------------------
Sub BubbleSort(ToSort As Variant, Optional SortAscending As Boolean = True)

' Chris Rae's VBA Code Archive - http://chrisrae.com/vba
' By Chris Rae, 19/5/99. My thanks to
' Will Rickards and Roemer Lievaart for some fixes.

Dim AnyChanges As Boolean
Dim BubbleSort As Long
Dim SwapFH As Variant

Do
AnyChanges = False
For BubbleSort = LBound(ToSort) To UBound(ToSort) - 1
If (ToSort(BubbleSort) > ToSort(BubbleSort + 1) And SortAscending) _
Or (ToSort(BubbleSort) < ToSort(BubbleSort + 1) And Not SortAscending) Then
' These two need to be swapped
SwapFH = ToSort(BubbleSort)
ToSort(BubbleSort) = ToSort(BubbleSort + 1)
ToSort(BubbleSort + 1) = SwapFH
AnyChanges = True
End If
Next BubbleSort
Loop Until Not AnyChanges

End Sub
'---------------------------


Salutations!




"Emcy" a écrit dans le message de news:
bonjour,

en vba, j'ai tableau de type string
à l'interieur, j'ai ceci
Tab(0) = "C3"
Tab(1) = "A1"
Tab(2) = "C32"
Tab(3) = "C302"
Tab(4) = "C31"
Tab(5) = "C301"
Tab(6) = "AB1"

comment faire pour que pon tableau soit trié :
1- de façon alaphabetique pour les caractères qui sont toujours dans la
partie gauche
2- de façon croissante pour la partie numérique

je dois avoir comme résultat :
Tab(0) = "A1"
Tab(1) = "AB1"
Tab(2) = "C3"
Tab(3) = "C31"
Tab(4) = "C32"
Tab(5) = "C301"
Tab(6) = "C302"
Avatar
Pounet95
Bonsoir Emcy ( ... et il neige toujours, même si ça ne tient pas )

Si je comprends, tu veux initialiser ton tableau dans un module VBA de telle
sorte
que tous les éléments de ce dernier soient classés dans l'ordre croissant ?

dans une feuille XL, je décompose ma formule, recopie les lignes tant que
besoin
et effectue le tri sur les colonnes qui vont bien

exemple ici :
http://cjoint.com/?bgryAIfL7U

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Emcy" a écrit dans le message de news:

bonjour,

en vba, j'ai tableau de type string
à l'interieur, j'ai ceci
Tab(0) = "C3"
Tab(1) = "A1"
Tab(2) = "C32"
Tab(3) = "C302"
Tab(4) = "C31"
Tab(5) = "C301"
Tab(6) = "AB1"

comment faire pour que pon tableau soit trié :
1- de façon alaphabetique pour les caractères qui sont toujours dans la
partie gauche
2- de façon croissante pour la partie numérique

je dois avoir comme résultat :
Tab(0) = "A1"
Tab(1) = "AB1"
Tab(2) = "C3"
Tab(3) = "C31"
Tab(4) = "C32"
Tab(5) = "C301"
Tab(6) = "C302"