Une recherche sur plusieurs mots

Salut les amis,

J'ai un petit souci en VBA: comment faire pour créer un moteur de recherche à la google ? je m'explique: en fait, j'ai une inputbox dans laquelle j'entre un mot (pour l'instant). Ce mot est ensuite recherché dans les cellules. voici pour l'instant la macro:

Sub test()
Dim cellule As Range
Dim valeur As String
Dim test As String

valeur = InputBox("Test")
test = "X"

Range("A1:A10").select

For Each cellule In Selection
If cellule = valeur Then
ActiveCell.Offset(0, 1).Value = test
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Next cellule
End Sub

Mais à l'avenir, j'aimerais pouvoir entrer plusieurs mots qui seraient ensuite recherchés de la même manière.... par exemple, j'entre "arbre" et "maison", et ça me mets un X devant tous les mots "arbre" et "maison"....

Je n'ai pas de fichier, juste ce bout de macro et une liste test de 10 mots...

Auriez vous une idée ?

D'avance merci,

A+

Souri84

Salut le forum

Souri84, comment veux-tu entrer la saisie des mots ?

Avec un espace, un virgule, ... entre les mots ?

Une saisie pas Userform serait peut-être mieux....

En attente de commentaires de tous les adeptes du Forum avant de me lancer tête

baissée dans un outil de recherche qui devrait plaire

A te relire

Mytå

P.S. Je serais de retour à la mi-juilet, ou avant si une connection Internet

hello

suggestion : respecter si possible la manière google :

  • espace entre mots
  • " et " pour signifier bloc de mots
  • et le rêve pourvoir utiliser les jokers ? et *

Et si tu en as besoin, associé à GoogleDesktop pour rechercher dans tous les fichiers Excel sur ton disque, tu retrouves tout, tout, tout.

Bonjour

Un début de réponse,

dans le fichier joint, il est possible de faire une recherche sur plusieurs mots en saisissant dans l'inputbox :

mot1 & mot2 & mot3

Le texte est en colonne 2

X s'inscrit dans la colonne 1 quand la recherche est fructueuse

Cordialement

https://www.excel-pratique.com/~files/doc/Moteur_de_recherche.xls

Salut tout le monde, désolé pour la réponse tardive, j'étais en WE prolongé.... donc... toutes mes excsues....

Sinon, pour répondre à Myta, le séparateur de mots n'a pas d'importance, même si j'ai une préférence pour l'espace ou le point virgule...

Je regarde les différentes solutions proposées et je vous dis quoi dans l'aprèm (si possible...)

Merci à tous pour vos réponses,

Souri84

Salut le forum

Les mots doivent être séparés par un espace. (A tester)

Sub Recherche_Mots()
  Dim PremCell As String
  Dim Cell As Range
  Dim Cherche As String
  Dim Texte As String
  Dim x As Variant
  Dim i As Byte

  Texte = "Saisissez le texte à rechercher : " & Chr(13)
  Texte = Texte & "(séparer les mots par une espace)"

  Cherche = InputBox(Texte, "Recherche mot(s) dans une plage de cellule")

    If Cherche = "" Then Exit Sub
    Texte = Cherche
    x = Split(Texte, " ")

    For i = 0 To UBound(x)

  Set Cell = Cells.Find(x(i), LookIn:=xlValues, Lookat:=xlPart)  'xlpart xlwhole

  If Not Cell Is Nothing Then
    PremCell = Cell.Address
    Do
      MsgBox x(i) & Chr(13) & Cell.Address
      Cell.Offset(0, -1) = "X"
      Set Cell = Cells.FindNext(Cell)
    Loop Until Cell.Address = PremCell
  Else
  MsgBox ("Rien")
  End If

    Next i
End Sub

Mytå

110numero-2.xlsm (31.83 Ko)

Génial Mytå, j'ai juste à retirer le msgbox et j'ai exactement ce que je voulais....

Encore merci,

Souri84

122numero-1-v3.xlsm (55.00 Ko)
39numero-1-v2.xlsm (50.33 Ko)

Bonjour au forum.

Je pense que le code de Mytå peut me servir dans le développement de diverse utilitaire dans mon entreprise.

J'ai voulu réutiliser le code, mais je voulais placer le X uniquement sur la colonne A et l'effacer à chaque nouvelle recherche.

Je n’ai pas réussi à comprendre tous le code et donc faire cette adaptation.

Merci …

bonjour tous,

Une application sur laquelle j'ai planché dernièrement, pour faire une recherche dans une base de données.

En colonne A j'ai les fournisseurs, et en colonne B leurs produits.

Je fais ma recherche de produit via un userform comprenant 3 textbox, et je masque toutes les lignes qui ne correspondent pas.

Bon y'aurait certainement moyen d'optimiser, vu que j'y ai pas encore consacré trop de temps, mais ça remplit bien la fonction que je voulais, assez rapidement avec plus de 2000 lignes de produits.

Mon but maintenant était d'essayer de gérer la saisie des accents, mais là c'est un peu hard...

Mon code :

Sub RechercheCle()
Dim c As Range
Dim FirstAddress As String
Dim i As Byte
Dim Cle(3) As String
Dim DerLig As Integer, Lig As Integer
DerLig = Range("B65536").End(xlUp).Row

Application.ScreenUpdating = False

Cle(1) = UserForm1.TextBox1.Value
Cle(2) = UserForm1.TextBox2.Value
Cle(3) = UserForm1.TextBox3.Value

For i = 1 To 3
If Not Cle(i) = "" Then
    With Worksheets(1).Range("B2:B" & DerLig)
        Set c = .Find("*" & Cle(i) & "*", LookIn:=xlValues)
        If Not c Is Nothing Then
            FirstAddress = c.Address
            Do
                c.Interior.ColorIndex = 6
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> FirstAddress
        End If

        Lig = 2
        While Not IsEmpty(Cells(Lig, 2))
            If Not Cells(Lig, 2).Interior.ColorIndex = 6 Then
                Rows(Lig).EntireRow.Hidden = True
            End If
            Lig = Lig + 1
        Wend
    Cells.Interior.ColorIndex = xlNone
    End With
End If
Next i

End Sub

Le fait de masquer les lignes non concerné c’est pas mal ….

Ton code peut indiquer la ligne correspondante à la recherche même si le mot est situé uniquement en A ou uniquement en B ou s’il est situé en A et B ?

Parce que dans mon fichier le mot ou l’association de mot peuvent être de A3 jusqu’en T indéfinie

non non, je ne regarde que la colonne B

With Worksheets(1).Range("B2:B" & DerLig)

Mais en changeant la plage ça devrait marcher aussi.

En fait actuellement, ce code me fait une recherche de produits par mots clés (3 max) avec jokers.

Par exemple :

Mot clé 1 : transp

Mot clé 2 : bande

La macro m'affiche les lignes comprenant en colonne B "Transporteur à bande", "Bande transporteuse", "Vulcanisation de bande transporteuse", ...

Ensuite j'ai un autre bouton pour afficher toutes les lignes, puisque la recherche n'est effectuée que sur les lignes visibles

Sub AfficheTout()
    Cells.EntireRow.Hidden = False
End Sub

Pour augmenter la plage de recherche ce bout de code est correcte ?

With Worksheets(1).Range("B3,T3:B" & DerLig)

Non ce serait

With Worksheets(1).Range("B3:T" & DerLig)

Par contre après je ne regarde que la couleur des cellules en colonne B...

Donc pour t'en sortir tu devrais remplacer

c.Interior.ColorIndex = 6

par

cells(c.row,2).Interior.ColorIndex = 6

(non testé)

Bonne chance

Je pourrai pas t'aider ce w-e, mais j'espère avoir des news lundi

Bonjour au forum ..

J'ai intégré les codes de Sylvain TBM.

Mais j'ai un souci sur le UserForm.

J’ai créé 3 TextBox et un bouton pour lancer la recherche.

Mais rien ne se passe. Je reste sur la boite de dialogue.

Le code pour la recherche est dans le UserForm. Est-il bien placer ?

@+

Bonjour,

Ce n'est pas comme cela qu'il faut procéder...

Tu as un bouton qui te lance le userform, dont le code est donc

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

Ensuite tu dois avoir un bouton OK dans ton userform, dont le code sera par exemple

Private Sub CommandButton1_Click()
UserForm1.Hide
Call RechercheCle
End Sub

Et la macro RechercheCle dans un module

Dans le code que j'avais mis, il manque la déclaration de la variable Cle, il te faut donc ajouter la ligne

Dim Cle(3) As String

Il doit y avoir d'autres méthodes, mais j'ai un peu tâtonné pour récupérer la valeur des textbox, et j'ai arrêté dés que ça a marché, sans trop chercher à optimiser au max...

Si quelqu'un de capable passe par là, qu'il n'hésite pas à critiquer ma solution

32affouage-3-5.xlsm (166.12 Ko)

J'ai essayé de faire quelque chose ... sans succès.

Je joins un bout de mon fichier si par hasard quelqu'un peux jeter un œil ...

Merci ++++

https://www.excel-pratique.com/~files/doc/Cm5xpteste.xls

Salut le forum

Area-design, tu aurais du ouvrir une nouvelle ficelle,

au-lieu de t'incruster sur une qui était déjà [Résolu]

un simple lien aurait suffit pour le principe.

En plus ton fichier est vide

Mytå

58affouage-3-5-1.xlsm (181.34 Ko)
Rechercher des sujets similaires à "recherche mots"