Filtrer les données avec "contient" avec recherche dans cellule [Résolu]

iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 31 déc. 2017 à 23:33 - Dernière réponse : iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention
- 4 janv. 2018 à 17:02
Bonjour, Bonsoir,

Je souhaiterais filtrer une liste de mots en utilisant la fonction contient de Excel (Menu > Données > Filtrer > Flèche de la cellule "mère" > Filtres textuels > contient).
Tout fonctionne, par exemple on a la liste suivante :
tigre
giraffe
lion
léopard
guépard

Et on cherche "g??p???". Les cellules sont filtrées et il reste "guépard".
Mais je n'aime pas cliquer sur la flèche en bas de la case, puis cliquer sur "Filtre textuel" pour changer le filtre, je voudrais simplement écrire ma recherche dans une cellule et ainsi directement que ce soit filtrer.
J'ai essayé de mettre la position de ma cellule dans le filtre mais ça ne fonctionne pas.
Merci de votre aide ! :)
Afficher la suite 

23 réponses

Répondre au sujet
Raymond PENTIER 44854 Messages postés lundi 13 août 2007Date d'inscriptionContributeurStatut 18 janvier 2018 Dernière intervention - 1 janv. 2018 à 00:05
0
Utile
1
Non, ça ne fonctionne pas et ça ne fonctionnera pas, car Excel, lui, n'aime pas qu'on tourne le dos aux outils créés pour un usage précis.
Mais si tu es un as de la programmation VBA, tu peux toujours essayer d'écrire une macro ...
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 1 janv. 2018 à 00:49
Pourriez-vous m'aider pour écrire la macro s'il ne vous en déplaise ?
Je n'ai pas d'expérience dans ce langage, si ce n'est que je sais coder en VB.NET (oui c'est un langagee bien inférieur...).
Merci.
Commenter la réponse de Raymond PENTIER
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 1 janv. 2018 à 06:47
0
Utile
Bonjour et meilleurs voeux à tous,
Exemple en pièce jointe avec explications
https://www.cjoint.com/c/HAbfUBvh3Gw
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 1 janv. 2018 à 14:35
0
Utile
1
Bonjour,
Merci et bonne année à vous aussi,
J'ai essayé de copier les codes des modules dans mon fichier excel avec succès. Cependant il m'est écrit qu'il est nécessaire de créer une macro, et comme je n'ai aucune idée à propos de celles-ci, le filtre ne fonctionne pas.
Je vais me renseigner davantage comme je peux, et ce serait honorable si vous m'accordez encore un peu d'aide si possible.
Merci pour votre aide.
Cordialement,
iKreal.
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 1 janv. 2018 à 14:46
EDIT : C'est réglé, ça fonctionne.
En revanche, le filtre se met en "est égal à", de ce fait lorsque je cherche un mot que je veux trier en "contient", mais il faut que je le mette manuellement en "contient", sinon il ne trie pas correctement. Serait-ce possible de remédier à ce problème ?
Commenter la réponse de iKreal
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 1 janv. 2018 à 14:54
0
Utile
1
Deuxième question complètement différente :

Comment pourrais-je ajouter des valeurs à des cellules en les entrant dans une seule ?
Explication :
J'ai ma liste :
lion
léopard
guépard
panthère
giraffe
tigre
serpent

Maintenant, dans une cellule je veux ajouter un élément à la liste (en dessous de celle-ci) en l'écrivant dans une autre. Imaginons en C4 :
éléphant

La cellule s'efface et le mot s'ajouter en dessous de la liste, et on obtient :
lion
léopard
guépard
panthère
giraffe
tigre
serpent
éléphant


Je pense que ça peut être assez simple à faire, mais je n'y connais pas grand chose.
Merci pour les futures aides !
Cdlt, iKreal.
Raymond PENTIER 44854 Messages postés lundi 13 août 2007Date d'inscriptionContributeurStatut 18 janvier 2018 Dernière intervention - 1 janv. 2018 à 15:39
Non, ce n'est pas simple, et c'est surtout assez inutile ...
Il faut de nouveau une macro !
Pourquoi t'acharner à ne pas utiliser les règles, méthodes et procédures d'Excel ? Il faut saisir les données au fur et à mesure, de qui est d'une facilité déconcertante !
Il vaudrait mieux que tu fabriques carrément un nouveau logiciel, qui fonctionne selon les désirs.
Si je connaissais VBA, je t'aurais directement proposé une macro ...
Commenter la réponse de iKreal
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 1 janv. 2018 à 21:40
0
Utile
Bonsoir,
Post 5: quand vous dites "sinon il ne trie pas correctement", on parle de tri ou de filtre?
Si c'est bien de filtre qu'il s'agit, donnez moi quelques exemples qui ne fonctionnent pas afin que je puisse y remédier.

