Moteur de recherche avec userform

Bonjour à tous,

Je suis débutant en VBA et je souhaiterai une aide car je n'est pas trouvé ou pas su utilisé les divers solutions trouvé sur ce sujet.

J'aimerai inclure dans un classeur excel qui contient plusieurs onglets, un moteur de recherche qui effectue la recherche sur tout les onglets en placent un bouton sur le 1er onglet qui ouvrir une boite de recherche userform,

dans cette boite il y a une case type menu déroulant ou on tape le mot recherché et une autre case en dessous ou s'affiche tout les mots trouvés et le nom de l'onglet ou ils se trouvent, il ne reste alors plus qu'à sélectionner le mot à la page qui m’intéresse, cliquer sur un bouton OK pour qu'il ouvre l'onglet et mette en surbrillance la ligne du mot trouvé.

Est ce possible ?

Userfrom est créé mais impossible pour moi de faire les codes VBA

Merci à vous pour votre aide.

Cordialement.

Mat

80essai.xlsm (101.26 Ko)

Bonjour,

j'ai trouvé un code de recherche que j'ai réussi non sans mal à l'adapter à mon userform et qui me conviens bien mais je n'arrive pas à l'adapté à l'ensemble du classeur, il est seulement fait pour une recherche dans une liste A2:A24 et je ne sais pas comment faire pour qu'il recherche dans tout les onglets.

ensuite il manque aussi le faite de cliquer sur le mot qu'il trouve et qu'il ouvre directement la feuille ou il est situé.

Voici le code trouvé qui est d'origine:

Private Sub TextBox1_Change()

    Application.ScreenUpdating = False

    Range("A2:A24").Interior.ColorIndex = 2
    ListBox1.Clear

    If TextBox1 <> "" Then
        For ligne = 2 To 24
            If Cells(ligne, 1) Like "*" & TextBox1 & "*" Then
                Cells(ligne, 1).Interior.ColorIndex = 43
                ListBox1.AddItem Cells(ligne, 1)
            End If
        Next
    End If

End Sub

et le même que j'ai adapté a mon userform

Private Sub ComboBox1_Change()

    Application.ScreenUpdating = False
Range("A2:A24").Interior.ColorIndex = 2
    ListView1.Clear

    If ComboBox1 <> "" Then
        For ligne = 2 To 24
            If Cells(ligne, 1) Like "*" & ComboBox1 & "*" Then
                Cells(ligne, 1).Interior.ColorIndex = 43
                ListView1.AddItem Cells(ligne, 1)
            End If
        Next
    End If

End Sub

Merci pour vos aides.

bonjour

je fais Ctrl+F, puis <Rechercher tout>. cliquer sur le lien pour accéder

le seul inconvénient, c'est qu'il faut à chaque fois cliquer l'option "classeur" et redimensionner la fenêtre des résultats ça c'est franchement nul.

Bonjour,

Merci pour la réponse...

