Bonjour,
Je cherche une fonction afin de trier une variable chiffre dans l'odre croissant :
Par exemple : "8,16,2,7,32,21,5" en "2,5,7,8,16,21,32"
Quelqu'un aurait-il une fonction déjà existante ?
Merci
Bonjour,
Je cherche une fonction afin de trier une variable chiffre dans l'odre croissant :
Par exemple : "8,16,2,7,32,21,5" en "2,5,7,8,16,21,32"
Quelqu'un aurait-il une fonction déjà existante ?
Merci
Bonjour,
Tu devrais certainement trouver ton bonheur par ici: http://boisgontierjacques.free.fr/pa...bleaux.htm#Tri
J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.
Perso, je ferais plus simple : je compierais les valeurs dans des cellules, je ferais un Sort sur cette zone et je récupèrerais le résultat dans la variable.
Une quatrième ligne de code pour effacer les cellules et c'est réglé.
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
La solution de Menhir me paraît plus simple aussi
Voilà je viens de me faire mon petit code! Merci Menhir pour ton astuce
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub TriQuick() Dim var As String, VarTrie As String, Tb() As String Dim i As Long, j As Long var = "16,8,24,6,18,32,13" Tb = Split(var, ",") For k = 0 To UBound(Tb) If k = 0 Then j = 10 For i = j To 16 Cells(j, 1) = Tb(k) Exit For Next i j = j + 1 Next k Range("A10:A16").Sort Key1:=Range("A10"), Order1:=xlAscending, Header:=xlNo For i = 10 To 16 VarTrie = VarTrie & "," & Cells(i, 1) Next i End Sub
re
on peut faire un "Sort" en mémoire aussi
j'ai meme retrouvé un vieux post de 2015 avec un array et sans autre object
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub test() Dim myarray,dl1 myarray = Array(8, 16, 2, 7, 32, 21, 5) Set sl1 = CreateObject("System.Collections.ArrayList") For i = LBound(myarray) To UBound(myarray) sl1.Add myarray(i) Next sl1.Sort MsgBox Join(sl1.ToArray, vbCrLf) End Sub
https://www.developpez.net/forums/d1...iable-tableau/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub tri4() Dim tablo(), temp() tablo = Array(45, 37, 49, 21, 85, 49, 51, 24) ReDim temp(LBound(tablo) To UBound(tablo)) For i = 0 To UBound(tablo) temp(i) = Application.WorksheetFunction.Small(tablo, i + 1) Next Debug.Print Join(temp) End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Plus simple (histoire de montrer que je n'exagérais pas en parlant de 4 lignes de code) :
Mais ce serait encore plus simple en passant par une vraie matrice plutôt qu'une variable String
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Option Base 1 Sub test() Dim a As String a = "16,8,24,6,18,32,13" Range("A1:A7") = Application.Transpose(Split(a, ",")) Range("A1:A7").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo a = Join(Application.Transpose(Range("A1:A7")), ",") Range("A1:A7").ClearContents Debug.Print a End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub test() Dim a As Variant a = Array(16, 8, 24, 6, 18, 32, 13) Range("A1:A7") = Application.Transpose(a) Range("A1:A7").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo a = Application.Transpose(Range("A1:A7")) Range("A1:A7").ClearContents End Sub
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
C'est plus simple en terme de code, mais est ce-que c'est plus rapide?
J'ai toujours pensé que passer par la feuille Excel ca allongeait les temps de traitement
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager