Microsoft 365 Recherche par Userform

Herlay

XLDnaute Junior
Bonsoir le Forum,

j'effectue une recherche via un Userform par le N°client et/ou le Siren. les résultats affichés dans la ListBox affiche que les 2 premières colonnes.
je souhaiterais avoir l'ensemble des infos (soit les colonnes A à L (sauf la J) dans une seule listbox ou dans plusieurs listbox (pour un visuel différent)

je ne sait pas dans quelle partie du code, je peux intervenir

VB:
Private Sub Siren_Change()

    On Error Resume Next
        DMAListBox.Clear
        X = 0
        t = Range("A2:L" & Cells(Rows.Count, 2).End(xlUp).Row)
        ReDim t1(1 To UBound(t), 1 To 2)
        For i = 1 To UBound(t)
        If Left(t(i, 1), Len(Siren)) = Left(Siren, Len(Siren)) Or Left(t(i, 5), Len(Siren)) = Left(Siren, Len(Siren)) Then
        X = X + 1
        For Y = 1 To 10: t1(X, Y) = t(i, Y): Next Y
        End If: Next i
        DMAListBox.List = t1
        Erase t, t1
        If Siren = "" Then DMAListBox.Clear
        DMAListBox.Visible = True
        
End Sub

Merci d'avance pour votre aide.
Herlay
 

Pièces jointes

  • RechercheParUserform.xlsm
    82.7 KB · Affichages: 9

job75

XLDnaute Barbatruc
Bonsoir Herlay,

Si vous n'aviez pas mis On Error Resume Next vous auriez probablement vu d'où venait l'erreur.

Pour avoir 12 colonnes il faut évidemment écrire :
VB:
ReDim t1(1 To UBound(t), 1 To 12)
et faire une boucle sur les 12 colonnes :
VB:
For Y = 1 To 12: t1(X, Y) = t(i, Y): Next Y
A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,


VB:
Option Compare Text
Dim f, Rng, TblBD(), NbCol
Private Sub UserForm_Initialize()
  Set f = Sheets("BD")
  Set Rng = f.Range("A2:L" & f.[A65000].End(xlUp).Row)
  NbCol = Rng.Columns.Count
  TblBD = Rng.Value
  Me.ListBox1.List = TblBD
  Me.ListBox1.ColumnCount = NbCol
  EnteteListBox
End Sub

Private Sub TextBox1_Change()
     Dim b()
     tmp = "*" & Replace(Me.TextBox1, " ", "*") & "*"
     n = 0
     For i = LBound(TblBD) To UBound(TblBD)
       If TblBD(i, 2) Like tmp Or TblBD(i, 5) Like tmp Then
         n = n + 1: ReDim Preserve b(1 To NbCol + 1, 1 To n)
         For k = 1 To NbCol: b(k, n) = TblBD(i, k): Next k
       End If
      Next i
      If n > 0 Then Me.ListBox1.Column = b Else Me.ListBox1.Clear
End Sub

Sub EnteteListBox()
  x = Me.ListBox1.Left + 8
  Y = Me.ListBox1.Top - 12
  For i = 1 To NbCol
    Set lab = Me.Controls.Add("Forms.Label.1")
    lab.Caption = Rng.Offset(-1).Cells(1, i)
    lab.Top = Y
    lab.Left = x
    x = x + Rng.Columns(i).Width * 1.1
    temp = temp & Rng.Columns(i).Width * 1.1 & ";"
  Next
  temp = Left(temp, Len(temp) - 1)
  Me.ListBox1.ColumnWidths = temp
End Sub

Sans titre.png


Boisgontier
 

Pièces jointes

  • FormIntuitifPlusieursMotsTextBoxListBox.xls
    79.5 KB · Affichages: 10
  • FormIntuitifPlusieursMotsTextBoxListBox2.xls
    73.5 KB · Affichages: 11
Dernière édition:

Discussions similaires

Réponses
4
Affichages
192