Recherche dans une ListBox à partir d'une liste déroulante directement sur la feuille

Cide

XLDnaute Nouveau
Bonjour à tous

Je souhaite lister dans une Listbox des éléments de ma feuille de calcul
L’exemple joint me permet tout à fait de le faire

Mais pour certains éléments je vais le faire souvent
Exemple : "Espèces" , "Libellé" ou "Divers"
Plutôt que de charger ma ListBox et de remplir la TextBox pour ces éléments
Je souhaiterais pouvoir lister ces éléments directement à partir de ma feuille en cliquant par exemple sur Libellé dans un genre de liste déroulante
Mais est-ce possible ??

Merci pour votre aide
A+
 

Pièces jointes

  • Listbox.xlsm
    27.5 KB · Affichages: 34
  • Listbox.xlsm
    27.5 KB · Affichages: 30
  • Listbox.xlsm
    27.5 KB · Affichages: 26

Papou-net

XLDnaute Barbatruc
Re : Recherche dans une ListBox à partir d'une liste déroulante directement sur la fe

Bonsoir Cide,

Ton fichier modifié en pièce jointe.

Dans le but de simplifier les choses, je te propose une solution légèrement différente: un double-clic sur une cellule de la colonne F affiche le formulaire filtré.

Sinon, ce que tu demandes est possible, mais ça demande une réflexion pour éviter les doublons de la liste. Donc si ça te convient, j'en serais ravi.

Cordialement.
 

Pièces jointes

  • Listbox.xlsm
    32.2 KB · Affichages: 32
  • Listbox.xlsm
    32.2 KB · Affichages: 35
  • Listbox.xlsm
    32.2 KB · Affichages: 28
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Recherche dans une ListBox à partir d'une liste déroulante directement sur la fe

RE:

Pour anticiper ta réponse, voici une version conforme à ta demande initiale.

La liste déroulante est en F2, mais on peut la placer n'importe où bien sûr. Quand le choix est fait par la liste déroulante, la zone de texte (TextBox1) est masquée mais si on utilise le bouton elle est active.

Pour le fun, j'ai conservé le choix par double-clic. A toi de conserver la solution que tu préfères.

Cordialement.
 

Pièces jointes

  • Listbox1.xlsm
    35.9 KB · Affichages: 31
  • Listbox1.xlsm
    35.9 KB · Affichages: 39
  • Listbox1.xlsm
    35.9 KB · Affichages: 34

Cide

XLDnaute Nouveau
Re : Recherche dans une ListBox à partir d'une liste déroulante directement sur la fe

Bonjour à Tous, Bonjour Papou-Net

Merci beaucoup

Concernant ta première solution, j'en suis très ravi
Je l'ai retranscrit dans mon fichier d'origine (Plus de 500 lignes)
et cela fonctionne très bien

En fait, je n'avais pas pensé à cette méthode du tout !
Mais elle est très satisfaisante pour des libellés qui reviennent souvent
Car évidement on les a facilement sous la main pour cliquer dessus.

Je suis donc aussi intéressé par ta 2ème solution avec la liste déroulante
Par contre si elle fonctionne très bien dans le fichier exemple, elle ne fonctionne pas dans mon fichier d'origine
Peut-être à cause du fait que j'ai déjà un
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
J'ai donc du en faire un seul avec les 2
Mais comme les 2 ne traitent pas de la même colonne
Je ne suis pas sûr que cela viennent bien de cela.

Mais de toute façon cela ne convient pas
Je me rencontre que je n'ai pas assez donné d'explication dans ma demande
J'ai actuellement environ 500 lignes dans mon tableau et à terme cela sera multiplié par 2 au moins
Dans ces 500 lignes, je n'ai heureusement pas besoin de faire des recherches sur tous les libellés
En fait j'ai besoin de faire des recherches sur une bonne trentaine de libellés
C'est donc plus simple aussi, car il n'y a donc aucun risque de doublons
Cette liste pourrait se situer dans la feuille 2
Et je la compléterais manuellement chaque fois que cela sera nécessaire

Cela devrait donc ce faire à partir de ta solution
Mais elle n'est pas commentée et je suis loin de tout comprendre !
S'il t'est possible de l'adapter, merci d'avance

A+
 

Papou-net

XLDnaute Barbatruc
Re : Recherche dans une ListBox à partir d'une liste déroulante directement sur la fe

Bonjour Cide,

Merci pour ton retour.

Voici donc le code commenté:

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'La variable "Plage" désigne la zone de liste en colonne F (F5 à F24 dans ce cas)
Dim Plage As Range 
' La ligne suivante définit "Plage" de la façon suivante:
'Elle recherche les cellules qui contiennent des données (SpecialCells(xlCellTypeConstants)
'dans la zone F5:F1048576 (1048576 correspondant à Rows.count)
'Cette façon de faire évite d'avoir àn modifier le code en cas d'ajout ou de suppression de lignes dans la liste
Set Plage = Range("F5:F" & Rows.Count).SpecialCells(xlCellTypeConstants)
' La ligne suivante vérifie si la cellule double-cliquée est incluse dans la Plage précédemment définie
'Si ce n'est pas le cas (Is Nothing), la macro se termine ici (Exit Sub)
If Intersect(Plage, Target) Is Nothing Then Exit Sub
'Les instructions suivantes (précédées d'un point) s'appliquent au formulaire Recherche
With Recherche
  .TextBox1 = Target.Value 'écrit le contenu de la cellule double-cliquée dans la zone de texte
  .Show
End With
Cancel = True 'Annule l'action du double-clic, sinon il faudrait appuyer sur Enter pour continuer
End Sub

A +

Cordialement.
 

Cide

XLDnaute Nouveau
Re : Recherche dans une ListBox à partir d'une liste déroulante directement sur la fe

Re,

Merci pour ta réponse
Mais il y a erreur
Tu m'as envoyé le code commenté pour la 1ère solution
Celui-ci est parfait et fonctionne très bien.
C'est bien quand même car cela va me permettre de le comprendre totalement

Mais c'est le 2ème code qui pose problème
Celui avec une liste déroulante.

A+
 

Papou-net

XLDnaute Barbatruc
Re : Recherche dans une ListBox à partir d'une liste déroulante directement sur la fe

RE:

Voici le second fichier commenté.

Code:
Par contre si elle fonctionne très bien dans le fichier exemple, elle ne fonctionne pas dans mon fichier d'origine
Peut-être à cause du fait que j'ai déjà un 
                 
                 [FONT=monospace]Private Sub Worksheet_Change(ByVal Target As Range)

Effectivement, certaines conditions sortant de la macro avant la fin, toutes les actions attachées à l'événement Change ne sont pas exécutées. Si tu le veux, tu peux m'envoyer le code de ta procédure pour que je puisse regarder l'intégration de la mienne.

A +

Cordialement.


[/FONT]
 

Pièces jointes

  • Listbox2.xlsm
    37 KB · Affichages: 29
  • Listbox2.xlsm
    37 KB · Affichages: 32

Discussions similaires

Réponses
4
Affichages
281
Réponses
21
Affichages
1 K

Statistiques des forums

Discussions
312 306
Messages
2 087 094
Membres
103 467
dernier inscrit
Pandiska