VBA Macro Recherche avec Listbox

Emmanuel31100

XLDnaute Nouveau
Bonjour le forum,

J'essaie d'adapter une macro que j'ai trouvé sur le forum à mon projet! :p

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

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

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

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
 

Emmanuel31100

XLDnaute Nouveau
Re : VBA Macro Recherche avec Listbox

A défaut de trouver une solution pour une recherche codée en boucle pour les différentes feuilles du classeur j'ai tenté d'utiliser:

Code:
with sheets("array("janvier","fevrier","mars","avril","mai","juin","juillet","aout","septembre","octobre","novembre","decembre"))

mais la le problème se situe au niveau du Do.. Set .find

Je suis perdu!:mad:
 

skoobi

XLDnaute Barbatruc
Re : VBA Macro Recherche avec Listbox

Bonjour Emmanuel31100,

difficile de voir ce qui ne va pas sans le fichier (ou un extrait s'il est gros).
Une remarque: la macro que tu nous montres devrait planter car la procédure "chercher" n'a qu'un seul argument:
Code:
Public Sub chercher(rech As String)

et dans l'appel, il y a deux arguments:
Code:
Call chercher(TextBox1.Value[B], 1[/B])
....:confused:
 

Emmanuel31100

XLDnaute Nouveau
Re : VBA Macro Recherche avec Listbox

Salut Skoobi!

Je suis encore au stade débutant sur VBA! Mais je me suis rendu compte de ca! La macro a été réalisé par qqn d'autre et j'essaie tant bien que mal de l'adapter à mon projet!

Je te joins mon fichier que j'ai un peu modifié depuis (mais qui ne fonctionne toujours pas)!

Dis moi ce que tu en penses! j'espère que tu y verras plus clair!

PS: j'ai dû supprimer pratiquement tout mais j'ai laissé la partie qui concerne ma question évidemment! (problème de taille)! et comme je suis au bureau et qu'ils n'ont pas de logiciel pour compresser les fichiers bah j'ai dû me débrouiller comme je pouvais :D
 

Pièces jointes

  • Fichier XLD.xls
    48.5 KB · Affichages: 358

Habitude

XLDnaute Accro
Re : VBA Macro Recherche avec Listbox

Dans ce cas précis
A mon avis, les textbox ne devrait pas servir au recherche mais aux filtres.

Donc je te conseil au initialize de ta form.
Tu rempli un vecteur avec toutes tes données.

Et ensuite tu filtre le vecteur en fonction des textbox et tu l'affiche dans ta liste.
 

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat