Macro pour champ de recherche sous forme de liste déroulante de choix

Bonjour,

je cherche à créer un champ de recherche qui afficherait sous forme de liste déroulante les résultats de la recherche contenant le caractère/mot-clé que je tape à l'intérieur.

Les résultats de la recherche se trouvent sous un autre onglet: c'est l'onglet 'Nomenclature'.

La recherche doit se faire sur la colonne E de la nomenclature: 'Libellé'.

Le champ de recherche doit retourner tous les libellés (sous forme de liste) contenant le caractère ou le mot indiqué dans la barre de recherche.

Aussi, dans une colonne à côté, je souhaiterais que s'affiche automatiquement la catégorie, le secteur, l'éligibilité, les clauses et le commentaire du libellé correspondant au résultat de la recherche choisit.

Exemple: si je saisis 'sport' dans mon champ de recherche, je voudrais que se déroule une liste déroulante de choix dans cette cellule et que je puisse donc cliquer sur le libellé qui m'intéresse, à la suite de quoi s'affiche la catégorie, le secteur, l'éligibilité, la clause et l'éventuel commentaire du libellé choisit dans la liste déroulante.

La liste déroulante de choix dans ce cas là indiquerait les libellés suivant:

Commerce d'articles de sport et de loisirs

Métiers du transport

Transport/livraison de biens à vélo ou triporteur

Accompagnement des enfants dans leurs déplacements en dehors de leur domicile

Enfin, je souhaiterais que les libellés de cette liste déroulante soit trié alphabétiquement de A à Z.

Ci-joint une capture d'écran de l'emplacement du champ de recherche.

Je vous met en pièce jointe une version simplifiée de mon document Excel afin que vous puissiez comprendre le fonctionnement de celui-ci.

J'espère que toutes ces modalités peuvent être matérialisées sous forme de macro

Je vous remercie pour votre aide!

capture d ecran 2018 12 19 a 15 59 50

Bonjour,

je vais partir d'un filtre avancé pour ensuite alimenter la liste déroulante ...

Quoique je vois que tu pris la macro de Juice, je vais le laisser faire pour que ce soit cohérent !

je me disais bien aussi que j'avais déjà vu cela !

Je me suis pris au jeu ...

Les résultats ne s'affichent peut-être pas comme tu voudrais ... teste et ensuite on peaufine !

Légère évolution dans la présentation ... en attente de tes commentaires.

Bonjour,

merci beaucoup pour ton aide Steelson!

Le format ne me convient pas tout à fait comme je voulais une barre de recherche qui affiche sous forme de liste déroulante (directement en-dessous de la cellule) les résultats de la recherche saisie.

Voir capture d'écran: lorsque je rentre S par exemple dans la cellule de recherche, s'affiche seulement les noms commençant par S. Et si je rentre rien dans la cellule de recherche alors ne s'affiche rien.

Puis je fais le choix de ma recherche et s'affiche les informations rattachés.

Néanmoins ta macro fonctionne et je t'en remercie!

Petite question: si ma liste de référence des métiers sous l'onglet 'Nomenclature' est modifié, s'allonge ou se rétréci, quels sont les modifications que je dois apporter à la macro (quelles lignes sont à modifier)?

Je te remercie d'avance!!

Private Sub UserForm_Initialize()

With ListBox1

.ColumnCount = 5

.ColumnWidths = "40;140;100;100"

End With

Me.ListBox1.List = Range("Tableau1[[Eligibilité]:[Libellé]]").Value

End Sub

Private Sub TextBox1_Change()

Me.ListBox1.Clear

i = 0

For Each c In Application.Index(Range("Tableau1[[Eligibilité]:[Libellé]]"), , 4)

If UCase(c) Like "*" & UCase(Me.TextBox1) & "*" Then

Me.ListBox1.AddItem

Me.ListBox1.List(i, 0) = c.Offset(0, -3).Value

Me.ListBox1.List(i, 1) = c.Offset(0, -2).Value

Me.ListBox1.List(i, 2) = c.Offset(0, -1).Value

Me.ListBox1.List(i, 3) = c.Offset(0, 0).Value

i = i + 1

End If

Next c

End Sub

Private Sub CommandButton1_Click()

flag = True

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) Then

flag = False

End If

Next i

If flag Then

MsgBox "Choisir un item !"

Exit Sub

End If

ligne = 4

Range("B" & ligne).Value = Me.ListBox1.Column(3)

Range("C" & ligne).Value = Me.ListBox1.Column(1)

Range("D" & ligne).Value = Me.ListBox1.Column(2)

Range("E" & ligne).Value = Me.ListBox1.Column(0)

Me.Hide

End Sub

Aussi, est-ce possible dans ta macro de faire en sorte que la cellule de recherche reste vide tant que rien n'est indiqué à l'intérieur?

Dans ma première réponse j'ai oublié d'attacher la capture d'écran, la voici!

