Recherche par mot clé

hantua Messages postés 4 Statut Membre -  
 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.
Configuration: Windows 2000
Internet Explorer 6.0

3 réponses

  1. le père
     
    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
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      Bonjour,

      et avec la fonction .Find, .FindNext ???
      0
      1. hantua Messages postés 4 Statut Membre > ShaBoo Messages postés 406 Statut Membre
         
        Merci de ta réponse, je vais voir ce que je peux faire avc la fonction Find
        0
  2. hantua Messages postés 4 Statut Membre
     
    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
    1. ShaBoo Messages postés 406 Statut Membre 50
       
      N'hesite pas si tu as des pb ...
      0
  3. le père
     
    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
    1. Hantua
       
      Merci beaucoup, j'ai trouvé la solution à mon projet grâce à vos réponse
      0