Recherche de plusieurs mots clés

Antonin

XLDnaute Nouveau
Bonjour,
Je souhaiterais coder une macro de recherche de mots clés. Par exemple : je rentre dans une boîte de dialogue "tata toto" et j'obtiens toutes les cellules contenant les mots "tata" et "toto", pas forcément dans le même ordre et pas uniquement ces mots-ci (exemple : "toto blabla tata").

Pour le moment, je suis parvenu à écrire un code qui fonctionne pour 1 mot, et recopie toutes les cellules contenant le mot en question dans une autre feuille de mon classeur (avec, dans la colonne d'à coté, l'adresse originale de la cellule). J'ai adapté cette macro pour faire des recherches successives, mot par mot (si je recherche 3 mots, je fais tourner 3 macros semblables les unes après les autres qui effectuent une recherche dans les résultats de la recherche précédente), mais il serait plus simple de ne faire qu'une seule recherche.

Ci-dessous mon code :
Code:
Sub Recherche_rapide()
'
' Recherche_rapide Macro
'

'Déclaration des variables
Dim motcle As String
Dim c As Range
Dim k As Double, precedenteRech As Range, derligne As Long

'Initialisation des variables
derligne = 0
k = 2
Set precedenteRech = Worksheets(1).Cells(1, 1)
'
Worksheets(3).Cells.Clear       'Vide la feuille des résultats
'
 motcle = InputBox("Entrez un mot (et un seul!)", "Recherche")      'Saisie du mot recherché
 Do
    Set c = Worksheets(1).Columns(1).Find(What:=motcle, _
        After:=precedenteRech, LookIn:=xlValues, Lookat:=xlPart, _
        SearchDirection:=xlNext, searchOrder:=xlByRows, MatchCase:=False)       'Recherche du mot
    If c.Row <= derligne Then Exit Do           'Si le résultat se trouve en amont du résultat précédent, on sort de la boucle (pour éviter une boucle infinie)
    derligne = c.Row                            'Définit le numéro de la ligne du résultat de la recherche en cours
    Set precedenteRech = c                      'Enregistre le résultat en cours pour la recherche suivante
    Worksheets(3).Cells(k, 1) = c               'Copie le résultat sur la feuille des résultats
    Worksheets(3).Cells(k, 2) = c.Address       'Copie l'adresse originale de la cellule copiée
    k = k + 1                                   'Incrémentation du compteur pour éviter d ecraser le résultat précédent
 Loop While True
'
End Sub

Merci d'avance!
 

jp14

XLDnaute Barbatruc
Re : Recherche de plusieurs mots clés

Bonjour

Une piste
La fonction "split" permet de transférer des éléments d'une phrase dans un tableau

Dim tablo() as string

tablo= split(mocle," ")

Ensuite faire la recherche pour tous les mots qui sont dans le "tablo"

JP
 

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry