Recherche par mot clé

Fermé
hantua Messages postés 4 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007 - 22 nov. 2007 à 13:24
 Hantua - 30 nov. 2007 à 11:47
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
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 49
22 nov. 2007 à 13:57
Bonjour,

et avec la fonction .Find, .FindNext ???
0
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
22 nov. 2007 à 14:27
Merci de ta réponse, je vais voir ce que je peux faire avc la fonction Find
0
hantua Messages postés 4 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 22 novembre 2007
22 nov. 2007 à 14:24
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
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 49
22 nov. 2007 à 14:32
N'hesite pas si tu as des pb ...
0
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...
0
Merci beaucoup, j'ai trouvé la solution à mon projet grâce à vos réponse
0