Recherche par mot clef

Bonjour,

je cherche à réaliser une recherche par mot clef (mot contenu dans la celulle D8 de ma feuille "ACCUEIL"), dans toutes les colonnes de mon Tableau1 (feuille "SYNTHESE"), et copier/coller les résultats sur ma feuille "ACCUEIL" (à partir de A18:I18).

Par exemple, si je tape "pro", le filtre me copie toutes les lignes du Tableau1 ou est écrit "pro" ("prothese", "provisoire", "sealant clinpro"...),

et me colle l'ensemble de ces lignes sur la feuille "ACCUEIL", de la ligne A18 à I18.

J'ai trouvé beaucoup de propositions qui me paraissent un peu trop élaborées.

J'espérai trouver une solution simple de type advancedfilter, xfiltercopy et copytorange... mais il semble que ce soit plus compliqué que cela...

Qu'en pensez-vous ?

Je pensais adapter ce qui fonctionne déjà dans le fichier joint : les champs de recherche par colonne :

Private Sub Rechercher_Click()

' Effectue une recherche dans le Tableau1 de la feuille SYNTHESE

Sheets("SYNTHESE").Range("Tableau1[#All]").AdvancedFilter Action:= _

xlFilterCopy, CriteriaRange:=Range("B12:F13"), _

CopyToRange:=Range("A18:I18"), Unique:=False ' Les critères de recherches se trouvent dans les lignes B12 et B13 (masquées).

Range("A19:I1000").Sort Key1:=Range("C19"), Order1:=xlAscending ' Affiche et classe les résultats dans l'ordre alphabétique

Range("B16").Select

End Sub

Bonjour,

Voici un exemple,

dit moi si ça convient ?

Sub Trouve()
'activer la référence "Microsoft Scripting Runtime"
Dim Dico As New Scripting.Dictionary
Dim keywords As String, c As Range, n As Integer
Set plg = Sheets("SYNTHESE").Range("Tableau1[#All]")
keywords = Sheets("ACCUEIL").Range("D8")
valeur = 1

  With plg
    Set c = .Find(keywords, LookIn:=xlValues, LookAt:=xlPart)
    If Not c Is Nothing Then
        firstRow = c.Row
        Do
            If Not Dico.Exists(c.Row) Then Dico.Add c.Row, valeur
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Row <> firstRow
    End If
 End With

For i = LBound(Dico.Keys) To UBound(Dico.Keys)
  n = Dico.Keys(i)
  lig = Sheets("ACCUEIL").Cells(Rows.Count, "B").End(xlUp).Row + 1
  Sheets("ACCUEIL").Range("B" & lig & ":E" & lig) = Sheets("SYNTHESE").Range("A" & n & ":D" & n).Value
  Sheets("ACCUEIL").Range("F" & lig) = Sheets("SYNTHESE").Range("G" & n).Value
Next
End Sub

Bonjour ivincent,

oui c'est presque ça que je souhaite.

Je viens de passer du temps à essayer de modifier ton code pour obtenir ce que je veux réellement, en vain (trop complexe pour moi !).

Les résultats proposés sont les bons (c'est effectivement bien l'ensemble des lignes du Tableau1 contenant la suite de caractères indiqués dans la cellule D8). En revanche, j'aimerai que l'ensemble des colonnes du Tableau1 s'affiche en résultat.

A titre d'exemple, lorsque tu sélectionnes "IMPLANTOLOGIE" dans la liste déroulante "SPECIALITE" et que tu clic sur "Rechercher", tu verras une liste de résultats s'afficher (de la cellule A18 à I18, en fond violet).

C'est exactement ce type de présentation de résultats que je souhaite (identique en tout point : la position du tableau de résultats, les entêtes, les couleurs, les colonnes etc...).

Penses-tu qu'il serait possible d'adapter ton code pour parvenir à cet objectif ?

re,

voici une nouvelle version,

dit moi si ça convient ?

Je pense que je me suis mal exprimé.

J'ai réussi à bidouiller ton code pour obtenir ce que je souhaite.

Le fichier joint se rapproche fortement de ce que j'aimerai obtenir.