Oui c'est ce que je faisais au début, et c'est pour ça que je veux créer une boite de recherche "plus simplifier" et comme plusieurs personne utiliser se fichier ça simplifierai les choses pour tout le monde (sauf pour moi qui cherche désespérément à taton pour y arriver avec set userform "

Mais merci quand même pour votre intervention

Bonjour Guignol81, jmd

Proposition à voir si cela convient

Double clic sur listview pour voir la selection

273essai.xlsm (106.92 Ko)

Bonjour BOB71AU

Merci beaucoup pour l'avancé extraordinaire du moins de mon point de vue, c'est bien cette fonction que je recherche sans y parvenir.

Mais j'ai encore un probleme, il trouve bien tout les mot mais seulement à partir de la colonne F jusqu'à J, et j'ai besoin qu'il cherche sur les pages entières ou au moins de A1 à Z2000 de chaque page.

Encore merci beaucoup pour cette grande avancée !!!!

Re

dans le code du bouton recherche

remplacer

For Each Cel In Sheets(i).Range("F2:J" & Sheets(i).Range("F" & Application.Rows.Count).End(xlUp).Row)

par

For Each Cel In Sheets(i).Range("A1:Z" & Sheets(i).Range("F" & Application.Rows.Count).End(xlUp).Row)

Mais dans le fichier fourni, il n'y a pas de données dans la colonne A

donc dans cette ligne de code cela signifie

A1:Z de la cellule a1 à z en utilisant la colonne de référence F pour le nombre de lignes

sinon pour plage fixe

For Each Cel In Sheets(i).Range("A1:Z2000")

Merci ça fonctionne très bien.

Il me reste une question, est il possible de supprimer le bouton validé et de le remplacer par une écriture intuitive dans la case recherche et quand le mot recherché s'affiche on clique dessus et il vient s'afficher dans la liste comme il le fait quand on clique sur validé, ensuite comme il fait maintenant, on double clique et il nous amène à la page du mot.

Un grand merci pour votre aide.

Re

Pour cela, il faudrait que le combobox soit alimenté

mais si je mets la macro sur combo change, la macro va se déclenché à chaque caractère saisi

sinon le déclenché sur combox exit

exemple sur exit du combo

saisir la recherche + enter par exemple

266essai-1.xlsm (107.90 Ko)

Merci beaucoup.

Je pense surement revenir pour peaufiner l'userform, mais grâce à vous le travail est sacrément avancé pour pas dire fini... ça faisait une semaine que j’étais en galère

Je vous souhaite une bonne soirée.

PS: Je met le sujet résolu ? Ou je continue à poster ici si j'ai encore besoin ?

Bonsoir

Mieux vaut cloturer le post et en ouvrir un nouveau pour un autre sujet

Pas sur d'être encore présent pour vous aider

A+

Bonjour,

Je réouvre se topic car j'ai un petit soucis. Le moteur fonctionne toujours bien, le hic, j'ai rajouté des feuilles et le moteur de recherche ne prend pas en compte les nouvelles feuilles insérées.

Voici le code de l'userform:

 Option Compare Text

Sub EnTête()

    Dim i%, lbvis As Boolean

    If lbxPrest.RowSource <> "" Then

       lbvis = True

    Else

        lbvis = False

    End If

    For i = 1 To 3

        Controls("lbPr" & i).Visible = lbvis

    Next i

End Sub

Private Sub cbQuit_Click()

    Unload Me

End Sub

Private Sub cbValid_Click()

Dim Cel As Range

    Application.ScreenUpdating = False

'Range("A2:A24").Interior.ColorIndex = 2

    Me.ListView1.ListItems.Clear

    If ComboBox1 <> "" Then

'      For i = Sheets.Count To 1 Step -1 'en mode de la dernière feuille à la première

      For i = 1 To Sheets.Count         'en mode de la première feuille à la dernière

        If Sheets(i).Name <> "Recherche" Then

            For Each Cel In Sheets(i).Range("A1:Z" & Sheets(i).Range("F" & Application.Rows.Count).End(xlUp).Row)

'            For Each Cel In Sheets(i).Range("A1:Z2000")

               If Cel.Row > 3 And Cel <> "" Then

                  If Cel Like "*" & ComboBox1 & "*" Then

'                    Cel.Interior.ColorIndex = 43

                     UserForm1.ListView1.ListItems.Add , , Cel

                     UserForm1.ListView1.ListItems(UserForm1.ListView1.ListItems.Count).ListSubItems.Add , , Sheets(i).Name

                     UserForm1.ListView1.ListItems(UserForm1.ListView1.ListItems.Count).ListSubItems.Add , , Cel.Address

                  End If

               End If

            Next Cel

         End If

      Next i

    End If

   Application.ScreenUpdating = True

End Sub

Private Sub ListView1_DblClick()

Dim Feuille As String, Cellule As String

Feuille = UserForm1.ListView1.SelectedItem.ListSubItems(1)

Cellule = UserForm1.ListView1.SelectedItem.ListSubItems(2)

If Me.ListView1.ListItems.Count <> 0 Then

   Sheets(Feuille).Activate

   Sheets(Feuille).Range(Cellule).Activate

   ActiveCell.EntireRow.Activate

End If

End Sub

Private Sub UserForm_Initialize()

  With Me.ListView1

        With .ColumnHeaders

        'Titres des colonnes

            .Clear

            'Ajout des colonnes

            .Add , , "Liste", 300, lvwColumnLeft

            .Add , , "Onglet", 116, lvwColumnLeft

            .Add , , "Cellule", 90, lvwColumnLeft

        End With

    .View = lvwReport 'affichage en mode Rapport

    .Gridlines = True 'affichage d'un quadrillage

    .FullRowSelect = True 'Sélection des lignes comlètes

    .LabelEdit = lvwManual

    .HideSelection = False

    .HotTracking = False

  End With

End Sub   

Il y a 41 feuilles au total sur le classeur.

En vous remerciant.

Bonjour,

J'ai toujours pas solutionné le problème des nouvelles feuilles ajoutées dans le classeur que le moteur de recherche ne prend pas en compte.

Quelqu'un pour m'aider ?

Merci.

re

ctrl+F

tellement efficace et simple

amitiés

Oui j'utilisais ça au départ.

Mais on est nombreux a utiliser le fichier et ça permet d'avoir une liste des éléments recherchés.

Il fonctionne bien sauf que je n'arrive pas à inclure les nouvelles feuilles.

Je viens de faire un teste avec l'option dupliquer une feuille qui elle est prise en compte par le moteur de recherche et ça fonctionne.

Donc je pense que je vais effacer toutes les feuilles qui ne sont pas prisent en compte et les recopier en dupliquant.

Va y avoir du taf...

Merci quand même.

Rechercher des sujets similaires à "moteur recherche userform"