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 :

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
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
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 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)

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