TextBox via ListBox
Bonjour le forum,
Voilà, j'ai encore un problème
J'ai une ListBox et une TextBox. La TextBox me sert de recherche dans la ListBox. Quand je fais une recherche avec uniquement le nom du fournisseur et que je clic dessus, j'ai d'autres TextBox qui se remplissent selon une base de donné. Mais quand je désire faire une recherche soit selon le nom soit leur N°, quand je clic sur la ligne qui m’intéresse dans la ListBox, rien ne se passe.
Comment faire pour quand je recherche un fournisseur soit avec leur nom, soit avec leur numéro, mes TextBox ce remplissent selon ma feuille BD.
D'avance merci.
C'est nickel !!
Mais peux-tu m'expliquer stp le changement que tu y as apporté ?
Le seul truc que je vois c'est :
choix(i) = choix(i) & TblTmp(i, k) & "*"au lieu de :
choix(i) = choix(i) & TblTmp(i, k) & " * "C'est juste ça ?
Bonjour,
Option Compare Text
Dim nomTableau, TblBD(), nbCol
Private Sub UserForm_Initialize()
nomTableau = "Tableau1"
nbCol = Range(nomTableau).Columns.Count
TblBD = Range(nomTableau).Resize(, nbCol + 1).Value ' Array: + rapide
For i = 1 To UBound(TblBD): TblBD(i, nbCol + 1) = i: Next i ' No enregistrement
End Sub
Private Sub TextBox1_Change()
ColRecherche = 1
ColRecherche2 = 2
clé = Me.TextBox1 & "*": n = 0
Dim Tbl()
For i = 1 To UBound(TblBD)
If TblBD(i, ColRecherche) Like clé Or TblBD(i, ColRecherche2) Like clé Then
n = n + 1: ReDim Preserve Tbl(1 To 3, 1 To n)
For k = 1 To 2: Tbl(k, n) = TblBD(i, k): Next k
Tbl(3, n) = TblBD(i, nbCol + 1)
End If
Next i
If n > 0 Then Me.Listbox1.Column = Tbl Else Me.Listbox1.Clear
End Sub
Private Sub Listbox1_Click()
ligneEnreg = Me.Listbox1.Column(2)
For k = 1 To nbCol
Me("textbox" & k + 1) = TblBD(ligneEnreg, k)
Next k
End SubBoisgontier
Extra, merci beaucoup gmb et merci aussi à Boisgontierjacques pour ta solution qui est pas mal du tous
Version à jour,
Option Compare Text
Dim nomTableau, TblBD(), nbCol
Private Sub UserForm_Initialize()
nomTableau = "Tableau1"
nbCol = Range(nomTableau).Columns.Count
TblBD = Range(nomTableau).Resize(, nbCol + 1).Value ' Array: + rapide
For i = 1 To UBound(TblBD): TblBD(i, nbCol + 1) = i: Next i ' No enregistrement
LabelsTextBox
TextBoxRecherche_Change
End Sub
Private Sub TextBoxRecherche_Change()
ColRecherche = 1
ColRecherche2 = 2
clé = Me.TextBoxRecherche & "*": n = 0
Dim Tbl()
For i = 1 To UBound(TblBD)
If TblBD(i, ColRecherche) Like clé Or TblBD(i, ColRecherche2) Like clé Then
n = n + 1: ReDim Preserve Tbl(1 To 3, 1 To n)
For k = 1 To 2: Tbl(k, n) = TblBD(i, k): Next k
Tbl(3, n) = TblBD(i, nbCol + 1)
End If
Next i
If n > 0 Then Me.Listbox1.Column = Tbl Else Me.Listbox1.Clear
End Sub
Private Sub Listbox1_Click()
ligneEnreg = Me.Listbox1.Column(2)
Me.Enreg = ligneEnreg
For k = 1 To nbCol
Me("textbox" & k) = TblBD(ligneEnreg, k)
Next k
End Sub
Sub LabelsTextBox()
For c = 1 To nbCol
Me("textbox" & c).Width = Range(nomTableau).Columns(c).Width * 1.3
tmp = Range(nomTableau).Offset(-1).Item(1, c)
Me("label" & c).Caption = tmp
lg = Len(tmp): If Len(tmp) > 20 Then lg = 20
Me("label" & c).Width = lg * 8
Next
End Sub
Sub raz()
For k = 1 To nbCol
Me("textBox" & k) = ""
Next k
Me.TextBox1.SetFocus
End Sub
Private Sub B_sup_Click()
If Me.Enreg <> "" Then
If MsgBox("Etes vous sûr de supprimer " & Me.TextBox1 & "?", vbYesNo) = vbYes Then
Range(nomTableau).Rows(Me.Enreg).Delete
Me.Enreg = ""
UserForm_Initialize
raz
Me.Enreg = Range(nomTableau).Rows.Count + 1
End If
End If
End Sub
Private Sub B_ajout_Click()
raz
Me.Enreg = Range(nomTableau).Rows.Count + 1
End Sub
Private Sub B_validation_Click()
Enreg = Me.Enreg
For c = 1 To nbCol
If Not Range(nomTableau).Item(Enreg, c).HasFormula Then
tmp = Me("textbox" & c)
If IsNumeric(Replace(tmp, ".", ",")) And InStr(tmp, " ") = 0 Then
tmp = Replace(tmp, ".", ",")
Range(nomTableau).Item(Enreg, c) = CDbl(tmp)
Else
If IsDate(tmp) Then
Range(nomTableau).Item(Enreg, c) = CDate(tmp)
Else
Range(nomTableau).Item(Enreg, c) = tmp
End If
End If
Else
Range(nomTableau).Item(Enreg - 1, c).Copy
Range(nomTableau).Item(Enreg, c).PasteSpecial Paste:=xlPasteFormats
End If
Next c
UserForm_Initialize
raz
End SubBoisgontier
Salut Boisgontierjacques,
Tu as lu dans mes pensées
ça, je sais faire, mais tu passes pas des chemins que je ne connais pas. Je vais étudier ta solution.
Encore merci.