Recherche par mot clé
hantua
Messages postés
4
Statut
Membre
-
Hantua -
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.
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
-
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 -
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 -
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...