Tableau et recherche dans Listbox

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

Après avoir cherché tout le week-end mais en arrivant seulement à un résultat partiel, je me tourne vers vous.

J'aimerais sélectionner une ligne particulière dans une listbox, et obtenir l'adresse ou la référence de la ligne.
J'y arrive, mais seulement pour une occurrence.

Le code concerne la Private Sub ListBox1_Click()

La procédure est expliquée dans le fichier.

Merci de votre aide.

PS: je sais qu'une partie du code de mon projet est une usine à gaz, mais je n'ai pas encore trouvé le moyen d'optimiser.
Mais cela n'influe pas sur la recherche de ce fil.
 

Pièces jointes

Bonjour,

Je ne suis pas certain de bien saisir car d'après ce que je comprends la réponse serait simplement ListBox1.ListIndex.


[edit]Bon ben c'est bien ce que je disais : j'ai pô compris la question. 🙁 [/edit]
 
Dernière édition:
Bonsoir Marcel,

Si tu suis l'exemple que j'ai donné, il y a 3 occurrences. Or Listbox1.Listindex va me donner une valeur selon le numéro de l'index que j'aurai défini.
Par exemple Listindex = 3.
Mais moi j'ai besoin de trouver la ligne sur laquelle je clique. J'y arrive avec
[Donnees].Find(Me.ListBox1.List(Me.ListBox1.ListIndex, 3), Lookat:=xlWhole), mais la macro s'arrête sur la 1ère occurence et ne voit pas le reste de la colonne.
J'ai tenté Find Next mais sans réussir.

Voici le résultat souhaité.
Merci

upload_2017-1-22_23-27-26.png
 
Oui, donc c'est bien ce que j'avais fini par comprendre : tu veux retrouver dans ton tableau la ligne correspondant à celle sur laquelle tu as cliqué dans ta ListBox.

Tu filtres ton tableau et en suite tu descends d'autant de lignes que nécessaire, peut-être.
 
Ce que j'entends par-là c'est que tu peux peut-être filtrer ton tableau avec les mêmes critères que ceux qui t'ont permis de remplir ta ListBox, et il ne te resterait donc plus qu'à aller à la ligne correspondant au ListIndex par exemple en partant du titre et en descendant de "ListIndex + 1" lignes.
 
Pas besoin de clic. Tu peux par macro filtrer ton tableau.
Il me semblait qu'en suite on pouvait, aussi par macro, descendre d'une ligne, mais je ne retrouve pas comment faire et du coup je n'en suis plus vraiment sûr... (et trop mal en point pour chercher)
 
je n'en suis plus vraiment sûr... (et trop mal en point pour chercher)
Je vais chercher de mon coté, mais je ne suis pas sûr d'avoir compris la logique de la procédure.
Sinon attendre un peu.... et repose toi bien surtout.

L'autre solution est celle de l'index en effet, sauf qu'il va falloir réécrire tout le code, ce qui n'est pas aisé...
Merci et à bientôt. 🙂
 
Ce n'est pas très joli, ça ressemble plus à du bidouillage qu'à autre chose, mais tu peux essayer ceci :

VB:
Private Sub ListBox1_Click()
Dim k As Single, valeur As Range, f As Worksheet
Dim i As Long, MaLigne As Long
    [Donnees].Find(Me.ListBox1.List(Me.ListBox1.ListIndex, 0), Lookat:=xlWhole).Select
    For i = 1 To ListBox1.ListIndex
        [Donnees].Find(Me.ListBox1.List(Me.ListBox1.ListIndex, 0), after:=ActiveCell, Lookat:=xlWhole).Select
    Next i
    MaLigne = Selection.Row
    On Error Resume Next
    Set f = Sheets(2)
    If OptionButton1 Then
        Set valeur = f.Range("B:B").Find(Me.ComboBox1, Lookat:=xlWhole)
    Else
        Set valeur = f.Range("B:B").Find(Me.ListBox1.Column(1), Lookat:=xlWhole)
    End If
    For k = 6 To 12
        Me("Label" & k) = valeur.Offset(, k - 6)
    Next k
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour