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

moteur de recherche

  • Initiateur de la discussion germain
  • Date de début
G

germain

Guest
Bonjour a tous

voila jai commencé a creer une macro avec une userform qui me permet de faire une recherche dans un tableau excel pour trouver une designation de piece desiré
le probleme c quand je recherche une designation qui existe plusieurs fois il ne mafiche que la premiere quil trouve et pas les autres

comment faire pour que quand je recherche une designation souhaite toutes les designations existante dans mon tableau excel soit trouver

voila mon code

Private Sub CommandButton2_Click()
Dim Cherche As String
Dim L As Integer
Dim Maplage As Range
Dim FirstADdress As String
Dim C As Object
Cherche = TextBox4
If Cherche = "" Then
Exit Sub
End If
UserForm1.Caption = "ESSAI_RECHERCHE"
L = Sheets("Fabricants").Range("A65536").End(xlUp).Row
Set Maplage = Sheets("Fabricants").Range("A4:C" & L)
With Maplage
Set C = .Find(Cherche, LookIn:=xlValues)
If Not C Is Nothing Then
FirstADdress = C.Address
Do
ListBox2.AddItem C
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstADdress
End If
End With
End Sub


Merci d'avance
 
G

germain

Guest
salut yo voila mon fichier
 

Pièces jointes

  • essai_recherche.zip
    48 KB · Affichages: 36
  • essai_recherche.zip
    48 KB · Affichages: 62
  • essai_recherche.zip
    48 KB · Affichages: 37
Y

Yo

Guest
Salut,
Je comprends pas ...

Quand je recherche CAPTEUR par le UserForm, j'obtiens 5 lignes .

Quand je fais la recherche dans la feuille Excel, il y a effectivement 5 Cellules contenant CAPTEUR.

Ou est le problème ? Ou alors, j'ai rien compris.
 
Y

Yo

Guest
En supposant que j'ai bien compris.
Et que ça marche chez moi, mais pas chez toi pour diverses raisons ( Version d'Excel différente (je suis en 2000 )...), je te propose d'essayer la methode ci-dessous:

Private Sub CommandButton2_Click()
Dim Cherche As String
Dim L As Integer
Dim Maplage As Range
Dim FirstADdress As String
Dim C As Object
Cherche = TextBox4
If Cherche = "" Then
Exit Sub
End If


UserForm1.Caption = "Thierry's Démo Mode Recherche par String"

i = 4
Do
For j = 1 To 3
If InStr(1, UCase(Cells(i, j)), UCase(Cherche)) <> 0 Then
' MsgBox "Trouve"
ListBox2.AddItem Cells(i, j)
End If
Next j
i = i + 1
Loop While Cells(i, 1) <> ""
End Sub

Tiens moi au courrant. Je te joins ton classeur modifié avec l'autre méthode.
 

Pièces jointes

  • essai_recherche.zip
    47.8 KB · Affichages: 59
  • essai_recherche.zip
    47.8 KB · Affichages: 43
  • essai_recherche.zip
    47.8 KB · Affichages: 40
Y

Yo

Guest
Ca y est ... J'ai compris.
Un peu long à la détente aujourdhui.

Une solution dans le fichier joint.

J'ai modifié ta listbox. Maintenant, elle contient 3 colonnes:
- Le fabricant (colonne cachée : largeur de colonne = 0 )
- Le produit
- L'adresse qui est cachée aussi.

Comme ça quand tu trouve la valeur recherchée, tu renseignes ta listbox avec toutes les cellules de la ligne.
Comme ça quand tu cliques pour selectionner un article, tu as déjà tous les renseignements. Pas besoin de relancer une recherche.

J'ai du modifie ta macro sur ListBox2_Click(). elle s'est considérablement amincie !!!

A+
 

Pièces jointes

  • essai_recherche.zip
    47.4 KB · Affichages: 42
  • essai_recherche.zip
    47.4 KB · Affichages: 34
  • essai_recherche.zip
    47.4 KB · Affichages: 45

Discussions similaires

Réponses
1
Affichages
172
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…