Macro de recherche dans une base de données [Résolu/Fermé]

Signaler
Messages postés
157
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
11 août 2020
-
Messages postés
157
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
11 août 2020
-
Bonjour,
J'aurais aimé que lorsque je fais une recherche via une boite de dialogue , j'ai automatiquement un astérique avant et après .
exemple: *cha*
et modification si possible d'une macro qui enlève le filtrage .
ci-joint un classeur.
https://cjoint.com/c/HBbjYRjYYIW

j'ai win 10
et excel 2000

Merci par avance



4 réponses

Messages postés
486
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
23 novembre 2020
32
Bonsoir
ceci devrait faire l'affaire.
remplace ton code par celui ci

Sub recherche()
Dim cell As Range
Application.ScreenUpdating = False

marecherche = InputBox("Saisir la ou les premières lettres du mot ", "Recherche de mot (s) ")
If marecherche = "" Then Exit Sub
DL = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
For Each cell In ActiveSheet.Range("B4:B" & DL)
If cell.Value = marecherche Then
cell.Value = "*" & marecherche & "*"
End If
Next
Set resultat = ActiveSheet.Range("B4:B" & DL).Find(what:="*" & marecherche & "*", Lookat:=xlWhole)
Range("b4").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="*" & marecherche & "*", Operator:=xlAnd
Application.ScreenUpdating = True
End Sub


bien cordialement
Messages postés
157
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
11 août 2020
4
Je vous remercie beaucoup pour votre réponse, c'est excellent .

par contre j'avais une 2ème question .
jusqu'ici j'enlevais le filtrage automatique avec cette macro qui marche bien,mais pour des listes très longues cela prend du temps .

Sub Macro2()
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=2
Selection.AutoFilter Field:=3
Selection.AutoFilter Field:=4
Selection.AutoFilter Field:=5
End Sub

dans le forum , j'ai trouvé cette macro ci-dessous qui est beaucoup plus rapide ,par contre elle supprime le carrément le filtrage automatique.

Sub rétablir()
On Error GoTo finerreur
Selection.AutoFilter
GoTo fin
finerreur:
fin:
End Sub

Y aurait-il un moyen d'y remédier ?

Merci d'avance
Messages postés
486
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
23 novembre 2020
32
bonjour
j'avoue que j'ai beau retourner votre question dans tous les sens , je ne comprends pas .

pour moi votre macro fait le job
Sub rétablir() 

dit m'en plus
Messages postés
157
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
11 août 2020
4
Bonsoir

Simplement j'ai un classeur avec de nombreuses lignes (30000) ,ou j'utilise la macro(2) qui me sert a enlever le filtrage ,qui marche ,mais qui est très longue.
j'aurais aimé utiliser a la place la macro (retablir), qui marche très bien mais qui supprime le filtre automatique. (que j'utilise d'ailleur très souvent)
question serait-il possible de faire la même macro , sans supprimer le filtre automatique ,juste rétablir la feuille comme a l'origine.

j'espère avoir été clair!
Merci a vous
Messages postés
486
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
23 novembre 2020
32
fichier modifié
A tester

https://cjoint.com/c/HBcvzfgcmti
cordialement
Messages postés
23673
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 novembre 2020
6 491
Bonjour,

remet-le dans la foulée :
Sub retablir()
    [A1].AutoFilter
    [A1].AutoFilter
End Sub

eric


En essayant continuellement, on finit par réussir. 
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Messages postés
157
Date d'inscription
dimanche 9 mars 2014
Statut
Membre
Dernière intervention
11 août 2020
4
Merci pour tout