Après plusieurs heures de recherche sur internet, je me tourne vers vous pour vous demander s'il existe une formule ou une macro permettant d'automatiser le cas suivant :
J'ai un tableau de 6 colonnes et plus ou moins 500 lignes. La 6ème colonne est composée de cellules contenant une description (un texte d'un dizaine de mots).
Je souhaite pouvoir effectuer une (ou plusieurs) recherche par mot clef dans cette plage afin d'extraire vers une autre feuille les lignes où apparaissent ce mot.
Je doute de plus en plus qu'une simple fonction permettent ceci et je n'ai pas encore trouvé de code de macro le permettant. Mes compétences en VBA étant limitées au ras du sol, je ne peux pas me lancer dans cette entreprise.
Je vous demande donc si cela est possible; si quelqu'un a une solution je prend, sinon j'abandonne cette idée.
Bonjour
il faudrait que tu postes un fichier excel en guise d'exemple SANS données confidentielles
pas besoin de mettre les 500 lignes.. une dizaine suffit, il faut juste que cela soit représentatif de ton fichier final
représentatif = bon nombre de colonnes, avec les bons noms aux bons endroits..
ex. si on te fait une formule en colonne J qui travaille sur les colonnes A et C.. et au final. les infos sont en colonnes D et E...
autant avoir le bon fichier tout de suite
Bonjour
il faudrait que tu postes un fichier excel en guise d'exemple SANS données confidentielles
pas besoin de mettre les 500 lignes.. une dizaine suffit, il faut juste que cela soit représentatif de ton fichier final
représentatif = bon nombre de colonnes, avec les bons noms aux bons endroits..
ex. si on te fait une formule en colonne J qui travaille sur les colonnes A et C.. et au final. les infos sont en colonnes D et E...
autant avoir le bon fichier tout de suite
Si l'on s'en tient au problème posé il suffit de filtrer le tableau sur la colonne E :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
Dim P As Range
Application.ScreenUpdating = False
AutoFilterMode = False
[A:E].AutoFilter 5, "*" & [G1] & "*" 'filtre automatique
Set P = UsedRange
With Sheets("Résultat")
.Cells.Delete 'RAZ
P.EntireRow.Copy .[A1]
.Activate 'facultatif
End With
AutoFilterMode = False
End Sub
Cette macro n'est même pas indispensable, l'opération peut se faire manuellement.
Si l'on s'en tient au problème posé il suffit de filtrer le tableau sur la colonne E :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
Dim P As Range
Application.ScreenUpdating = False
AutoFilterMode = False
[A:E].AutoFilter 5, "*" & [G1] & "*" 'filtre automatique
Set P = UsedRange
With Sheets("Résultat")
.Cells.Delete 'RAZ
P.EntireRow.Copy .[A1]
.Activate 'facultatif
End With
AutoFilterMode = False
End Sub
Cette macro n'est même pas indispensable, l'opération peut se faire manuellement.
Bonjour Job75 et merci, c'est exactement le code que je cherchais, par contre lorsque je le copie vers mon fichier original, il m'affiche l'erreur d’exécution N°9 : "L'indice n'appartient pas à la sélection" pour ensuite surligner la ligne N° 8 du code suivant :
Code:
1 Private Sub Worksheet_Change(ByVal Target As Range)
2 If Intersect(Target, [M1]) Is Nothing Then Exit Sub
3 Dim P As Range
4 Application.ScreenUpdating = False
5 AutoFilterMode = False
6 [A:E].AutoFilter 5, "*" & [M1] & "*" ')
7 Set P = UsedRange
8 With Sheets("Résultat")
9 .Cells.Delete 'RAZ
10 P.EntireRow.Copy .[A1]
11 .Activate '
12 End With
13 AutoFilterMode = False
14 End Sub