Concernant votre question en 6: Voici une petite amélioration (me dire si cela vous convient ou pas), si le nom saisie dans cellule C1 est introuvable dans la liste, alors ce dernier est ajouté en fin de liste, dans le cas contraire , la liste sera filtrée sur ce nom. La cellule C1 a donc une double fonction, soit elle sert de critère pour filtrer, soit elle sert de boîte de saisie pour entrer un nouvel élément.
Remplacer la macro du module 1 par celle-ci

Public Filtre As String
Sub RechercheAvecFiltre()
    Application.ScreenUpdating = False
    Derlig = [A10000].End(xlUp).Row
    DerCol = [ZZ3].End(xlToLeft).Column
    If AutoFilterMode Then
        isOn = "On"
    Else
        isOn = "Off"
        Range(Cells(3, "A"), Cells(3, DerCol)).AutoFilter
    End If
    ActiveSheet.Range(Cells(3, "A"), Cells(Derlig, DerCol)).AutoFilter Field:=1, Criteria1:=Filtre
    NbVAl = Range("_FilterDataBase").Resize(, 1).SpecialCells(xlCellTypeVisible).Count - 1
    If NbVAl = 0 Then
        ActiveSheet.AutoFilterMode = False
        Cells(Derlig + 1, "A").Value = [C1]
    End If
End Sub


Si cela ne vous convient pas, merci de bien préciser ce que vous aimeriez avoir.
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 1 janv. 2018 à 23:12
0
Utile
Bonsoir,
Merci pour vos réponses.
En fait après modification, les filtres fonctionnent correctement, c'est que j'avais mis des valeurs dans les cellules qui posaient problème, enfin c'est réglé !
Par contre, je souhaiterai ajouter à la liste en bas, oui, mais pas avec la recherche, car la recherche ne contient pas tous les caractères (par exemple : ??i?a? et non pas : caïman).
Merci pour vos futures aides,
Cordialement,
iKreal.
Commenter la réponse de iKreal
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 2 janv. 2018 à 18:49
0
Utile
Bonsoir,
Voilà, avec un bouton pour l'ajout d'un nouvel élément.
https://www.cjoint.com/c/HAcrW60YVew
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 2 janv. 2018 à 20:58
0
Utile
Bonsoir,
Merci infiniment pour votre aide.
Cependant, serait-il possible de tester toutes les valeurs de la liste, afin de voir si l'élément n'est pas déjà dans la liste, et ainsi ne pas le mettre en double ?
Merci encore pour le temps que vous m'accordez.
Cordialement,
iKreal.
Commenter la réponse de iKreal
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 3 janv. 2018 à 02:55
0
Utile
Bonjour,
Voilà avec la petite modif demandée
https://www.cjoint.com/c/HAdb20h34kw
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - Modifié par iKreal le 3/01/2018 à 12:07
0
Utile
Bonjour,
Merci pour votre aide, cependant la macro ne fonctionne pas correctement. J'ai modifié les cellules selon les miennes, mais il est toujours écrit que le mot est déjà enregistré, alors qu'il ne l'est pas. Je ne sais pas pourquoi, car j'ai fait tout comme vous.
Voici la feuille :


Et voici le code :
Sub Ajout()
Application.ScreenUpdating = False
DerLig = [A10000].End(xlUp).Row
Set c = Range("A6:A" & [A10000].End(xlUp).Row).Find([A2], LookIn:=xlValues)
If c Is Nothing Then
Cells(DerLig + 1, "A") = [A2]
Worksheets("Feuil1").Range("A2").ClearContents
ActiveSheet.AutoFilterMode = False

'Tri par ordre alphabétique
[A5].Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=ActiveCell, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange ActiveCell.Range("A2:A" & [A10000].End(xlUp).Row)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Else
Worksheets("Feuil1").Range("A2").ClearContents
End If
End Sub


J'ai juste ajouté le clear de la cellule une fois terminée.

EDIT :
Je viens de remarquer que l'on peut ajouter un nouveau mot, cependant on ne peut pas ajouter un mot qui est contenu dans un autre. Par exemple, je ne peux pas ajouter le mot "Biche" s'il y a déjà le mot "Bichette". Et ça c'est très problématique. :/

Merci pour votre aide.
Cordialement,
iKreal.
Commenter la réponse de iKreal
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 3 janv. 2018 à 13:27
0
Utile
Bonjour,
Dans la ligne suivante, il ne fallait rien changer
.SetRange ActiveCell.Range("A2:A" & [A10000].End(xlUp).Row), il faut laisser A1
Pour le problème de noms presque identiques, remplacez cette ligne
Set c = Range("A6:A" & [A10000].End(xlUp).Row).Find([A2], LookIn:=xlValues)

par
Set c = Range("A6:A" & [A10000].End(xlUp).Row).Find([A2], LookIn:=xlValues, lookat:=xlWhole)

ça devrait marcher.
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - Modifié par iKreal le 3/01/2018 à 14:54
0
Utile
Bonjour,
Merci pour votre réponse.
Cependant, je crois bien qu'il fallait changer car lorsque j'ai ajouté le mot "biche" (pour essayer), voilà ce qu'il s'est passé :

Je ne sais pas si c'est vraiment dû à ça...

Et en bas de la liste, voici ce que j'obtiens : O_o
Commenter la réponse de iKreal
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - Modifié par iKreal le 3/01/2018 à 14:57
0
Utile
Désolé je n'ai pas pu ajouter l'image...
Voilà ce que j'obtiens :
Commenter la réponse de iKreal
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 3 janv. 2018 à 15:00
0
Utile
2
Sans remplacer
Set c = Range("A6:A" & [A10000].End(xlUp).Row).Find([A2], LookIn:=xlValues)

par
Set c = Range("A6:A" & [A10000].End(xlUp).Row).Find([A2], LookIn:=xlValues, lookat:=xlWhole)


Ca fonctionne.

Merci beaucoup !
Par contre il n'est pas possible d'effectuer la macro Ajout lorsque je entre le mot dans la cellule (sans bouton) ?
Peut-être en modifiant l'événement ?
Cordialement,
iKreal.
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 3 janv. 2018 à 15:32
Peut-être que nous n'utilisons pas la même cellule. Voici mon fichier
https://www.cjoint.com/c/HAdoEkzNppj
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 3 janv. 2018 à 17:43
J'ai montré les cellules de mon fichier en screenshot au post 13.
Sinon est-il possible de remplacer l'événement du clic sur la forme (bouton) par le fait d'entrer une valeur à la cellule ? Ce serait encore plus optimisé.
Merci pour votre aide.
Cordialement,
iKreal.
Commenter la réponse de iKreal
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 4 janv. 2018 à 03:40
0
Utile
Bonjour,
Avec la dernière modif (Suppression du bouton)
https://www.cjoint.com/c/HAecNCuASYw
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - Modifié par iKreal le 4/01/2018 à 11:04
0
Utile
Bonjour,
Merci, je me suis servi de vos modifications pour faire quelque chose de personnalisé, maintenant dernière petite chose :
Lorsque l'on ajoute un mot à la liste, la case sélectionnée devient la case "Animal"
Je souhaiterais donc simplement que la cellule sélectionnée soit à nouveau la cellule A2, si possible.

EDIT :
En essayant à nouveau, les mots ne s'ajoutent plus, et je ne trouve pas le problème.
Il me semble que pour sélectionner une cellule il faut écrire :
Worksheets("Feuil1").Range("A2").Select

Même en retirant cette ligne, ça ne fonctionne toujours plus. Je vous envoie mon fichier en cjoint :
https://www.cjoint.com/c/HAekemH0w8q

En tout cas merci beaucoup pour tout le temps que vous avez pris pour m'aider, j'en suis très reconnaissant.
Cordialement,
iKreal.
Commenter la réponse de iKreal
Frenchie83 1748 Messages postés lundi 6 mai 2013Date d'inscription 16 janvier 2018 Dernière intervention - 4 janv. 2018 à 12:00
0
Utile
Bonjour,
Pour que la cellule A2 soit sélectionnée il faut rajouter la ligne suivante dans le module de la feuille en avant dernière ligne.
  Target.Select

ce qui donne
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Address = "$C$2" Then
        Filtre = Target
        RechercheAvecFiltre
    ElseIf Target.Address = "$A$2" Then
        Mot = Target
        Ajout
    End If
    Target.Select
    Application.EnableEvents = True
End Sub

les mots ne s'ajoutent plus, et je ne trouve pas le problème., Pourtant le fichier que vous avez retourné fonctionne bien. Donnez moi des exemples qui ne fonctionnent pas.
https://www.cjoint.com/c/HAek5j4HnNk
Cdlt
Commenter la réponse de Frenchie83
iKreal 22 Messages postés jeudi 26 février 2015Date d'inscription 4 janvier 2018 Dernière intervention - 4 janv. 2018 à 17:02
0
Utile
Au temps pour moi, après réouverture du fichier, tout fonctionne correctement. Merci beaucoup pour votre aide !
Cordialement,
iKreal.
Commenter la réponse de iKreal