Champ de Recherche via VB avec liens

Résolu
touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   -  
touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour le forum

J'aurais besoin d'un peu d'aide pour adapter une fonction créée au départ par "Mathier".
Il s'agit d'une fonction permettant de rechercher une valeur texte dans une feuille Excel.
J'ai trouvé pas mal de solutions dans le forum, mais jamais complètement ce que je cherche à faire.

Mais j'aurais besoin d'aide pour lui ajouter 3 fonctions :
- la recherche doit s'effectuer dans un classeur entier (et non dans une feuille comme là).
- indication du nom de la feuille contenant l’occurrence.
- j'aurais besoin de générer des liens hypertextes vers les résultats.

J'aime bien sa proposition, car en colonne C il affiche les résultats au fur-et-à-mesure de la saisie.

Est-ce faisable ?
Voici un lien vers mon fichier transformé :
https://www.cjoint.com/c/LDtr4SwJghj


Par avance merci pour votre aide.

Configuration: Windows / Excel 365

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Je t'ai mis le nom de la feuille et l'adresse du mot recherché. Avec cela tu peux facilement faire le lien hypertexte avec l'enregistreur de macro .

    se déclenche au clic dans la listbox

    Option Compare Text
    Dim nom As String
    Dim DerniereLigneUtilisee As Long
    Private Sub ListBox1_Click()
     Dim i As Byte
         'boucle sur les éléments de la listbox
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) = True Then nom = ListBox1.List(i)
        Next i
         SearchAllSheets 'recherche dans toutes les feuilles
    End Sub
    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
    Sub SearchAllSheets() 'recherche dans toutes les feuilles
    'JE McGimpsey, mpep
    Dim strSearchString As String
    Dim ws As Worksheet
    Dim foundCell As Range
    Dim returnValue As Variant
    Dim loopAddr As String
    Dim countTot As Long
    Dim counter As Long
    strSearchString = nom
      For Each ws In Worksheets
        countTot = countTot + Application.CountIf( _
                    ws.UsedRange, "=" & strSearchString)
      Next ws
      If countTot = 0 Then
        MsgBox strSearchString & " not found."
      Else
       counter = 0
        For Each ws In Worksheets
          With ws
            .Activate
            Set foundCell = .Cells.Find( _
                What:=strSearchString, _
                LookIn:=xlValues, _
                LookAt:=xlPart)
            If Not foundCell Is Nothing Then
              loopAddr = foundCell.Address
              Do
                counter = counter + 1
                foundCell.Activate
                returnValue = MsgBox(ws.Name & "  Found '" & strSearchString & _
                      "' at " & foundCell.Address & vbNewLine & _
                      "(" & counter & " of " & countTot & ")", _
                      vbOKCancel)
                       DerniereLigneUtilisee = Range("H" & Rows.Count).End(xlUp).Row + 1
                 Range("H" & DerniereLigneUtilisee).Value = ws.Name 'nom de la feuille
                 Range("I" & DerniereLigneUtilisee).Value = foundCell.Address 'adresse
                If returnValue = vbCancel Then Exit For
                Set foundCell = .Cells.FindNext( _
                      After:=foundCell)
              Loop While Not foundCell Is Nothing And _
                      foundCell.Address <> loopAddr
            End If
          End With
        Next ws
      End If
    End Sub 'SearchAllShee
    


    Voilà, à toi de jouer

    1
  2. touroul Messages postés 520 Date d'inscription   Statut Membre Dernière intervention   16
     
    Bonjour LePivert

    Un grand merci pour ton aide, c'est vraiment appréciable.
    J'imagine que tu y as passé du temps, mais en effet ça fonctionne.
    J'ai besoin d'un peu de temps pour adapter ça comme je veux, mais dans les grandes lignes j'ai compris, je vais adapter.
    Pour les liens hypertextes, en effet je devrais arriver à me débrouiller.
    Je marque en Résolu, mais si j'ai des soucis je reviendrai poster ici.

    Bonne journée et merci encore.
    0