J'ai également attaché ici une seconde capture d'écran car je souhaite savoir si c'est possible d'avoir la box de recherche (filtre avancé) seulement avec le nom du Libellé.

Je m'explique: dans la capture d'écran je souhaiterais que lorsque je tape 'bois' s'affiche seulement 'commerce de bois de chauffage'.

Merci d'avance!

capture d ecran 2018 12 28 a 10 00 18 capture d ecran 2018 12 28 a 10 08 45

Bonjour,

Le format ne me convient pas tout à fait comme je voulais une barre de recherche qui affiche sous forme de liste déroulante (directement en-dessous de la cellule) les résultats de la recherche saisie.

je vais regarder à te donner une version différente qui n'affichera que les libellés

Petite question: si ma liste de référence des métiers sous l'onglet 'Nomenclature' est modifié, s'allonge ou se rétréci, quels sont les modifications que je dois apporter à la macro (quelles lignes sont à modifier)?

rien à modifier car j'ai passé l'onglet 'Nomenclature' en tableau au sens excel

Nouvelle version

Dim choix()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("Saisie")) Is Nothing And Target.Count = 1 Then
        choix = Sheets("Nomenclature").Range("Tableau1[Libellé]").Value
        Me.ComboBox1.List = choix
        Me.ComboBox1 = Target
        Me.ComboBox1.Visible = True
        Me.ComboBox1.Activate
    Else
        Me.ComboBox1.Visible = False
    End If
End Sub

Private Sub ComboBox1_Change()
    Set dico = CreateObject("Scripting.Dictionary")
    For Each Item In choix
        If UCase(Item) Like UCase(Me.ComboBox1) & "*" Then dico(Item) = ""
    Next
    Me.ComboBox1.List = dico.keys
    Me.ComboBox1.DropDown
    ActiveCell.Value = Me.ComboBox1
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        If IsError(Application.Match(ActiveCell, choix, 0)) Then ActiveCell = ""
        ActiveCell.Offset(1).Select
    End If
End Sub

J'ai essayé d'ouvrir ton fichier joint mais celui-ci ne s'ouvre que en lecture seule et un message d'erreur s'affiche donc je ne peux pas utiliser le fichier

(message d'erreur joint)

capture d ecran 2018 12 31 a 09 58 46 capture d ecran 2018 12 31 a 09 58 55

La ComboBox1 est dans la feuille. Elle s'active en cliquant sur la cellule B4. Le fichier est en lecture/écriture, aucune restriction.

Je ne connais pas l'environnement mac, mais je suis surpris car la version précédente semblait s'afficher chez toi !

capture d ecran 340

J'ai essayé d'insérer le code dans mon fichier de base pour voir si cela fonctionne mais sans succès..

Voici le résultat que j'obtiens (capture d'écran en pièce jointe)

Merci pour ta patience

capture d ecran 2018 12 31 a 11 58 47

Lors de la recherche par mot clé ma liste de libellé disparait

Après quelques recherches sur internet je crois savoir ce qui pose problème.

Ma version de Excel avec le Mac ne permet pas de ComboBox, c'est pour ça que le résultat reste vide.. enfin je crois que là est l'explication

Comme je n'ai pas accès à ces fonctionnalités (voir capture d'écran), le code ne fonctionnera pas

capture d ecran 2018 12 31 a 12 05 30

J'ai essayé d'insérer le code dans mon fichier de base pour voir si cela fonctionne mais sans succès..

Voici le résultat que j'obtiens (capture d'écran en pièce jointe)

Merci pour ta patience

d'autant plus curieux que tu m'avais demandé une modification et que ce userform a donc été supprimé pour faire place une liste déroulante !! donc il doit y avoir mélange de fichiers ...

Le format ne me convient pas tout à fait comme je voulais une barre de recherche qui affiche sous forme de liste déroulante (directement en-dessous de la cellule)

est-ce que les fichiers tels que je les ai postés fonctionnent sur mac ?

Le message d'erreur:

"Erreur de compilation:

Membre de méthode ou de données introuvable"

Tout en indiquant le terme 'ComboBox' dans le code comme donnée introuvable.

Le premier fichier que tu as posté (première version) a très bien fonctionné sur le mac mais le dernier fichier que tu as posté non..

Bonjour,

donc concernant ta dernière version de macro que tu m'as envoyé.. celle-ci ne fonctionne pas sur mac à priori..

J'ai donc gardé pour le moment le deuxième fichier que tu m'as envoyé qui fonctionne très bien (correspond pas tout à fait à mes attentes mais its working) donc merci

Petite question: est ce que c'est possible de changer la couleur du formulaire de champ de recherche (comme celui-ci est bleu clair et je préférerais avoir une couleur très neutre comme tu gris claire)

Merci d'avance )

sans titre

Pour le faire évoluer ... je l'ai fait dans le fichier joint

capture d ecran 344
Rechercher des sujets similaires à "macro champ recherche forme liste deroulante choix"