Recherche Combobox et listebox

Bonjour,

je voudrais que lorsque je clique sur formulaire et bouton recherche/modification

de mon usf2

lorsque j'effectue une recherche de statue( en cours-terminé-livré) automatique il me transfert les client correspondant au statue choisie dans ma listbox)

une fois cela fait je choisis un client dans la listbox et je fais affiché ,je dois donc avoir toute les infos via mon usf , mais le soucis que je rencontre je vois les infos mais il ne correspondent pas au client choisis

Exp:je choisis le statue en cous puis dans la listbox je choisie dupond9 puis affichée il me donne les infos de dupond1

J'ai du me trompé dans le code mais je vois pas ou donc aide sera la bienvenu

Cordialement Kira

Bonjour,

Ta ListBox ne contient que des éléments de la liste initiale, extrait sur un critère, tu ne peux donc déduire un numéro de ligne de la propriété ListIndex. Il te faut la rechercher...

Cordialement.

Re MFerrand et le reste du forum

Donc comment puis-je faire car je suis bloqué à se niveau

Bonjour,

Te dire que ton code ne donne pas vraiment envie de s'y pencher ne devrait pas être une surprise : pas d'indentation ou aléatoire, pas de renommage efficace des contrôles, pas d'utilisation de boucles pour clarifier, mélange de type de boucles quand il y en a d'utilisées, subsistance de select... etc.

(Et si tu pouvais normaliser ton 'statut'... certes les 'statue' (de sel, de marbre, de Milo, ... ?) nous entraîne aillleurs, mais... )

Je ne reprends que la partie en cause, en espérant que tu en tireras profit pour la suite.

L'initialize :

Private Sub UserForm_Initialize()
    Dim statut
    statut = Split("En cours;Terminé;Livré;Classé", ";")
    ComboBox1.List = statut
    ComboBox2.List = statut
End Sub

Un peu plus simple... !

Le Change de ComboBox1 :

Private Sub ComboBox1_Change()
    Dim i As Long, Var As Long, statut As String
    ListBox1.Clear
    If ComboBox1.ListIndex = -1 Then Exit Sub
    statut = ComboBox1.Value
    With Sheets("données")
        Var = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To Var
            If .Range("P" & i) = statut Then ListBox1.AddItem .Range("B" & i)
        Next i
    End With
End Sub

A comparer avec la version initiale !

Le clic sur le bouton Affiché :

Private Sub CmbAffiché_Click()
    Dim no_ligne As Long, i As Long, client As String
    If ListBox1.ListIndex = -1 Then Exit Sub
    client = ListBox1.Value
    With Sheets("données")
        On Error GoTo nontrouvé
        no_ligne = WorksheetFunction.Match(client, .Columns(2), 0)
        For i = 1 To 18
            Controls("TextBox" & i).Value = .Cells(no_ligne, i - (i > 15))
        Next i
        ComboBox2.Value = .Cells(no_ligne, 16)
    End With
    Exit Sub
nontrouvé:
    MsgBox "Le client n'a pas été trouvé. Vérifier.", vbInformation, "Erreur"
End Sub

Simplification aussi, tout en restant dans ta méthode...

Il aurait été encore plus simple de lancer cette procédure à partir d'un changement de sélection dans ListBox1, et supprimer ce bouton...

Cordialement.

Bonjour,MFerrand

Merci pour ton temps et tes infos,

Je regarde cela de plus près et je tien informé

Cordialement Kira

Rechercher des sujets similaires à "recherche combobox listebox"