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