ListBox remplie selon TextBox

Bonjour le forum,

Je refait appel à vous pour me venir en aide.

J'ai une feuille Excel avec un tableau qui fait office de base de données.

J'aimerais pouvoir remplir une ListBox qui est dans un UserForm selon le nom de l'entreprise qui est sur une TextBox. Il faudrait que dans ma ListBox Il y apparaisse uniquement les colonnes B(Fonction); C (Civilité) et D (Nom)

Je joint un fichier

D'avance, merci

20classeur1.xlsm (67.68 Ko)

Bonsoir,

Option Compare Text
Dim TblBD, ColVisu(), NbCol

Private Sub UserForm_Initialize()
  nomtableau = "tableau2"
  ColVisu = Array(2, 3, 4)   ' Colonnes à visualiser
  NbCol = UBound(ColVisu) + 1
  TblBD = Range(nomtableau).Value
  Me.ListBox1.ColumnCount = UBound(TblBD, 2)
  Me.ListBox1.ColumnWidths = "80;30;80"
  '---- Contenu ListBox initial
  Dim Tbl(): ReDim Tbl(1 To UBound(TblBD), 1 To NbCol)
  For i = 1 To UBound(TblBD)
      c = 0
      For Each k In ColVisu
        c = c + 1: Tbl(i, c) = TblBD(i, k)
      Next k
  Next i
  Me.ListBox1.List = Tbl
End Sub

Private Sub TextBox1_Change()
  Dim Tbl(): j = 0
  clé = "*" & Me.TextBox1 & "*"
  For i = 1 To UBound(TblBD)
    If TblBD(i, 1) Like clé Then
      j = j + 1: ReDim Preserve Tbl(1 To NbCol, 1 To j)
      c = 0
      For Each k In ColVisu
        c = c + 1: Tbl(c, j) = TblBD(i, k)
      Next k
    End If
  Next i
  If j > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
End Sub

On peut ajouter les entetes automatiques.

Boisgontier

Bonsoir,

Merci Boisgontierjacques.

C'est bien ça que je voulais.

Mille merci pour ton aide.

Le textbox pourrait être remplacé par un combobox

Boisgontier

Et comment faire avec une combobox.? J'essaye, mais j'y arrive pas

Option Compare Text
Dim TblBD, ColVisu(), NbCol
Private Sub UserForm_Initialize()
  ColVisu = Array(2, 3, 4)   ' Colonnes à visualiser
  NbCol = UBound(ColVisu) + 1
  TblBD = [tableau2].Value
  Me.ListBox1.ColumnCount = UBound(TblBD, 2)
  Me.ListBox1.ColumnWidths = "80;30;80"
  '----
  Set d = CreateObject("scripting.dictionary")
  d("*") = ""
  For Each c In [tableau2[entreprise]]
    d(c.Value) = ""
  Next c
  Me.ComboBox1.List = d.keys
  '---- Contenu ListBox initial
  Dim Tbl(): ReDim Tbl(1 To UBound(TblBD), 1 To NbCol)
  For i = 1 To UBound(TblBD)
      c = 0
      For Each k In ColVisu
        c = c + 1: Tbl(i, c) = TblBD(i, k)
      Next k
  Next i
  Me.ListBox1.List = Tbl
End Sub

Private Sub ComboBox1_click()
  Dim Tbl(): j = 0
  clé = "*" & Me.ComboBox1 & "*"
  For i = 1 To UBound(TblBD)
    If TblBD(i, 1) Like clé Then
      j = j + 1: ReDim Preserve Tbl(1 To NbCol, 1 To j)
      c = 0
      For Each k In ColVisu
        c = c + 1: Tbl(c, j) = TblBD(i, k)
      Next k
    End If
  Next i
  If j > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
End Sub

Boisgontier

28filtrecombobox.xlsm (90.82 Ko)

Extra !!!

Merci pour ton aide.

Je vais voir tous ça et essayer de comprendre le code

Rechercher des sujets similaires à "listbox remplie textbox"