Problème Listbox

Emmanuel31100

XLDnaute Nouveau
Bonjour le forum,

Je suis en train de finaliser un long projet de saisi et j'utilise pour cela vba. Je commence enfin à comprendre les bases mais je bloque encore sur pas mal de choses. Aujourd'hui mon problème se situe au niveau d'une listbox dans un USF. :(

Je cherche en fait à créer une macro de recherche pour une feuille dont les colonnes sont:
A : NOM/PRENOM
B : Typologie de l'appartement
C : Secteur
D : Norme sociale

J'ai trouvé sur plusieurs feuilles des codes que j'ai essayé d'adapter à mon projet mais sans succès.

L'essentiel du code que j'essaie d'adapter se basait sur 4 colonnes aussi (Nom, prénom, âge, profession) et le voici:

Code:
Private Sub CommandButton1_Click()
Sheets("ddes loc").Select
Me.Hide
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub ListBox1_Click()
[B]Sheets("ddes loc").Cells(recherche.ListBox1.List(recherche.ListBox1.ListIndex, 2), 1).Select[/B]
End Sub

Private Sub TextBox1_Change()
    Call chercher(TextBox1.Value, 1)
End Sub

Private Sub TextBox2_Change()
    Call chercher(TextBox2.Value, 2)
End Sub

Private Sub TextBox3_Change()
    Call chercher(TextBox3.Value, 3)
End Sub

Private Sub TextBox4_Change()
    Call chercher(TextBox4.Value, 4)
End Sub
Public Sub chercher(rech, c)  ' recherche d'une chaine
Dim sel As Object
Dim valide As Boolean
Dim i As Integer
Dim l As Long
Dim n As Integer
    l = 2:  n = 0
    recherche.ListBox1.Clear
With Sheets("Ddes LOC")
    If rech = "" Then Exit Sub
Do
    Set sel = .Cells.Find(what:=rech, After:=.Cells(l, c), _
        LookIn:=xlValues, LookAt:=xlPart, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False)
    If sel Is Nothing Then Exit Do
    If sel.Column <> c Then Exit Do
    If sel.Row <= l Then Exit Do
    l = sel.Row
    valide = True
    For i = 1 To 4
        If recherche.Controls("TextBox" & i).Value <> "" _
            And InStr(1, LCase(.Cells(l, i).Value), LCase(recherche.Controls("TextBox" & i).Value)) = 0 Then valide = False
    Next i
    If valide Then
        recherche.ListBox1.AddItem _
            (.Cells(l, 1).Value & " " & _
            .Cells(l, 2).Value & " " & _
            .Cells(l, 3).Value & " " & _
            .Cells(l, 4).Value)
        recherche.ListBox1.List(n, 2) = sel.Row
        n = n + 1
    End If
Loop
End With
End Sub

Private Sub UserForm_Initialize()
  With Sheets("Ddes LOC")
    Me.Label1.Caption = .Cells(1, 1).Value
    Me.Label2.Caption = .Cells(1, 2).Value
    Me.Label3.Caption = .Cells(1, 3).Value
    Me.Label4.Caption = .Cells(1, 4).Value
  End With
End Sub

La recherche s'effectue bien, mais lorsque je veux cliquer sur un des résultats contenu dans la listbox, j'obtiens le message d'erreur suivant:

"Erreur d'exécution '1004' : La méthode Select de la classe Range a échoué"

et VBA me renvoie directement sur la ligne en gras.

Quelqu'un aurait-il une idée? Je ne comprends pas pourquoi la sélection ne fonctionnerait pas, j'ai bien adapté le code avec le nom des feuilles de mon classeur.

Merci d'avance pour votre aide toujours si précieuse!;)

Emmanuel

PS : Je vais continuer à chercher de mon côté, et je reste attentif à vos réponses :)
 

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed