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 :
Merci d'avance!
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!