Filtre sur un mot exact

illidan05

XLDnaute Nouveau
Bonjour à tous,

J'ai essayé tous les filtres textuels mais je n'arrive pas à obtenir ce que je veux.
Je souhaite filtrer les lignes de mon tableau sur un mot mais pas sur une partie d'un mot.

Par exemple, si je met un filtre textuel avec contient et le mot "CHARGEUR", je vais avoir les résultats souhaités suivants :

CHARGEUR REDRESSEUR 127 VCC BARRAGE
CHARGEUR 48 VCC BARRAGE
CHARGEUR 48VCC USINE
....

Par contre je vais avoir aussi des résultats non souhaités comme :
STATION HYDRAULIQUE VANNE DÉCHARGEUR 1
CLAPET DÉCHARGEUR 24
....

Et si je filtre avec "égal à", je n'ai aucun résultat car le mot recherché n'est pas le seul de la cellule.

Savez-vous s'il existe une solution de filtrage pour cela ?
Sur des forums, j'avais vu la formule suivante pour rechercher un mot exact : ="=CHARGEUR" mais ça ne fonctionne pas dans mon filtre textuel.

Merci pour votre aide.
A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Filtre sur un mot exact

Bonjour,

Pour obtenir seulement les noms commençant par chargeur

chargeur*

Pour obtenir seulement les noms commençant par chargeur ou contenant le mot chargeur

chargeur*
* chargeur *



Le filtre élaboré

JB
 

Pièces jointes

  • Classeur1.xls
    15.5 KB · Affichages: 55
  • Classeur1.xls
    15.5 KB · Affichages: 58
  • Classeur1.xls
    15.5 KB · Affichages: 45
  • Classeur2.xls
    15.5 KB · Affichages: 86
  • Classeur2.xls
    15.5 KB · Affichages: 97
  • Classeur2.xls
    15.5 KB · Affichages: 87
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Filtre sur un mot exact

Bonjour illidan05, le forum,

Pour le fun, un essai via une fonction personnalisée et un peu de code dans le module de Feuil1; On conserve les possibilités de rechercher par mot complet ou par caractères.

La fonction personnalisée Function Contient(Target As String, S As String) As String recherche dans la chaîne Target le mot S ou les caractères contenus dans S.
  • si S ne se termine pas par /, alors on recherche dans Target les mots complets égaux à S
  • si S se termine par /, alors on recherche si les caractères de S (moins le caractère final /) se trouvent dans Target

La fonction Contient retourne X si Target contient le mot S (cas 1) ou si les caractères de S se retrouvent dans Target sinon contient retourne - (cas 2).

Les caractères génériques ? et * sont autorisés (comme pour la fonction like de vba). Peut être en particulier utile pour faire des recherches qui ne distinguent pas les caractères accentués de ceux qui ne le sont pas.

Pour filtrer par mot ou caractères, saisir le critère dans la cellule verte F1 (terminer par / pour chercher les caractères et pas seulement les mots complets)

Pour annuler le filtre, saisir le caractère * dans la cellule F1.

Des exemples de critère sont rajoutés via la liste déroulante située en cellule orange M1.

Code fonction contient:
VB:
Option Explicit
Option Compare Text

Function Contient(Target As String, S As String) As String
  'si S se termine par / ==> on recherche les caractères compris dans S
  'si S ne se termine pas par / ==> on recherche le mot S
Dim xmot
  Contient = "-"
  If Right(S, 1) <> "/" Then
    For Each xmot In Split(Target)
      If xmot Like S Then
        Contient = "X"
        Exit Function
      End If
    Next xmot
  ElseIf Target Like "*" & Left(S, Len(S) - 1) & "*" Then Contient = "X"
  End If
End Function
 

Pièces jointes

  • Filtre sur un mot exact v1.xlsm
    21 KB · Affichages: 123
Dernière édition:

Statistiques des forums

Discussions
312 180
Messages
2 085 993
Membres
103 081
dernier inscrit
jeromeolivier.raymond@wat