Bonjour,
Je souhaiterais mettre ma base de données dans un tableau puis la trier en fonction du nom d'une colonne (615) et n'afficher dans la ListBox 4 (multicolonnes) que les valeurs des lignes identiques (Case 1) en cliquant sur le bouton 12. Je me suis pour cela servie de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
FiltreArrayCléColRécup(Tbl, clé, colClé, colRécup)
mais j'ai le message d'erreur suivant : Erreur d'exécution '424': Objet requis qui apparaît.

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
Private Sub CommandButton12_click()
 
Dim a, b, feuille
Set feuille = Sheets("CLASSEMENT")
Set a = feuille.Range("A2:G" & f.[A65000].End(xlUp).Row).Value
  b = FiltreArrayCléColRécup(a, "Case 1", 615, Array(615, 4, 5, 6, 10, 11, 12, 17, 14))
  [p2].Resize(UBound(b), UBound(b, 2)) = b
b = Me.ListBox4.List
 
End Sub
 
Function FiltreArrayCléColRécup(Tbl, clé, colClé, colRécup)
  Dim n, d As Object, c, i, k
  n = 0
  Set d = CreateObject("scripting.dictionary")
  For Each c In clé: d(c) = "": Next c
  For i = 1 To UBound(Tbl)
    If d.Exists(Tbl(i, colClé)) Then n = n + 1
  Next i
  Dim Tbl2(): ReDim Tbl2(1 To n, LBound(colRécup) To UBound(colRécup))
  n = 0
  For i = 1 To UBound(Tbl)
    If d.Exists(Tbl(i, colClé)) Then
      n = n + 1
      For k = LBound(colRécup) To UBound(colRécup): Tbl2(n, k) = Tbl(i, colRécup(k)): Next k
    End If
  Next i
  If n > 0 Then FiltreArrayCléColRécup = Tbl2
End Function
Pourriez-vous me dire pourquoi cela ne fonctionne pas ? Merci