Microsoft 365 ListBox TextBox

ERN

XLDnaute Junior
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
 

Pièces jointes

  • ERN Bidouille.xls
    105.5 KB · Affichages: 22

ERN

XLDnaute Junior
Bonjour ChTi160 et merci beaucoup pour cette aide.
J'en profite pour poser une autre question. Je dois ajouter deux TextBox dans lesquelles je souhaite afficher dans la première, la valeur en rapport avec les données de l'onglet IndBT et la date du jour.
Dans la deuxième, je dois trouver un résultat qui est calculée automatiquement lors de la sélection d'un article dans la ListBox. Celle-ci doit calculer : (IndBT en date du devis x le pris untitaire)/IndBT du jour (plutôt le mois actuel)
En prenant l’exemple de l'image jointe, ça donnerait (112.2x21)/111.5
ce qui donnerait dans la case 21.13

Est-ce possible ? En esperant que ma demande est explicite.
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    138.3 KB · Affichages: 10

Statistiques des forums

Discussions
293 048
Messages
1 928 125
Membres
183 853
dernier inscrit
ali1987