Affichage auto d'aprés listBox

S

serge

Guest
Bonjour @ tous & Toutes
j'ai un petit souci :((
Voila
J'ai une base de données qui correspond à ma Bibliotyèque:
Colonne A = N° du Livre
Colonne B = Code du Livre
Colonne C = Titre du Livre
Colonne D = Auteur du Livre
Ect...
Dans mon USF,
Je saisi dans un TexBox un mot-clé et dans une ListBox, s'affiche
tous les titres ou ce mot figure. Ensuite, si je selectionne un titre dans ma LIstBox, toutes les Infos le concernant apparaissent dans des Labels (N°, Code, Titre ect...). Jusqu'ici tout va bien. Mon Problème est que si des livres ont le même titre, quand je clique dans ma listBox sur un de ces titres, il ne m'affiche que les infos du premier livre qu'il trouve portant ce titre
Je ne sais pas si c'est ma procédure qui n'est pas correcte
voila la procédure que j'utilise
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub LBTITRE_Click()
Dim Zone As Range
Dim Cellule As Object

''''''''''''''Zone est la plage de données ou ce trouve codes et titres des livres

Set Zone = Feuil1.Range("b2:" & Feuil1.Range("c65536").End(xlUp).Address)
For Each Cellule In Zone

''''''''LBTITRE est la LIstBox ou ce trouve les titres

If Cellule.Value = LBTITRE Then
titre.Caption = Cellule.Offset(0, 0)'Titre du livre
Aut1.Caption = Cellule.Offset(0, 1)'Auteur du livre
Cod1.Caption = Cellule.Offset(0, -1)'Code du livre
num.Value = Cellule.Offset(0, -2)'Numéro du livre
End If
Next
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

j'espère avoir été suffisament clair
MERCI @ VOUS
SERGE
 
R

Robert

Guest
Salut Serge, salut le forum,

Ton problème vient du fait que quand un titre est trouvé, la boucle continue et donc en cas de doublons, seul le dernier de la liste te sera affiché. Normalement un Exit For permet de se sortir de ce pas. Mais dans ton cas, cela permettrait d'afficher le premier de la liste mais comment afficher le suivant ? Puisque la boucle repart du début... à chaque click.
Comme je n'ai pas trouver la solution je te propose une autre méthode. Si tu remplaçais les Label par des ComboBox. À chaque titre trouvé tu ferais un AddItem sur chaque ComboBox et à la fin de la boucle tu verrais de suite si il y a plusieurs titres identiques : imaginons que les ComboBox soient nomméee comme les Label, cela donnerait :

If Cellule.Value = LBTITRE Then
titre.Additem Cellule.Offset(0, 0)'Titre du livre
Aut1.AddItem Cellule.Offset(0, 1)'Auteur du livre
Cod1.AddItem Cellule.Offset(0, -1)'Code du livre
num.AddItem = Cellule.Offset(0, -2)'Numéro du livre
End If
Next

J'espère que cela pourra t'aider.

À plus,

Robert
 
S

serge

Guest
MERCI ROBERT
mais je n'arrive pas a faire fonctionnée ta procédure :((
Entre temps j'ai trouvé un truc qui parait fonctionner

J'ai créé une 2° listeBox(LBTITRE2) invisible dans laquelle s'affiche les n° correspondants aux titres affichés dans la ListeBox(LBTITRE)
Puis je les ai reliés ensemble

LBTITRE2.ListIndex = LBTITRE.ListIndex
num.Value = LBTITRE2.Value

num est un ComboBox ou s'affiche le numéro du titre sélectionné en LBTITRE

Puis j'ai inséré le code suivant dans le ComboBox"num"

i = num.ListIndex

titre = Feuil1.Cells(i + 2, 3).Value
Cod1 = Feuil1.Cells(i + 2, 2).Value
Aut1 = Feuil1.Cells(i + 2, 4).Value

Enfin Voila. Je sais c'est un peu tordu mais apparament cela fonctionne
Je test et si cela fonctionne toujours je garde. Sauf s'il existe quelque chose de plus simple.

EN TOUT CAS MERCI A TOI POUR L'INTERET QUE TU A PORTE A MON PROBLEME ET J'AURAI CERTAINEMENT BESOIN DE TES LUMIERES CAR JE N'AI PAS FINI ET TOMBERAI TRES CERTAINEMENT SUR PLUSIEURS OS ENCORE
MERCI ROBERT BYE @ +
SERGE
 
R

Robert

Guest
Re Serge, salut le forum,

Comme j'avais rarement travaillé sur une ComboBox multi-colonnes je me suis servi de ton exemple pour approfondir un peu. Du coup je me permets de te proposer ce petit exemple.

À plus,

Robert
 

Pièces jointes

  • Serge.zip
    13.6 KB · Affichages: 22

Discussions similaires