Faire une recherche dans excel

mhz

XLDnaute Junior
Bonjour,

J'ai réaliser un formulaire excel ou je rentre des données (demande de prêt de matériel) dans des textbox combobox,... ces données s'affichent dans une base de données excel.
En parallèle j'ai besoin d'utiliser le filtre automatique pour faire connaitre quels sont ceux qui sont le plus sollicités.
Le problème c'est que les infos concernant les prêts sont rentrées dans une textbox (avec l'option multilignes pour que je puisse aller à la ligne pour chaque demande et que ce soit plus claire) et apparaissent dans une des colonnes choisies de mon tableau.
Quand ces infos arrivent dans le tableau excel et que je veux faire un tri, le filtre ne prend pas en compte les différents types de matériel (en gros les différents mots inscris dans chaque cellules) mais il fait un tri cellule par cellule :
-2 fauteuils -3 sarbacanes
-1 sono - 1 ballon de basket
(...)
Je sais que c'est normal car excel considère que c'est le 1er mot de chaque cellule qui est retenu.
C'est pourquoi je voudrais savoir si c'est possible d'instaurer une recherche par mot clef ou que je puisse taper des mots dans une petite fenêtre et qui me les me surligne les mots? Par exemple
Si je suis pas assez claire dites le moi...

Si quelqu'un à une solution je suis preneuse !
Merci d'avance !!!!
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Faire une recherche dans excel

Bonjour le fil, bonjour le forum,

Une proposition VBA avec le code ci-dessous :
Code:
Private Sub CommandButton1_Click()
Dim O As Object 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim BE As String 'déclare la variable BE (Boîte d'Entrée)
Dim Deb As Integer 'déclare la variable Deb (Début)
Dim Lon As Integer 'déclare la variable Lon (Longueur)
Dim R As Range 'déclare la variable R (Recherche)
Dim PA As String 'déclare la variable PA (Première Adresse)

ActiveCell.Select 'enlève le focus au bouton
Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
Set PL = O.Range("A1:B4") 'définit la plage PL (à adapter à ton cas)
'remet toues les cellules de la plage P au format initial
With PL.Cells.Font 'prend en conte le format de police de la plage PL
    .FontStyle = "Normal" 'style normal
    .ColorIndex = xlAutomatic 'couleur automatique
End With 'fin de la prise en compte du format de police de la plage PL
BE = InputBox("Tapez le mot à chercher !", "RECHERCHE") 'définit la boîte d'Entrée BE
If BE = "" Then Exit Sub 'si BE est vide ou bouton "Annuler", sort de la procédure
Set R = PL.Find(BE, , xlValues, xlPart) 'définit la recherche R (recherche BE dans la plage PL)
If Not R Is Nothing Then 'si il existe au moins une occurrence trouvée
    PA = R.Address 'définit l'adresse de la première occurrence trouvée
    Do 'éxécute
        Deb = Application.WorksheetFunction.Search(BE, R.Value) 'définit la position du premier caractère de BE dans l'occurrence trouvée
        Lon = Len(BE) 'définit la longueur du mot BE
        With R.Characters(Start:=Deb, Length:=Lon).Font 'prend en compte le format de police du mot BE dans la chaîne de l'occurrence trouvée
            .FontStyle = "Gras" 'style gras
            .Color = -16776961 'couleur rouge
        End With 'fin de la pros een compte du...
        Set R = PL.FindNext(R) 'redéfinit la recherche R (occurrence suivante)
    Loop While Not R Is Nothing And R.Address <> PA 'boucle tant qu'il existe de nouvelle occurrences ailleurs qu'en PA
End If 'fin de la condition
End Sub
Le fichier :
 

Pièces jointes

  • Mhz.xlsm
    24 KB · Affichages: 41

Statistiques des forums

Discussions
312 519
Messages
2 089 267
Membres
104 083
dernier inscrit
hecko