Bonjour le Forum,
Tout est dans le titre, je souhaiterais connaitre la façon de trier automatiquement une listbox par date, une fois que les items se chargent d'après un choix d'une combobox svp.
Merci beaucoup
Bonjour le Forum,
Tout est dans le titre, je souhaiterais connaitre la façon de trier automatiquement une listbox par date, une fois que les items se chargent d'après un choix d'une combobox svp.
Merci beaucoup
combien de colonne a ta listbox?? 1 ou plusieurs
un exemple sur 1 colonne
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 Private Sub tri_listbox_by_date() Dim tableau, tabl, i, a, e tableau = ListBox1.List() ReDim tabl(UBound(tableau)) For i = 0 To UBound(tableau) For e = 0 To UBound(tableau) elem = tableau(e, 0) If tableau(i, 0) > tableau(e, 0) Then tableau(e, 0) = tableau(i, 0): tableau(i, 0) = elem Next e Next i a = 0 For i = UBound(tableau) To 0 Step -1 tabl(a) = tableau(i, 0) a = a + 1 Next ListBox1.List = tabl 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
Bonjour,
il est, je pense, opportun de préciser quel type de tri tu souhaites ?
- un tri chronologique ? Donc on trie sur les numéros de série des dates
- un tri d'affichage ? On trie sur les Chaines de caractères "d'affichage" du format de date
Ca peut sembler bête ce que je dis, mais prenons simplement l'option 2.
Si tu affiches tes dates en format anglais, le tri d'affichage ne sera pas le même que le tri des dates en affichage "français"
Excusez-moi pour le manque de précisions.
C'est une listbox multicolonnes. Le tri doit s'établir sur la colonne 9 de la listbox. Cette colonne 9 contient des dates JJ/MM/AAAA. Il s'agit donc de faire un tri chronologique.
Merci.
Désolé, mais cela ne m'aide pas beaucoup, où je ne sais pas adapter (je ne suis pas une experte en VBA)....
De plus, si la listbox est vide, il ne faut pas que la macro plante et bloque l'application, mais que le programme continue de fonctionner
j'ai adapté mon tri comme cele :
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
26
27
28
29
30
31
32 Function listbox1() .... Dim a() a = Me.ListBox1.List NbCol = UBound(a, 2) - LBound(a, 2) + 1 Call tri(a(), LBound(a), UBound(a), NbCol, 1) Me.ListBox1.List = a End Function Sub tri(a(), gauc, droi, NbCol, colTri) ' Quick sort ref = a((gauc + droi) \ 2, colTri) g = gauc: d = droi Do Do While a(g, colTri) < ref: g = g + 1: Loop Do While ref < a(d, colTri): d = d - 1: Loop If g <= d Then For c = 0 To NbCol - 1 temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp Next g = g + 1: d = d - 1 End If Loop While g <= d If g < droi Then Call tri(a, g, droi, NbCol, colTri) If gauc < d Then Call tri(a, gauc, d, NbCol, colTri) End Sub
Par contre j'ai un message d'erreur (" Erreur d'exécution 9 : L'indice n'appartient pas à la sélection") si je recherche un nom dans ma combobox et que la listbox n'affiche rien (selon la recherche il est parfois normal que la listbox soit vide).
Mais comment passer outre ce problème ?
Merci
Partager