Recherche par mot clé [Fermé]

Signaler
Messages postés
4
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2007
-
 Hantua -
Bonjour,

J'ai créé un classeur sous excel. Ma première feuille est ma feuille de recherche qui comporte une cellule pour saisir le mot clé et un tableau où s'afficheront les résultats de ma recherche. Les autres feuilles sont une sorte de base de donnée où sont recensés plusieurs informations.

Est-ce possible, à partir du mot clé saisi dans ma feuille de recherche que la recherche s'effectue sur toutes les autres feuilles (= ma base de donnée, environ 20 feuilles) et que les résultats s'affichent dans mon tableau prévu dans ma feuille de recherche ?

Merci de ta réponse.

3 réponses

Bonjour,
si ça peut t'aider...
Option Explicit

Sub Recherche()

Dim F1 As Worksheet ' feuille où il y a le mot clé
Dim F2 As Worksheet ' autres feuilles
Dim cle ' mot-clé
Dim k%

Const ColonneRecherche = 4    'si on recherche le mot cle dans la colonne 4 (D) des feuilles
Const ColonneResultat1 = 5
Const ColonneResultat2 = 6

Const ColonneMettreResultat1 = 2
Const ColonneMettreResultat2 = 3

Dim LigneResultat%

Dim Rng As Range
  LigneResultat = 1                         ' ligne où on mettra le 1er résultat
  Set F1 = Worksheets("Feuil1")             ' mettre le nom de la feuille contenant le mot-clé
  cle = CStr(F1.Cells(3, 1))                ' coordonnées de la case contenant le mot-clé
  
  For Each F2 In Worksheets                     ' recherche dans toutes les feuilles
    If F2.Name <> F1.Name Then                  ' sauf la feuille du mot-clé

      For k = F2.UsedRange.Row To F2.UsedRange.Row + F2.UsedRange.Rows.Count - 1 ' balayage des lignes
        If CStr(F2.Cells(k, ColonneRecherche)) = cle Then   ' youppie ! on en a un !
          ' recopier infos vers la 1ère page
          F1.Cells(LigneResultat, ColonneMettreResultat1) = F2.Cells(k, ColonneResultat1)
          F1.Cells(LigneResultat, ColonneMettreResultat2) = F2.Cells(k, ColonneResultat2)
          LigneResultat = LigneResultat + 1           ' se préparer pour la ligne suivante dans la 1ère page
        End If
      Next k
    End If
  Next F2
End Sub
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
49
Bonjour,

et avec la fonction .Find, .FindNext ???
hantua
Messages postés
4
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2007
> ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009

Merci de ta réponse, je vais voir ce que je peux faire avc la fonction Find
Messages postés
4
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2007

Bonjour,

Merci pour ta réponse, je vais voir ce que je peux faire avec ce que tu m'a donné parce que c'est un peu chinois pour moi.

Merci
ShaBoo
Messages postés
392
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
5 septembre 2009
49
N'hesite pas si tu as des pb ...
Bonjour
Il y a sûrement mieux à faire avec Find et FindNext en effet, mais je ne connais pas par coeur et j'ai écrit ça vite fait...
Merci beaucoup, j'ai trouvé la solution à mon projet grâce à vos réponse