XL 2016 Plusieurs recherche sur une listbox

dgeo27

XLDnaute Junior
Bonjour,

J'ai actuellement une Listbox qui m'affiche des informations d'articles liée à Textbox1 (pour la recherche de base) pour rechercher uniquement par l'intitulé de l'article.

VB:
Private Sub TextBox1_Change()
  Dim DerLigne&, Ligne&
  ListBox1.Clear
  With Worksheets("Tarification")
    DerLigne = .Cells(Rows.Count, 2).End(xlUp).Row
    For Ligne = DerLigne To 4 Step -1
      With .Cells(Ligne, 2)
        If .Value <> 0 Then
          If InStr(LCase$(.Value), LCase$(TextBox1)) > 0 Then
            ListBox1.AddItem                                          '      colonne
            ListBox1.List(ListBox1.ListCount - 1, 0) = .Value
            ListBox1.List(ListBox1.ListCount - 1, 1) = .Offset(, 1)
'            ListBox1.List(ListBox1.ListCount - 1, 2) = .Offset(, 2)

          End If
        End If
      End With
    Next Ligne
  End With
End Sub

J'aimerais modifier mon code (sans savoir comment ...) pour recherche via plusieurs Textbox...
Textbox1 pour les intitulés
Textbox2 pour les fournisseurs
Textbox3 pour les groupes

Sans titre-1.jpg


merci pour votre aide :)
 

job75

XLDnaute Barbatruc
Bonjour dgeo27,

Suivant ce que vous voulez faire utilisez Or ou And avec le code :
VB:
If InStr(LCase(.Value), LCase(TextBox1)) Or InStr(LCase(.Offset(, 1)), LCase(TextBox2)) Or InStr(LCase(.Offset(, 2)), LCase(TextBox3)) Then
ou :
VB:
If InStr(LCase(.Value), LCase(TextBox1)) And InStr(LCase(.Offset(, 1)), LCase(TextBox2)) And InStr(LCase(.Offset(, 2)), LCase(TextBox3)) Then
A placer dans TextBox1_Change et pour TextBox2_Change, TextBox3_Change :
VB:
Private Sub TextBox2_Change()
TextBox1_Change
End Sub
A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Exemple de recherche multi-colonnes et multi-mots avec un seul TextBox.

Sans titre.png


VB:
Option Compare Text
Dim TblBD(), Choix(), NomTableau, NbCol
Private Sub UserForm_Initialize()
  NomTableau = "tableau1"                             ' adapter
  TblBD = Range(NomTableau).Value
  ReDim Choix(1 To UBound(TblBD))
  For i = LBound(TblBD) To UBound(TblBD)
     NbCol = Range(NomTableau).Columns.Count
     For k = 1 To NbCol: Choix(i) = Choix(i) & TblBD(i, k) & "|": Next k
  Next i
  Me.ListBox1.List = TblBD
  EnteteListBox
End Sub

Private Sub TextBox1_Change()
  If Me.TextBox1 <> "" Then
     mots = Split(Me.TextBox1, " ")
     Tbl = Choix
     For i = LBound(mots) To UBound(mots)
       Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
     Next i
     n = UBound(Tbl) + 1
     If n > 0 Then
       ReDim Tbl2(LBound(Tbl) To n + 1, 1 To NbCol)
       For j = LBound(Tbl) To UBound(Tbl)
         a = Split(Tbl(j), "|")
         For k = 0 To 3: Tbl2(j, k + 1) = a(k): Next k
       Next j
       Me.ListBox1.List = Tbl2
      Else
       Me.ListBox1.Clear
      End If
    Else
      Me.ListBox1.List = TblBD
    End If
End Sub

Boisgontier
 

Pièces jointes

  • FiltreElabRechercheBibliIntuitifForm.xls
    137.5 KB · Affichages: 12
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Il faut transformer la BD en tableau dynamique et que le nom du tableau soit Tableau1 (mettre sous forme de tableau).

(Vous pouvez faire un essai en copiant/collant votre BD sur mon fichier).

Boisgontier
 

Pièces jointes

  • FiltreElabRechercheBibliIntuitifFormETOU.xls
    150 KB · Affichages: 16
  • RechercheMulticolonnesMultimots.xls
    79.5 KB · Affichages: 10

dgeo27

XLDnaute Junior
Je vais essayer cela :)
Ensuite si je réussis à faire cela, sa sera toujours possible que je cherche pour compléter mon USF pour avoir un bouton pour rajouter des articles ? ou le fait que sa soit en tableau bloque tout ajouts ?
En gros idéalement mon USF doit pouvoir me montrer tous mes articles, que je puisse aussi en rajouter et au besoin modifier
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,


Ce programme générique fonctionne pour toute BD. Il permet d'ajouter, de modifier et de supprimer.
Il suffit de copier BD /coller sur la BD existante.


Les colonnes à afficher dans la ListBox se spécifient dans:

ColCombo = Array(1, 2, 3) ' A adapter (1 à 6 colonnes maxi)
colVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) ' Colonnes ListBox (à adapter)
colInterro = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) ' colonnes à interroger (adapter)


Boisgontier
 
Dernière édition:

dgeo27

XLDnaute Junior
Bon j'ai fait le plus simple donc copier coller les deux feuilles excels dans mon classeur et copier coller la présentation + codage sur un nouvel USF dans mon fichier
quelques adaptations et ok je valide sa fonctionne ;)

reste à modifier l'ensemble à ma guise pour que le tout me convienne ^^

Merci mille fois si j'ai des erreurs je revient ne partez pas mdr
 

Discussions similaires

Réponses
4
Affichages
205
Réponses
17
Affichages
816

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972