Bonjour à tous,
Petit nouveau sur le forum et débutant + en VBA, je rencontre un problème sur une de mes macros...
Je fais appel à votre aide car je me retrouve réellement bloqué sur ce point.
Voilà je cherche à trier une listbox à l'aide de deux dtpickers, remplie comme suit :
et pour l'instant avec le code qui ne fonctionne pas trouvé sur internet et adapté :
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 Dim NNI As String Dim Cel, Cel1, Cel2 As Range 'utile pour la suite du code Dim x1 As Integer Set f = Sheets("bddFLM") Set Rng = f.Range("A2:G" & f.[A65000].End(xlUp).Row) TblTmp = Rng.Value Ncol = Rng.Columns.Count For i = LBound(TblTmp) To UBound(TblTmp) ReDim Preserve Choix(1 To i) For k = LBound(TblTmp) To UBound(TblTmp, 2) Choix(i) = Choix(i) & TblTmp(i, k) & "|" Next k Next i Me.ListBox1.List = Rng.Value
Je comprends le début du code mais pas la suite à partir de Additem X(1,2). Cette macro est reliée à un bouton au dessus de la listbox et lorsque je clique sur celui-ci, le tri ne s'effectue pas ou mal et la listbox est completement chamboulée. Par ailleurs, ma listbox est utilisée pour remplir un userform (consultation) en fonction de la ligne choisie et j'aimerai conserver cette fonctionnalité lorsque le tri par les dtpickers est effectué. (tout fonctionne en dehors de ce tri par date)
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
33
34
35
36
37 Application.ScreenUpdating = False Application.DisplayStatusBar = False Datedebut = DTPicker3.Value Datefin = DTPicker4.Value ' Dans le cas où le choix est effectué sur le DTPicker1 If Datefin < Datedebut Then Select Case MsgBox("La date de fin ne peut être inférieure à la date de début", vbOKOnly + vbCritical, "Saisie date incorrect") Case vbOKOnly Exit Sub End Select End If ListBox1.Clear Dim X As Range Sheets("bddFLM").Activate With ListBox1 'Mes dates sont dans la colonne D de la feuille "bddFLM" For Each X In Sheets("bddFLM").Range("D2:D" & Sheets("bddFLM").Range("D65536").End(xlUp).Row) If X.Value >= DTPicker3.Value And X.Value <= DTPicker4.Value Then .AddItem X(1, 2) .List(.ListCount - 1, 1) = X(1, 1) .List(.ListCount - 1, 2) = X(1, 2) .List(.ListCount - 1, 3) = X(1, 3) .List(.ListCount - 1, 4) = X(1, 4) .List(.ListCount - 1, 5) = X(1, 5) End If Next X End With Application.DisplayStatusBar = True Application.ScreenUpdating = True
Je fais appel à un âme charitable pour obtenir de l'aide sur ce sujet ainsi qu'une explication sur le pourquoi du comment que le code trouvé sur internet ne fonctionne pas dans mon cas (si c'est possible)
Merci à vous
Bonne journée
PS : je ne peux pas joindre le fichier hors mp
Partager