Bonjour à tous,
Je me permets de solliciter à nouveau ce forum car je tourne en rond.
Voilà , j'ai adapté un fichier trouvé sur le site car je ne maitrise absolument pas le VBA et donc je suis bloqué sur plusieurs choses pour terminer mon fichier.
J'ai une base de données qui contient 11 colonnes mais la ListBox trouvée ne me m'affiche que 6 colonnes. J'ai également des TextBox qui n'affichent les 6 premières informations de ma ligne selectionnée.
Que dois-je modifier dans ce code ou dans les propriétés des TextBox/ListBox ?
Je vous joins également le fichier.
Merci d'avance,
Dim f, choix(), Rng, Ncol
Private Sub Label1_Click()
End Sub
Private Sub TextBox2_Change()
End Sub
Private Sub TextBox3_Change()
End Sub
Private Sub TextBox4_Change()
End Sub
Private Sub TextBox5_Change()
End Sub
Private Sub TextBox6_Change()
End Sub
Private Sub TextBox7_Change()
End Sub
Private Sub TextBox8_Change()
End Sub
Private Sub TextBox9_Change()
End Sub
Private Sub TextBox10_Change()
End Sub
Private Sub TextBox11_Change()
End Sub
Private Sub UserForm_Initialize()
Set f = Sheets("bdd")
Set Rng = f.Range("A3:F" & f.[a65000].End(xlUp).Row)
Ncol = Rng.Columns.Count
'---- entêtes ListBox
x = 15
Y = Me.ListBox1.Top - 12
For i = 1 To Ncol
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(2, i)
Lab.Top = Y
Lab.Left = x + 2
x = x + f.Columns(i).Width * 0.8
temp = temp & f.Columns(i).Width * 0.8 & ";"
Next
Me.ListBox1.ColumnCount = Ncol
Me.ListBox1.ColumnWidths = temp
'-- entêtes TextBox
For i = 1 To Ncol
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(2, i)
Lab.Top = Me("textbox" & i + 1).Top - 17
Lab.Left = Me("textbox" & i + 1).Left
x = x + f.Columns(i).Width * 0.5
Next
'--
TblTmp = Rng.Value
For i = LBound(TblTmp) To UBound(TblTmp)
ReDim Preserve choix(1 To i)
For k = LBound(TblTmp) To UBound(TblTmp, 2)
choix(i) = choix(i) & TblTmp(i, k) & " * "
Next k
Next i
Me.ListBox1.List = Rng.Value
End Sub
Private Sub TextBox1_Change()
If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
If UBound(Tbl) > -1 Then
Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol)
For i = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(i), "*")
For k = 1 To Ncol: b(i + 1, k) = a(k - 1): Next k
Next i
Me.ListBox1.List = b
Me.Label1.Caption = UBound(Tbl) + 1
End If
Else
UserForm_Initialize
End If
End Sub
Private Sub ListBox1_Click()
For k = 0 To Ncol - 1
Me("TextBox" & k + 2) = Me.ListBox1.Column(k)
Next k
End Sub
Je me permets de solliciter à nouveau ce forum car je tourne en rond.
Voilà , j'ai adapté un fichier trouvé sur le site car je ne maitrise absolument pas le VBA et donc je suis bloqué sur plusieurs choses pour terminer mon fichier.
J'ai une base de données qui contient 11 colonnes mais la ListBox trouvée ne me m'affiche que 6 colonnes. J'ai également des TextBox qui n'affichent les 6 premières informations de ma ligne selectionnée.
Que dois-je modifier dans ce code ou dans les propriétés des TextBox/ListBox ?
Je vous joins également le fichier.
Merci d'avance,
Dim f, choix(), Rng, Ncol
Private Sub Label1_Click()
End Sub
Private Sub TextBox2_Change()
End Sub
Private Sub TextBox3_Change()
End Sub
Private Sub TextBox4_Change()
End Sub
Private Sub TextBox5_Change()
End Sub
Private Sub TextBox6_Change()
End Sub
Private Sub TextBox7_Change()
End Sub
Private Sub TextBox8_Change()
End Sub
Private Sub TextBox9_Change()
End Sub
Private Sub TextBox10_Change()
End Sub
Private Sub TextBox11_Change()
End Sub
Private Sub UserForm_Initialize()
Set f = Sheets("bdd")
Set Rng = f.Range("A3:F" & f.[a65000].End(xlUp).Row)
Ncol = Rng.Columns.Count
'---- entêtes ListBox
x = 15
Y = Me.ListBox1.Top - 12
For i = 1 To Ncol
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(2, i)
Lab.Top = Y
Lab.Left = x + 2
x = x + f.Columns(i).Width * 0.8
temp = temp & f.Columns(i).Width * 0.8 & ";"
Next
Me.ListBox1.ColumnCount = Ncol
Me.ListBox1.ColumnWidths = temp
'-- entêtes TextBox
For i = 1 To Ncol
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(2, i)
Lab.Top = Me("textbox" & i + 1).Top - 17
Lab.Left = Me("textbox" & i + 1).Left
x = x + f.Columns(i).Width * 0.5
Next
'--
TblTmp = Rng.Value
For i = LBound(TblTmp) To UBound(TblTmp)
ReDim Preserve choix(1 To i)
For k = LBound(TblTmp) To UBound(TblTmp, 2)
choix(i) = choix(i) & TblTmp(i, k) & " * "
Next k
Next i
Me.ListBox1.List = Rng.Value
End Sub
Private Sub TextBox1_Change()
If Me.TextBox1 <> "" Then
mots = Split(Trim(Me.TextBox1), " ")
Tbl = choix
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
If UBound(Tbl) > -1 Then
Dim b(): ReDim b(1 To UBound(Tbl) + 1, 1 To Ncol)
For i = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(i), "*")
For k = 1 To Ncol: b(i + 1, k) = a(k - 1): Next k
Next i
Me.ListBox1.List = b
Me.Label1.Caption = UBound(Tbl) + 1
End If
Else
UserForm_Initialize
End If
End Sub
Private Sub ListBox1_Click()
For k = 0 To Ncol - 1
Me("TextBox" & k + 2) = Me.ListBox1.Column(k)
Next k
End Sub