Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Rechercher un mot dans un classeur

  • Initiateur de la discussion Initiateur de la discussion MJ13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MJ13

XLDnaute Barbatruc
Bonjour à tous

Je cherche un code VBA pour trouver si un mot est présent dans un classeur ou je peux avoir des feuilles masquées.

Avec ce code:

Code:
Sub Trouve_Terme_Toto()
ActiveWorkbook.Sheets.Select
Cells.Find("toto").Select
End Sub

Cela fonctionne que si je n'ai qu'un toto dans le classeur et que toutes mes feuilles sont affichées.

Le but serait de comptabiliser rapidement le nombre de toto dans mon classeur et d'avoir une liste dans une feuille avec un lien hypertexte pour y accéder rapidement.

Merci d'avance 😱.
 

Pièces jointes

Re : Rechercher un mot dans un classeur

Bonjour Jacques

Merci beaucoup pour ce fichier. Il correspond tout à fait à la demande et est assez rapide 🙂. En plus, j'aime bien les codes courts que je peux comprendre et qui sont facilement adaptables 😱.

Merci et bon Week-end 🙂.

Voici le code adapté à mon fichier:

Code:
Sub Cherche_Mots_Classeur()
'JB
   'If Me.TextBox1 = "" Then Exit Sub
   Application.DisplayAlerts = False
   On Error Resume Next
   Sheets("Temp").Delete
   On Error GoTo 0
   Sheets.Add after:=Sheets(Sheets.Count)
   ActiveSheet.Name = "Temp"
   '[A1] = Me.TextBox1
   NAT = InputBox("Nom à trouver dans le classeur?")
   [A1] = NAT
   ligne = 2
   For i = 1 To Sheets.Count - 1
    With Sheets(i).Cells
      'If IsDate(Me.TextBox1) Then
      '  Set c = .Find(CDate(Me.TextBox1), LookIn:=xlValues, LookAt:=xlPart)
      'Else
      '  Set c = .Find(Me.TextBox1, LookIn:=xlValues, LookAt:=xlPart)
      'End If
      Set c = .Find(NAT, LookIn:=xlValues, LookAt:=xlPart)
      If Not c Is Nothing Then
         premier = c.Address
         Do
           temp = [A1]
           Sheets("temp").Hyperlinks.Add Anchor:=Sheets("temp").Cells(ligne, 1), _
           Address:="", SubAddress:="'" & Sheets(i).Name & "'" & "!" & c.Address, TextToDisplay:=temp 'Sheets(i).Name
           Cells(ligne, 2) = Sheets(i).Name
           Cells(ligne, 3) = c.Address
           ligne = ligne + 1
           Set c = .FindNext(c)
         Loop While Not c Is Nothing And c.Address <> premier
      End If
    End With
   Next i
End Sub
 
Re : Rechercher un mot dans un classeur

Bonjour,

comment fais-tu pour accéder à un onglet masqué avec un tel lien ?
La boîte de dialogue "Rechercher" donne aussi les liens mais vers les feuilles visibles.
Ci-joint une exemple avec 2 listes de validation (qu'on pourrait remplacer par un "ListBox" à 2 colonnes).
 

Pièces jointes

Re : Rechercher un mot dans un classeur

Re, Bonjour forum, 00

Merci pour ton fichier 🙂.

comment fais-tu pour accéder à un onglet masqué avec un tel lien ?

Tu peux modifier le code ainsi 🙂:

Code:
Sub Cherche_Mots_Classeur()'JB
   'If Me.TextBox1 = "" Then Exit Sub
   Application.DisplayAlerts = False
   On Error Resume Next
   Sheets("Temp").Delete
   On Error GoTo 0
   Sheets.Add after:=Sheets(Sheets.Count)
   ActiveSheet.Name = "Temp"
   '[A1] = Me.TextBox1
   NAT = InputBox("Nom à trouver dans le classeur?")
   [A1] = NAT
   ligne = 2
   For i = 1 To Sheets.Count - 1
If Sheets(i).Visible = False Then Sheets(i).Visible = True
    With Sheets(i).Cells


      'If IsDate(Me.TextBox1) Then
      '  Set c = .Find(CDate(Me.TextBox1), LookIn:=xlValues, LookAt:=xlPart)
      'Else
      '  Set c = .Find(Me.TextBox1, LookIn:=xlValues, LookAt:=xlPart)
      'End If
      Set c = .Find(NAT, LookIn:=xlValues, LookAt:=xlPart)
      If Not c Is Nothing Then
         premier = c.Address
         Do
           tempo = [A1]
           Sheets("temp").Hyperlinks.Add Anchor:=Sheets("temp").Cells(ligne, 1), _
           Address:="", SubAddress:="'" & Sheets(i).Name & "'" & "!" & c.Address, TextToDisplay:=tempo 'Sheets(i).Name
           Cells(ligne, 2) = Sheets(i).Name
           Cells(ligne, 3) = c.Address
           ligne = ligne + 1
           Set c = .FindNext(c)
         Loop While Not c Is Nothing And c.Address <> premier
      End If
    End With
   Next i
   Sheets("Temp").Select
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
241
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
646
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…