Emmanuel31100
XLDnaute Nouveau
Bonjour le forum,
J'essaie d'adapter une macro que j'ai trouvé sur le forum à mon projet!
Cependant, cette macro qui permet d'afficher les résultats recherchés dans un listbox fonctionne bien lorsque je rentre une seule feuille dans le code, mais cela devient un véritable casse-tête lorsque je cherche à l'adapter pour le classeur entier!
L'USF se présente comme ceci:
Textb1 : NOM/PRENOM
Textb2 : Date
Textb3 : Type
Textb4 : Profil
Textb5 : Entreprise
Un Listbox sous les textbox affiche les résultats. Une fois le résultat sélectionner, la macro permet de m'envoyer directement à la source du résultat dans le classeur et de sélectionner la ligne entière (pour une meilleure lisibilité).
Ma question donc, comment faire en sorte que la recherche se passe dans le classeur entier et non une seule feuille?
Question annexe: Est-il possible d'afficher dans une 6ème colonne du listbox l'onglet où se trouve le résultat?
Voici le code, que j'ai tenté de remagner pour l'adapter au classeur entier donc mais je ne vois pas vraiment où je pêche
Merci d'avance pour votre aide
Emmanuel
J'essaie d'adapter une macro que j'ai trouvé sur le forum à mon projet!
Cependant, cette macro qui permet d'afficher les résultats recherchés dans un listbox fonctionne bien lorsque je rentre une seule feuille dans le code, mais cela devient un véritable casse-tête lorsque je cherche à l'adapter pour le classeur entier!
L'USF se présente comme ceci:
Textb1 : NOM/PRENOM
Textb2 : Date
Textb3 : Type
Textb4 : Profil
Textb5 : Entreprise
Un Listbox sous les textbox affiche les résultats. Une fois le résultat sélectionner, la macro permet de m'envoyer directement à la source du résultat dans le classeur et de sélectionner la ligne entière (pour une meilleure lisibilité).
Ma question donc, comment faire en sorte que la recherche se passe dans le classeur entier et non une seule feuille?
Question annexe: Est-il possible d'afficher dans une 6ème colonne du listbox l'onglet où se trouve le résultat?
Voici le code, que j'ai tenté de remagner pour l'adapter au classeur entier donc mais je ne vois pas vraiment où je pêche
Code:
Private Sub CommandButton1_Click()
Cells(Recherche.ListBox1.List(Recherche.ListBox1.ListIndex, 2), 1).EntireRow.Select
Unload Me
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
Private Sub textbox5_change()
Call chercher(TextBox5.Value, 5)
End Sub
Public Sub chercher(rech As String) 'recherche d'une chaine
Dim sel As Object ' cellule trouvée
Dim c As Integer ' colonne
Dim f As Integer ' feuille
Dim l As Long ' ligne
Dim n As Integer ' éléments trouvés
Dim valide As Boolean
Dim i As Integer
l = 2: n = 0
Recherche.ListBox1.Clear
If rech = "" Then Exit Sub
For f = 1 To Sheets.Count ' boucle feuilles
With Sheets(f)
l = 1: c = 1
Do ' recherche
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 And sel.Row <= l Then Exit Do
c = sel.Column
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 & " " & _
.Cells(l, 5).Value)
Recherche.ListBox1.List(n, 2) = sel.Row
n = n + 1 ' élément trouvé : traitement
Loop
End With
Next f
End Sub
Merci d'avance pour votre aide
Emmanuel