Excel Problème VBA Code erreur "9"

Fermé
Bonjour,

j'ai un soucis que je n'arrive pas a résoudre ...

je fait un filtre avec une listbox sur plusieurs feuilles de mon classeur excel , mais j'ai cette erreur que je n'arrive pas a enlever ...

voici le code :

Option Explicit

Dim v(10000, 6) As String
Dim nbV As Long

Private Sub CommandButton2_Click()
Me.Hide
End Sub

Private Sub Label5_Click()

End Sub

Private Sub ListView1_DblClick()
Dim indice As Long
indice = ListView1.SelectedItem.Tag
With ThisWorkbook.Sheets(v(indice, 0))
.Select
.Range("B" & CLng(v(indice, 6)) & ":G" & CLng(v(indice, 6))).Select
End With
End Sub

Private Sub TextBox1_Change()
AfficherVecteur
End Sub

Private Sub TextBox2_Change()
AfficherVecteur
End Sub

Private Sub TextBox3_Change()
AfficherVecteur
End Sub

Private Sub TextBox4_Change()
AfficherVecteur
End Sub

Private Sub TextBox5_Change()
AfficherVecteur
End Sub

Private Sub TextBox6_Change()
AfficherVecteur
End Sub

Private Sub UserForm_Initialize()
Dim f As Worksheet
Dim i As Long
Dim r As Range
nbV = 0
For Each f In ThisWorkbook.Worksheets
Set r = f.Range("B16")

If f.Name <> "Accueil" Then
For i = 2 To f.Range("B65536").End(xlUp).Row
nbV = nbV + 1
v(nbV, 0) = Trim(r.Offset(i - 1, 0))
v(nbV, 1) = Trim(r.Offset(i - 1, 1))
v(nbV, 2) = Trim(r.Offset(i - 1, 2))
v(nbV, 3) = Trim(r.Offset(i - 1, 3))
v(nbV, 4) = Trim(r.Offset(i - 1, 4))
v(nbV, 5) = Trim(r.Offset(i - 1, 5))
v(nbV, 6) = i
Next i
End If
Next

AfficherVecteur
End Sub

Function AfficherVecteur()
ListView1.ListItems.Clear
Dim i As Long
For i = 0 To nbV
If Valide(i) Then AjoutListe i
Next i
End Function

Function Valide(i) As Boolean
Valide = ((v(i, 0) = TextBox1 Or TextBox1 = "") And _
(v(i, 1) = TextBox2 Or TextBox2 = "") And _
(v(i, 2) = TextBox3 Or TextBox3 = "") And _
(v(i, 3) = TextBox4 Or TextBox4 = "") And _
(v(i, 4) = TextBox5 Or TextBox5 = "") And _
(v(i, 5) = TextBox6 Or TextBox6 = ""))
End Function

Function AjoutListe(i)
Dim j As Long
With ListView1
.ListItems.Add , , v(i, 0)
For j = 1 To 5
.ListItems.Item(.ListItems.Count).ListSubItems.Add , , v(i, j)
Next j
.ListItems.Item(.ListItems.Count).Tag = i
End With
End Function

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Bonjour,
    Il faut arrêter de dire :
    - ça ne marche pas,
    - ça ne fonctionne pas,
    - le résultat n'est pas ce que j'attends.
    Mais plutôt :
    - j'ai une erreur de type : "blabla", qui dit que : "blabla", lorsque je clique sur débogage, la ligne suivante est surlignée en jaune : "ligne"
    Voici ce que je souhaites faire :
    blablablablablabla
    Je vous joint un fichier pour que vous puissiez mieux appréhender le problème.
    pour joindre un fichier :
    mettre le classeur sans données confidentielles en pièce jointe sur

    https://www.cjoint.com/
    puis copier l'adresse du lien et la coller dans le message de réponse *

    Dans l'état de cette discussion, nous ne pouvons rien de plus pour vous.

    *copyright Michel_m
    1. Je "plussoie" des deux index, et il faut arrêter d'écrire "sa" à la place de "ça", ça induit en erreur mais pas sa.
  2. Après chaque "function", tu peux écrire :
    On Error Resume Next
    1. Modérateur
      Bonjour,
      C'est certainement la moins bonne, même la pire manière de traiter une erreur. D'autant plus que tu réponds sans même connaitre l'erreur!
      Chapeau!...
    2. en tout cas , sa ne fonctionnent toujours pas même avec "On Error Resume Next" ...
    3. Bonjour,
      Certes, tu as raison, mais sans connaître l'erreur, j'ai vite vu que ce code VBA sortait d'un drôle de chapeau, alors aux grands maux...
    4. "TUXBOY" c'est bon sa marche j'ai corriger moi même mon code ... Je poste jamais d'aide sur les forums car je trouve sa inutile , sa vient de confirmer ce que je pensais ...

      Cordialement
    5. Bravo, tu es le meilleur et bel esprit, ne change rien, c'est parfait.