Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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



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
213
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…