Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche via une macro

  • Initiateur de la discussion Initiateur de la discussion natacha
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

natacha

XLDnaute Occasionnel
Bonjour à tous,
voila je souhaiterais créer une macro qui execute une recherche sur le libellé et en fonction de la saisie on nous renvoie le code . Ex : la personne saisie "Ouvriers qualifiés", la liste contenant "Ouvriers qualifiés" apparait dans une liste deroulante et l'utisaleur selectionne celui qui lui correspond et on lui renvoie le code.
Je sais pas si je suis tres claire. N'hesitez pas si vous ne comprenez pas.
Je vous transmets le fichier de base.
Merci d'avance.
Natacha
 

Pièces jointes

Re : Recherche via une macro

Bonjour Natacha, bonjour le forum,

En pièce jointe ton fichier modifié. Clique sur le bouton Recherche (ou raccourci clavier [Alt]+[R]). Au fur et à mesure que tu tapes des caractères la ListBox se emt à jour... Ensuite double-clique sur un élément de la ListBox et celui-ci est placé dans le presse-papier (tu n'as pas spécifier quoi en faire...). Un simple [Ctrl]+[V] permettra de le coller dans la cellule de ton choix.
 

Pièces jointes

Re : Recherche via une macro

Merci beaucoup pour ta réponse. Je souhaiterais juste que les élément de la ListBox ne soient pas les codes mais les libellés contenant ce qui a été saisie.
Pour la réponse je souhaiterais qu'elle apparaisse dans une fenêtre. Si c'est possible, bien sur.
Encore merci pour le travail.
Natacha
 
Re : Recherche via une macro

Bonjour natacha, salut Robert,

En utilisant une liste de validation et cette macro :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$4" Then Exit Sub
If Application.CountIf([B:B], Target) Then Exit Sub
Dim cel As Range, txt$
For Each cel In Range("B2", [B65536].End(xlUp))
  If LCase(cel) Like "*" & LCase(Target) & "*" Then
    txt = txt & IIf(txt = "", "", ",") & Replace(cel, ",", "#")
  End If
Next
With Target.Validation
  .Delete
  If Target = "" Then Exit Sub
  .Add xlValidateList, Formula1:=txt
  .ShowError = False
End With
Target.Select
Application.SendKeys "%{UP}"
End Sub
Noter que les virgules en colonne B posent problème (sous Excel 2010) pour construire la liste.

Je suis obligé de les remplacer par #.

Fichier joint.

A+
 

Pièces jointes

Re : Recherche via une macro

Re,

Il faut d'abord éliminer les # s'il y en a en D4, en ajoutant :

Code:
Application.EnableEvents = False
Target = Replace(Target, "#", ",")
Application.EnableEvents = True
Fichier (2)

A+
 

Pièces jointes

Dernière édition:
Re : Recherche via une macro

Bonjour Natacha, Job, bonjour le forum,

En pièce jointe la version 2 avec les modifications demandées. Un clic dans un élément de la ListBox1 le place dans la TextBox2. Le bouton Ok place le contenu de la TextBox2 dans le presse-papier, car sinon je ne sais pas ce que tu vas en faire....
 

Pièces jointes

Dernière édition:
Re : Recherche via une macro

Re,

Au lieu d'utiliser # pour remplacer la virgule, utiliser le caractère de code 130 (une "fausse" virgule).

La macro finale :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$4" Then Exit Sub
Application.EnableEvents = False
Target.Select
Target = Replace(Target, Chr(130), ",")
Application.EnableEvents = True
If Application.CountIf([B:B], Target) Then Exit Sub
Dim cel As Range, txt$
For Each cel In Range("B2", [B65536].End(xlUp))
  If LCase(cel) Like "*" & LCase(Target) & "*" Then
    txt = txt & IIf(txt = "", "", ",") & Replace(cel, ",", Chr(130))
  End If
Next
With Target.Validation
  .Delete
  If Target = "" Or txt = "" Then Exit Sub
  .Add xlValidateList, Formula1:=txt
  .ShowError = False
End With
Application.SendKeys "%{UP}"
End Sub
Version (4).

A+
 

Pièces jointes

Re : Recherche via une macro

Bonsoir,
Merci beaucoup pour vos nombreuses réponses.
J'avoue que j'ai un petit penchant pour la solution de robert car la présentation est pas mal.
Mais je me heurte à un pbl quand j'essaie de l'adapter.
En fait je voudrait ne plus voir apparaitre le bouton recherche, mais directement la boite de dialogue et que cette boite soit sur la feuille 2 et non pas la feuille 1.
Je vous transmets ce que j'ai essayé de faire.
Je vous en remercie encore.
Natacha
 

Pièces jointes

Re : Recherche via une macro

Bonjour le fil, bonne fête Natacha, bonjour le forum,

Il suffit de remplacer dans la procédure ListBox1_Click :
Code:
Me.TextBox2.Value = Cells(.List(.ListIndex, 1), 1).Value
par :
Code:
Me.TextBox2.Value = Sheets("Feuil1").Cells(.List(.ListIndex, 1), 1).Value

Le fichier :
 

Pièces jointes

Re : Recherche via une macro

Bonjour à tous,
merci robert c'est exactement ça.
Mais est il possible de supprimer le bouton recherche et d'acceder directement sur la feuille 2 sur le formulaire de recherche.
D'avance merci.
Merci pour ma fête!
 
Re : Recherche via une macro

Bonjour le fil, bonjour le forum,

Dans la version 4 un double-clic sur n'importe quelle cellule de la colonne A ou B ouvrira l'Userform dans l'onglet Feuil2.
 

Pièces jointes

Re : Recherche via une macro

Bonjour à tous,
Je reviens sur cette discussion, car il me subsiste un problème.
Si un utilisateur tape un métier non répertorié un message de bug apparait.
Je préférais qu'une fenêtre apparaisse pour dire que le métier n'est pas répertorié.
ex: infographiste.
Je vous remercie par avance.
Natacha
 
Re : Recherche via une macro

Je précise un peu mon prbl.
En fait le message de bug apparait si la personne tape par exemple infographiste dans intitulé de l'emploi et clique ensuite sur ok.
Je vous remercie par avance.
Natacha
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…