Macro de type filtre "contient" pour sélectionner les lignes contenant un mot clé

chris6999

XLDnaute Impliqué
Bonsoir à tous

Une petite question pour bien commencer le week-end

Je souhaiterais créer dans un fichier Excel une macro qui sélectionnerait les lignes lorsque la colonne A contient un mot clé (ou plusieurs) saisi(s) dans une zone (par ex dans la cellule C3)
Cela correspondrait vous l’avez compris au filtre « contient ».

Ce qui serait bien c’est que la sélection ne tienne pas compte de la casse et des accents.

Le lancement de la macro se ferait à partir du moment où l’utilisateur aurait saisi le mot clé puis « entrée »
Si aucune ligne ne correspond à la recherche j’aimerais que s’affiche un message du style « mot clé introuvable »

Je pense également rajouter un bouton pour annuler le filtre.
Cette annulation du filtre se ferait également lors de la fermeture du fichier.

J’ai un peu regardé sur les forums mais ce que j’ai trouvé ne fonctionne pas.

Si l’un des experts VBA passe par là… ce serait sympa de m’apporter vos lumières.

Nb : j’ai mis mon fichier en PJ

Très cordialement
Chris
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Re : Macro de type filtre "contient" pour sélectionner les lignes contenant un mot cl

Bonsoir Chris6999

Code à mettre dans Feuil1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  ' Si modification de la cellule C1
  If Target.Address(0, 0) = "C1" Then
    ' Si la cellule contient une valeur
    If Target.Value <> "" Then
      ' Filter sur cette valeur
      Range("A3:C3").AutoFilter Field:=3, Criteria1:="=*" & Target.Value & "*"
    Else
      ' Supprimer le filtre
      Range("A3:C3").AutoFilter Field:=3
    End If
  End If
End Sub
A+
 

chris6999

XLDnaute Impliqué
Re : Macro de type filtre "contient" pour sélectionner les lignes contenant un mot cl

Merci BrunoM45 pour ton aide

En testant la macro que tu m'as si gentiment proposé, je constate que cela ne fonctionne pas forcément.

Par exemple lorsque je fais une recherche à partir d'un mot existant dans la base 'exemple "équin"ou "hongreur" le filtre ne donne aucun résultat.
Avec d'autres mots clé cela marche ...! je ne comprends pas pourquoi

La plage de référence pour la recherche du mot clé se fait sur l'ensemble des colonnes alors que je souhaitais juste filtrer en fonction des éléments contenus dans la colonne A

Merci de me dire ce que tu en penses
A+

Je mets mon fichier enrichi de la macro en pièce jointe
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Re : Macro de type filtre "contient" pour sélectionner les lignes contenant un mot cl

Re,

Désolé, mais le code fourni filtre uniquement la colonne C
Colonne au-dessus de laquelle tu as la cellule jaune

Il faut changer
Code:
Field:=3
par
Code:
Field:=1
et ce devrait estre bon

A+
 

chris6999

XLDnaute Impliqué
Re : Macro de type filtre "contient" pour sélectionner les lignes contenant un mot cl

Génial merci cela fonctionne parfaitement

C'est exactement ce dont j'avais besoin

Encore merci
 

chris6999

XLDnaute Impliqué
Re : Macro de type filtre "contient" pour sélectionner les lignes contenant un mot cl

Merci cela fonctionne parfaitement.
Encore merci
 

erolland

XLDnaute Nouveau
Bonjour à tous ! J'aimerais faire exactement comme chris6999 avec mon propre tableau excel. J'aimerais un code qui me sorte toutes les lignes contenant un ou plusieurs mot-clés choisis au préalable et présents dans la colonne H "sujet" de mon tableau. J'ai essayé d'adapter le code de Bruno à mon tableau mais je n'y arrive pas, je suis novice avec VBA ne sais pas trop utiliser les macros encore... Je recherche de mon côté pour y arriver et serait ravi d'avoir des conseils de votre part. Merci beaucoup et bonne soirée !

Je joins un bout de mon fichier :
 

Fichiers joints

BrunoM45

XLDnaute Barbatruc
Bonjour à tous ! J'aimerais faire exactement comme chris6999 avec mon propre tableau excel. J'aimerais un code qui me sorte toutes les lignes contenant un ou plusieurs mot-clés choisis au préalable et présents dans la colonne H "sujet" de mon tableau. J'ai essayé d'adapter le code de Bruno à mon tableau mais je n'y arrive pas, je suis novice avec VBA ne sais pas trop utiliser les macros encore... Je recherche de mon côté pour y arriver et serait ravi d'avoir des conseils de votre part. Merci beaucoup et bonne soirée !
Bonjour erolland

Pour ce que tu demandes, il faut utiliser un filtre avancé

Voici ton fichier avec un bout de code qui devrait t'aller si j'ai bien compris ta demande ;)

A+
 

Fichiers joints

chris

XLDnaute Barbatruc
Bonjour à tous

Une variante : filtre avancé avec extraction via PowerQuery (intégré à partir de 2016, en add on à partir de 2010)
 

Fichiers joints

erolland

XLDnaute Nouveau
Bonjour et merci à tous les deux ! En effet c'est cela qu'il me fallait, merci beaucoup. Avoir une feuille "résultat" qui regroupe les lignes contenant les mots-clés saisis, c'est parfait !
Cependant Chris, je n'arrive pas à exécuter la macro avec ton fichier, quand j'essaye de saisir d'autres mots-clés dans le rectangle jaune, la feuille "résultat" ne change pas... je dois mal faire quelque chose mais je ne sais quoi...
Merci encore pour votre aide
 

chris

XLDnaute Barbatruc
RE

PowerQuery ce n'est pas du VBA

Actualiser par Données, Actualiser Tout ou ajouter dans le module de feuille une ligne de code lors du changement de choix

Voir ci-joint
 

Fichiers joints

BOISGONTIER

XLDnaute Barbatruc
Bonjour,


Filtre avec programme générique:
-Les mots clés se choisissent dans un combobox intuitif ou un textbox

Il existe aussi une version sans accent.

On récupère le résultat dans une feuille.

Boisgontier
 

Fichiers joints

Dernière édition:

erolland

XLDnaute Nouveau
Merci monsieur Boisgontier ça m'a l'air parfait mais étant novice je n'arrive pas à utiliser le userform, quand je fais exécuter la macro, ça me met le message suivant : la méthode 'Range' de l'objet '_Global' a échoué. Comment exécutér la macro avec mes données ? Je joins mon fichier avec mes données. Merci beaucoup
 

Fichiers joints

erolland

XLDnaute Nouveau
Merci bien ! Mais j'ai le même problème lorsque je rentre toute ma base de données...
Est-il possible d'afficher en premier, dans les résultats, les lignes dont la criticité (colonne L de la base de données) est "catastrophic" et "hazardous" ? Puis en dessous s'afficheraient les lignes restantes avec leurs criticités moins importantes (majeur, mineur, etc.) avec les mots-clés définis au préalable.
Aussi, il faudrait qu'il soit possible de choisir plusieurs mots-clés de la colonne "Sujet", par exemple, je rentre "window gear fuel" dans le userform et cela affiche en résultats toutes les lignes dont la colonne "Sujet" contient les mots window OU gear OU fuel, à la manière d'un contient .... OU ....
Je ne sais pas si j'ai été clair... Merci pour votre aide en tout cas !
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas