Les pros de la listbox

Bonjour les pros de listbox

svp j'ai un petit projet qui consiste a afficher les résultats d'une recherche sur les listbox de mon userform

Etape 1: afficher les informations client suite à la saisie sur textbox1, textbox2, textbox3 ou textbox4 (en utilisant textbox_after_change) Les informations client se trouvent sur la feuille BASE_CLIENT :

Lorsque je saisi un N° DE POLICE sur la textbox1 il me renvoie sur la listbox1, les informations de ce N° DE POLICE dans l'ordre :

N° DE POLICE, NOM, PRENOM, CIN, DATE DE NAISSANCE, CANAL, SOCIETE, CODE INTERMEDIAIRE, NOM INTERMEDIAIRE

Lorsque je saisi un N° CIN sur la textbox2 il me renvoie sur la listbox1, les informations de ce N° CIN dans l'ordre :

N° DE POLICE, NOM, PRENOM, CIN, DATE DE NAISSANCE, CANAL, SOCIETE, CODE INTERMEDIAIRE, NOM INTERMEDIAIRE

Lorsque je saisi un NOM sur la textbox3 il me renvoie sur la listbox1, les informations de ce NOM dans l'ordre :

N° DE POLICE, NOM, PRENOM, CIN, DATE DE NAISSANCE, CANAL, SOCIETE, CODE INTERMEDIAIRE, NOM INTERMEDIAIRE

Lorsque je saisi un PRENOM sur la textbox il me renvoie sur la listbox1, les informations de ce PRENOM dans l'ordre :

N° DE POLICE, NOM, PRENOM, CIN, DATE DE NAISSANCE, CANAL, SOCIETE, CODE INTERMEDIAIRE, NOM INTERMEDIAIRE

la listbox1 doit comporter les entêtes de colonnes.

Une fois réalisé je pourrai passer l'étape 2

Merci pour vos contributions. ci-joint mon fichier

Bonjour,

Private Sub UserForm_Initialize()
  nomtableau1 = "Tableau1"
  nomtableau2 = "Tableau2"
  Set Rng1 = Range(nomtableau1)
  Set Rng2 = Range(nomtableau2)
  TblBD1 = Rng1.Value
  TblBD2 = Rng2.Value
  ColVisu1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)  ' Colonnes à visualiser (adapter)
  ColVisu2 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) ' Colonnes à visualiser (adapter)
  NbCol1 = UBound(ColVisu1) + 1
  NbCol2 = UBound(ColVisu2) + 1
  '---- Contenu ListBox initial
  EnteteListBox1
  EnteteListBox2
  Affiche1 1, "*"
  Affiche2 1, "*"
End Sub
Private Sub TextBox1_Change()
  Affiche1 1, TextBox1 & "*"
End Sub
Private Sub TextBox3_Change()
  Affiche1 2, TextBox3 & "*"
  Affiche2 3, TextBox3 & "*"
End Sub

Private Sub TextBox2_Change()
  Affiche1 4, TextBox2 & "*"
End Sub

Sub Affiche1(colrech, temp)
  Dim Tbl(): N = 0
  For i = 1 To UBound(TblBD1)
    If TblBD1(i, colrech) Like temp Then
      N = N + 1: ReDim Preserve Tbl(1 To NbCol1, 1 To N)
      c = 0
      For Each k In ColVisu1
        c = c + 1: Tbl(c, N) = TblBD1(i, k)
      Next k
    End If
  Next i
  If N > 0 Then Me.ListBox1.Column = Tbl Else Me.ListBox1.Clear
End Sub
Sub Affiche2(colrech, temp)
  Dim Tbl(): N = 0
  For i = 1 To UBound(TblBD2)
    If TblBD2(i, colrech) Like temp Then
      N = N + 1: ReDim Preserve Tbl(1 To NbCol2, 1 To N)
      c = 0
      For Each k In ColVisu2
        c = c + 1: Tbl(c, N) = TblBD2(i, k)
      Next k
    End If
  Next i
  If N > 0 Then Me.ListBox2.Column = Tbl Else Me.ListBox2.Clear
End Sub
Sub EnteteListBox1()
  x = Me.ListBox1.Left + 8
  y = Me.ListBox1.Top - 16
  For Each k In ColVisu1
    Set Lab = Me.Controls.Add("Forms.Label.1")
    Lab.Caption = Rng1.Offset(-1).Resize(1).Cells(1, k)
    Lab.Top = y
    Lab.Left = x
    Lab.Height = 15
    x = x + Rng1.Columns(k).Width * 1#
    temp = temp & Rng1.Columns(k).Width * 1# & ";"
  Next
  temp = Left(temp, Len(temp) - 1)
  Me.ListBox1.ColumnCount = UBound(ColVisu1) + 1
  Me.ListBox1.ColumnWidths = temp
End Sub

Sub EnteteListBox2()
  x = Me.ListBox2.Left + 8
  y = Me.ListBox2.Top - 16
  For Each k In ColVisu2
    Set Lab = Me.Controls.Add("Forms.Label.1")
    Lab.Caption = Rng2.Offset(-1).Resize(1).Cells(1, k)
    Lab.Top = y
    Lab.Left = x
    Lab.Height = 15
    x = x + Rng2.Columns(k).Width * 1#
    temp = temp & Rng2.Columns(k).Width * 1# & ";"
  Next
  temp = Left(temp, Len(temp) - 1)
  Me.ListBox2.ColumnCount = UBound(ColVisu2) + 1
  Me.ListBox2.ColumnWidths = temp
End Sub

Boisgontier

Un grand merci pour toi Boisgontierjacques c'est vraiment top t'es AS

je devrai passer maintenant à l'Etape 2:

1 : Lorsque je sélectionne un ligne sur la listbox1 (informations client) je souhaite afficher sur la listbox2 les lignes encaissement relatives au N° DE POLICE de la ligne sectionnée sur la listbox1 et sur la listbox3 ses lignes rachat

2. Lorsque je sélectionne un ligne sur la listbox1 (informations client) je souhaite afficher sur la listbox3 les lignes rachat relatives au N° CIN de la ligne sectionnée sur la listbox1

j'espère que j'étais assez explicite si tu as besoin de plus d'éclaircissements n'hésite pas.

Merci je te serai très reconnaissant.

Rechercher des sujets similaires à "pros listbox"