Les pros de la listbox

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
s
sa3d88
Membre habitué
Membre habitué
Messages : 146
Inscrit le : 17 avril 2019
Version d'Excel : 2016

Message par sa3d88 » 29 mars 2020, 23:36

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
listebox.xlsm
(372.81 Kio) Téléchargé 5 fois
B
Boisgontierjacques
Membre fidèle
Membre fidèle
Messages : 470
Appréciations reçues : 109
Inscrit le : 5 octobre 2018
Version d'Excel : 2016

Message par Boisgontierjacques » 30 mars 2020, 09:45

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
listebox3.xlsm
(410.41 Kio) Téléchargé 7 fois
s
sa3d88
Membre habitué
Membre habitué
Messages : 146
Inscrit le : 17 avril 2019
Version d'Excel : 2016

Message par sa3d88 » 30 mars 2020, 21:54

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

je te renvoie le fichier
listebox3.xlsm
(410.41 Kio) Téléchargé 2 fois
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message