XL 2016 Probleme "erreur d'execution 5"

GuillaumeTenim

XLDnaute Nouveau
Bonjour tout le monde.

J'ai un souci avec mon code vba, et je n'arrive pas à trouver de solution. J'ai un code d'erreur d'execution 5 au lancement de l'userform. J'ai repéré le problème mais je n'arrive pas à le résoudre. La ligne qui pose problème est

Sub filtre()
...
Me.ListBox1.ListIndex = Application.Transpose(a())
...
End sub

Je suis parti d'un fichier existant trouver sur le net. Le fichier marche nickel mais quand je veux le faire tourner sur mon usf... Nada.
Je m'en remets donc à vous. Si quelqu'un pouvait m'aider à solutionner le problème.
Je tourne sur windows 10 et excel 2016.

Bien à vous.
 

Pièces jointes

  • Maintenance appareils 6.2.xlsm
    239.1 KB · Affichages: 11
Solution
A tester :
VB:
Sub filtre()
   Dim a()
  
   Ligne = 0
   For i = 1 To Bd.Rows.Count
     ok = True
     For n = 1 To Bd.Columns.Count
      If Not Bd.Cells(i, n) Like Me("Cbx" & n) Then ok = False
     Next n
     If ok Then
       Ligne = Ligne + 1
       ReDim Preserve a(1 To 5, 1 To Ligne)
       For k = 1 To Bd.Columns.Count: a(k, Ligne) = Bd.Cells(i, k): Next k
      End If
   Next i
   If Ligne = 1 Then ReDim Preserve a(1 To 5, 1 To 2)
    On Error Resume Next
        ListBox1.Clear
        ListBox1.List = Application.Transpose(a)
    On Error GoTo 0
   Me.TextBox3 = Ligne
  
End Sub
Code:
Sub ListeCol(noCol)
    
  Set MonDico = CreateObject("Scripting.Dictionary")
  For i = 1 To Bd.Rows.Count
     ok = True
     For n = 1 To...

fanch55

XLDnaute Barbatruc
Salut le fil,
Je suis surpris qu'on essaye de mette un tableau dans un listindex .
Comme le préconise les premiers intervenants, utilisez le list.

Cependant si vous voulez que votre usf fonctionne , après analyse du code:
If ok Then Me.ListBox1.List = Application.Transpose(a)
( car si le filtre ne donne rien, a restera vide et le .list se plantera .. )

Ce serait bien également de mettre une valeur par défaut dans vos CBX lorsque vous les chargez dans la sub ListeCol, par exemple en fin de celle-ci :
Me("Cbx" & noCol) = "*"
 

GuillaumeTenim

XLDnaute Nouveau
Bonjour Staple 1600,

Merci pour ta réponse mais j'ai toujours la même erreur mais si j'enlève des parenthèses. Je vous joins le fichier sur lequel j'ai pris le code. Celui_ci marche très bien en solo

Cordialement.
 

Pièces jointes

  • FormCascadeOrdreQQ1.xls
    74.5 KB · Affichages: 2

GuillaumeTenim

XLDnaute Nouveau
Fanch 55,

Ca marche beaucoup mieux surtout avec le Me("Cbx" & noCol) = "*" . Si je ne le mets pas rien ne se remplit. Par contre je n'arrive pas à filtrer la listbox en choisissant une des valeurs dans une combobox.
Je vous mets le fichier corrigé suivant vos remarques.

Merci

Cordialement.
 

Pièces jointes

  • Maintenance appareils 6.2.xlsm
    240.7 KB · Affichages: 3

fanch55

XLDnaute Barbatruc
A tester :
VB:
Sub filtre()
   Dim a()
  
   Ligne = 0
   For i = 1 To Bd.Rows.Count
     ok = True
     For n = 1 To Bd.Columns.Count
      If Not Bd.Cells(i, n) Like Me("Cbx" & n) Then ok = False
     Next n
     If ok Then
       Ligne = Ligne + 1
       ReDim Preserve a(1 To 5, 1 To Ligne)
       For k = 1 To Bd.Columns.Count: a(k, Ligne) = Bd.Cells(i, k): Next k
      End If
   Next i
   If Ligne = 1 Then ReDim Preserve a(1 To 5, 1 To 2)
    On Error Resume Next
        ListBox1.Clear
        ListBox1.List = Application.Transpose(a)
    On Error GoTo 0
   Me.TextBox3 = Ligne
  
End Sub
Code:
Sub ListeCol(noCol)
    
  Set MonDico = CreateObject("Scripting.Dictionary")
  For i = 1 To Bd.Rows.Count
     ok = True
     For n = 1 To Bd.Columns.Count
       If n <> noCol Then
         If Not Bd.Cells(i, n) Like Me("Cbx" & n) Then ok = False
       End If
     Next n
     If ok Then
       tmp = Bd.Cells(i, noCol)
       MonDico(tmp) = tmp
     End If
   Next i
   MonDico.Add "*", "*"
   temp = MonDico.items
   Call Tri(temp, LBound(temp), UBound(temp))
   Me("Cbx" & noCol).List = temp
   If Me("Cbx" & noCol) = "" Then Me("Cbx" & noCol) = "*"

  
End Sub
 

Discussions similaires

Réponses
5
Affichages
191
Réponses
1
Affichages
113

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67