![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
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 |
| ANNONCES | |||
|
|
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
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. |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
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. |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
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+ |
| Liens sociaux |
| Outils de la discussion | |
|
|