Les seuls modifications à apporter seraient :

  • que le fond bleu clair des résultats ne concerne QUE les résultats (ne sachant comment faire, j'ai tout coloré jusqu'à la ligne 500... mais ça fait moche)
  • que les résultats se présentent tel un tableau, avec toutes les bordures (pour le moment il n'y a aucun quadrillage des résultats).

J'ai bricolé le code que tu as imaginé, je me doute bien qu'il y'a plus simple et plus propre.

Mais sinon, n'existerai t-il pas un pastespecial qui permettrait de coller les résultats directement avec leur mise en forme issue du Tableau1 ?

re,

voici une nouvelle version,

dit moi si ça convient ?

C'est ça !

La seule chose étrange est que le bandeau des entêtes du tableau de résultat n'apparaît pas systématiquement..

Par exemple, il apparaît bien lorsque je tape "pro" mais pas si j'essaye "lat".

J'aurai bien aimé que ce bandeau d'entête apparaisse systématiquement lors de la présentation des résultats.

Qu'en penses-tu ?

Bon j'ai bidouillé quelque chose qui semble satisfaire ma demande.

Le seul problème c'est que je ne peux pas tester mon code,

j'ai un message d'"Erreur de compilation : projet ou bibliothèque introuvable ".

Surprenant, car je n'ai fait quasiment aucune modification à ton code !

D'autant plus que lorsque j'essaye ton fichier excel, aucune erreur n'apparait et le même code s'exécute sans problème !

Et pourtant j'ai bien activé la référence Microsoft Scripting Runtime.

Peut-être devrais-je essayer sur une autre machine ?

Ah c'est bon, j'ai décoché une référence manquante, qui semblait être à l'origine de l'erreur.

Merci encore i20100 pour ton aide !!

Bonne année à toi !!

Bonjour,

  • Recherche intuitive multi-mots multi-colonnes
  • Recherche avec 6 comboBoxs

Boisgontier

La j'avoue, je suis bluffé.

C'est du sérieux !

On n'est plus dans la même catégorie !!

Boisgontier mille merci,

j'ai passé beaucoup de temps sur ton site internet les dernières semaines,

je n'imaginais pas que tu intervenais sur ce site également !

Je vais prendre le temps d'adapter ce beau travail à mes travaux de débutant.

Il est possible que je revienne vers toi pour quelques conseils !!

Beau cadeau en tout cas !

Si la BD est forme de tableau dynamique, on peut ajouter des colonnes dans la BD.

Boisgontier

En réalité je n'ai encore jamais travailler avec des userform.

Je débute en VBA, donc j'apprends petit à petit.

Inévitablement, je devrais au cours de l'année mettre le nez dans cette partie d'excel, qui semble très abouti.

Pour le moment je fais autrement.

Ton utilitaire de gestion de base de donnée correspond exactement à ce que je recherche.

Pourrais-tu m'aider à finaliser mon travail ?

- j'ai inséré un bouton sur ma feuille "ACCUEIL" qui ne nomme "Gestion base de donnée".

Pour le moment ce bouton renvoi vers la feuille "SYNTHESE" ou se situe le Tableau1 (- ma base de donnée -) pour que l'utilisateur puisse le modifier manuellement.

A la place de ça, j'aimerai bien que ce bouton lance l'userfom de gestion de BD que tu m'a donné tout à l'heure (dans le fichier

FormRechercheIntuitiveMultiMots.xls).

Aussi je m'aperçoit que les boutons "Ajouter" et "Dupliquer" ne fonctionnent pas pour le moment.

Qu'en penses-tu ?

PS : ci-joint mon projet en cours de finalisation, il ne manque que l'integration de ton gestionnaire de base de donnée !

J'ai ajouté un bouton Recherche Intuitive.

Attention, dans la feuille Synthese, il y a un code qui empêche la maj du formulaire de fonctionner.

Ajout ajoute une fiche vierge qui doit être documentée et sauvegardée.

Boisgontier

Bonjour Jacques,

j'ai un petit soucis ... faut-il déclarer isect auparavant ?

capture d ecran 349

Bonjour Steelson,

il me semble que ce problème vient d'une référence VBA manquante.

Personnellement en décochant la référence manquante/enregistrer/relancer l'exécution du fichier,

l'erreur disparait.

Merci à tous !!

Rechercher des sujets similaires à "recherche mot clef"