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 SubUn 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 SubA 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 SubSimplification 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