XL 2019 Saisie prédictive dans un textbox associé à une listbox

JFLulu

XLDnaute Nouveau
Bonjour à toutes et tous,
Tout d'abord je précise que je suis NUL en programmation ou du moins pas très doué ;) .
Ma question est la suivante: Un control listbox (ListeClient) faisant référence à un feuille Excel(TableClient).
La liste comprend 1250 noms.
je souhaite donc avec la saisie dans un textbox1 "filtré" (je ne sais pas si le terme est adéquate ) rechercher le nom et l'affiché dans la listbox comme un peu google quand je cherche une occurrence.
j'ai trouver le code suivant (voir fichier joint) mais j'ai une erreur "Erreur de compilation , membre de méthode ou de données introuvable", c'est je pense au niveau de
" .List(.Count - 1, 2) = C.Row
Merci d'avance pour votre aide
Cordialement JF
 

Pièces jointes

  • Liste clients.xlsm
    17.3 KB · Affichages: 12
Solution
cf PJ

VB:
Option Compare Text
Dim TblBD()

Private Sub UserForm_Initialize()
  TblBD = [client].Value
  Me.ListClient.List = TblBD
  Me.ListClient.ColumnCount = 2
  Me.ListClient.ColumnWidths = "30;100"
End Sub

Private Sub TxtRecherche_Change()
  ColRecherche = 2
  clé = "*" & Me.TxtRecherche & "*": n = 0
  Dim Tbl()
  For i = 1 To UBound(TblBD)
    If TblBD(i, ColRecherche) Like clé Then
        n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n)
        For k = 1 To UBound(TblBD, 2): Tbl(k, n) = TblBD(i, k): Next k
     End If
  Next i
  If n > 0 Then Me.ListClient.Column = Tbl Else Me.ListClient.Clear
End Sub

Boisgontier

JFLulu

XLDnaute Nouveau
Merci Boisgontier,
mais je n'utilise pas de combobox pour cette petite application. je souhaite comprendre l'erreur qui s'affiche pour ne pas la reproduire. pour cette petite application j'utilise des userforms la feuille excel étant invisible à l'utilisateur.
Cordialement
Jf
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
cf PJ

VB:
Option Compare Text
Dim TblBD()

Private Sub UserForm_Initialize()
  TblBD = [client].Value
  Me.ListClient.List = TblBD
  Me.ListClient.ColumnCount = 2
  Me.ListClient.ColumnWidths = "30;100"
End Sub

Private Sub TxtRecherche_Change()
  ColRecherche = 2
  clé = "*" & Me.TxtRecherche & "*": n = 0
  Dim Tbl()
  For i = 1 To UBound(TblBD)
    If TblBD(i, ColRecherche) Like clé Then
        n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n)
        For k = 1 To UBound(TblBD, 2): Tbl(k, n) = TblBD(i, k): Next k
     End If
  Next i
  If n > 0 Then Me.ListClient.Column = Tbl Else Me.ListClient.Clear
End Sub

Boisgontier
 

Pièces jointes

  • Copie de Liste clients-1.xlsm
    16.8 KB · Affichages: 20

MickaëlLEVIONNOIS

XLDnaute Nouveau
Bonjour,

Je suis intéressé par ce programme pour alimenter des textbox qui devront reprendre une liste de l'ensemble des communes française avec leur code postal.

Je suis donc parti de la base de ce code et l'ai "un peu" adapté pour alimenter directement le texbox à partir de la listbox.
Je fais une recherche sur textbox puis clic sur la commune voulue sur la listbox ce qui me renseigne le textbox correctement.
Par contre quand je reviens sur le textbox pour effacer l'entrée, j'ai une erreur que je n'explique pas.

Je joints le fichier.

Merci de votre retour.
 

Pièces jointes

  • Liste clients-1.xlsm
    32.1 KB · Affichages: 9

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16