multi recherche listbox

  • Initiateur de la discussion Initiateur de la discussion titange305
  • 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 !

T

titange305

Guest
Bonjour,
j'ai une feuille de donnée (sheet4), je l'affecte a ma liste box ensuite je place au dessus de ma liste box 5 textbox et 2 combobox
voici le code pour une recherche d'un textbox (il recherche toute les partie de mot qui peut y avoir dans les données). Je fais une recherche sur ma feuille de donnée, ensuite si je trouve quelque chose je le mets dans une sheet5
je pense que mon code est un peu spécial, si vous le voulez vous pouver le modifier ainsi j'apprendrai une autre manière de programmer.

Mon problème est que je ne sais pas comment je peux faire pour introduire les autres textbox et combo

Je vous en remercie

Code:
If txtdesignation2.Text = "" Then GoTo Fin
 Sheet5.Activate
 Sheet5.Rows("2:63000").Select
    Selection.ClearContents
    

NombreLigne = Sheet4.Range("Z1").Value
MotRecherche = txtdesignation2.Text
NombreCara = Len(txtdesignation2.Text)
Ligne = 2
For i = 2 To NombreLigne + 1
  Adresse = "B" & i
  contenu = Sheet4.Range(Adresse).Value
  NbrCaractere = Len(contenu)

 For j = 1 To NbrCaractere
   Mot = Mid(contenu, j, NombreCara)
   If Mot = MotRecherche Then
      Sheet4.Activate
      Sheet4.Rows(i & ":" & i).Select
      Selection.Copy
      Sheet5.Activate
      Sheet5.Rows(Ligne & ":" & Ligne).Select
      Sheet5.Paste
      Ligne = Ligne + 1
   End If
  Next j
Next i
  ListBox1.RowSource = "A2:" & "G" & Ligne - 1
  GoTo fin1
Fin:
CompteurLigne = Sheet4.Range("Z1").Value
Adresse = "A2"
Adresse1 = "G" & CompteurLigne + 1
Sheet4.Activate
ListBox1.RowSource = Adresse & ":" & Adresse1
fin1:
 
Re : multi recherche listbox

Bonjour titange305, bonjour à toutes et à tous 🙂

Je ne comprends pas bien ta question. Si ton code fonctionne, il suffit de t'en inspirer pour tes autres contrôles, non ?

Sinon, pour un autre exemple de code (il existe plein de façon de procéder), voici une proposition (USF avec 1 ListBox à 7 colonnes, 1 TextBox nommée txtdesignation2 et 1 CommandButton) :

Code:
[FONT=Courier New][SIZE=1][COLOR=blue]Private Sub[/COLOR] CommandButton1_Click()
[COLOR=green]'
' Déclaration des variables
'------------------------------[/COLOR]
[COLOR=blue]Dim[/COLOR] Sheet4         [COLOR=blue]As[/COLOR] Worksheet
[COLOR=blue]Dim[/COLOR] Sheet5         [COLOR=blue]As[/COLOR] Worksheet
[COLOR=green]'------------------------------[/COLOR]
[COLOR=blue]Dim[/COLOR] Ligne          [COLOR=blue]As Long[/COLOR]
[COLOR=green]'------------------------------[/COLOR]
[COLOR=blue]Dim[/COLOR] MotCherche     [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] NumeroCar      [COLOR=blue]As Integer[/COLOR]
[COLOR=green]'------------------------------[/COLOR]
[COLOR=blue]Dim[/COLOR] PlageRecherche [COLOR=blue]As[/COLOR] Range
[COLOR=blue]Dim[/COLOR] CelContenu     [COLOR=blue]As[/COLOR] Range
[COLOR=green]'------------------------------[/COLOR]
'
  [COLOR=green]' Initialisées pour l'exemple[/COLOR]
  [COLOR=blue]Set[/COLOR] Sheet4 = Sheets("Feuil1")
  [COLOR=blue]Set[/COLOR] Sheet5 = Sheets("Feuil2")
 
  Sheet4.Activate
 
  [COLOR=blue]If[/COLOR] txtdesignation2.Text = "" [COLOR=blue]Then[/COLOR]
 
    [COLOR=green]' pour l'exemple, la source est en "Sheet5"[/COLOR]
    Me.ListBox1.RowSource = "'" & Sheet5.CodeName & "'!A2:G" & (Range("Z1") + 1)
 
  [COLOR=blue]Else[/COLOR]
 
    Sheet5.Rows("2:63000").ClearContents
 
    [COLOR=blue]Set[/COLOR] PlageRecherche = Range("B2:B" & Range("Z1").Value + 1)
    [COLOR=green]' On place les caractère générique "[/COLOR][COLOR=red][B]*[/B][/COLOR][COLOR=green]"[/COLOR]
    MotCherche = "*" & txtdesignation2.Text & "*"
    Ligne = 1
 
    [COLOR=green]' et pour chaque cellule de la colonne B, on utilise la fonction de[/COLOR]
    [COLOR=green]' feuille de calcul : CHERCHE[/COLOR]
    [COLOR=blue]On Error Resume Next[/COLOR]
    [COLOR=blue]For Each[/COLOR] CelContenu [COLOR=blue]In[/COLOR] PlageRecherche
      NumeroCar = WorksheetFunction.Search(MotCherche, CelContenu, 1)
 
      [COLOR=green]' ... qui retourne une erreur si la chaîne n'est pas trouvée (non sensible à la casse)[/COLOR]
      [COLOR=blue]If[/COLOR] Err <> 0 [COLOR=blue]Then[/COLOR]
        Err.Clear
      [COLOR=blue]Else[/COLOR]
        Ligne = Ligne + 1
        CelContenu.EntireRow.Copy Destination:=Sheet5.Rows(Ligne)
      [COLOR=blue]End If[/COLOR]
    [COLOR=blue]Next[/COLOR] CelContenu
    [COLOR=blue]On Error GoTo 0[/COLOR]
 
    [COLOR=green]' pour l'exemple, la source est en "Sheet5"[/COLOR]
    Me.ListBox1.RowSource = "'" & Sheet5.CodeName & "'!A2:" & "G" & Ligne
 
  [COLOR=blue]End If[/COLOR]
 
[COLOR=blue]End Sub[/COLOR][/SIZE][/FONT]

Pour le reste, n'hésite pas à revenir sur ce fil pour expliquer plus clairement ce que tu souhaites faire.

A+ 😉
 
Re : multi recherche listbox

merci pour ta réponse
oui mais le problème si je veux tenir compte de ma deuxieme recherche je dois prendre les valeur de ma sheet5 et les remetre sur une sheet6 avec mon code et la je devrais avoir bc de feuille
mais je vais essaie ton code et je te dis quoi
encore merci
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
665
Réponses
16
Affichages
2 K
Réponses
3
Affichages
923
Retour