ListBox Sélection toujours en première position [Résolu]

Signaler
Messages postés
3
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
19 mai 2007
-
Messages postés
3
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
19 mai 2007
-
Bonjour,

grâce à une textbox, l'utilisateur fait une recherche dans une longue liste qui positionne automatiquement la correspondance avec les premières lettres.

  For i = 0 To lstTaxon.ListCount - 1
    If Left(lstTaxon.Column(0, i), Len(txtRechercheTaxon.Text)) = txtRechercheTaxon.Text Then
      lstTaxon.Selected(i) = True
      isFind = True
      Exit For
    End If
  Next

Mon souhait serait que la ligne sélectionnée dans la listbox soit toujours en première position des items visibles. (on en modifie pas l'odre des items).

Avez-vous une idée ?

Merci d'avance

5 réponses

Messages postés
3
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
19 mai 2007

Merci pour cette idée.


Je vais mettre en pratique.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Bonjour,
intéresse-toi à la propriété topindex d'une listbox
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Bon (heure du pastis)

Regarde, comprends et adapte à ton cas.

Private Sub Form_Activate()
   For I = 0 To 30
    List1.AddItem "a" & I
   Next
End Sub


Private Sub List1_Click()
  List1.TopIndex = List1.ListIndex
End Sub

Il est maintenant bien clair que ton article sélectionné n'ira tout en haut que si possible (c'est à dire que si son index n'est pas si élevé que, s'en allant en haut, la chose serait impossible puisque le dernier article ne peut aller plus haut que le bas de ta listbox, bien évidemment.. hein...
Messages postés
3
Date d'inscription
samedi 5 juin 2004
Statut
Membre
Dernière intervention
19 mai 2007

Oui effectivement, mais la difficulté est que je suis sous VBA Access et cette propriété est absente...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
23
Hé bé ! ce VBA !

Bon pas de topindex, alors (zut).

Tu pourrais t'en sortir autrement, avec le scroll, mais l'acrobatie serait trop importante et alourdissante ...

Si tu tiens à ton truc, alors, il va te falloir dans ce cas changer de contrôle et passer par une listview en lieu et place de ta listbox.

Pourquoi ?
1) parce que la listview possède une methode nommée InsureVisible dont la syntaxe d'utilisation est la suivante :
ListView1.listintems(i).EnsureVisible où i est l'index d'un article

Comment obtenir le i pour l'item sélectionné ? ===>> ainsi ====>> : ListView1.SelectedItem

2) parce que tant la listview que la méthode EnsureVisible sont gérée par VBA

Quel est le rôle de cette méthode ? : elle entraîne un scroll de la listview jusqu'à ce que l'article d'index i (sélectionné, donc... comme montré au dessus) soit affiché dans la zone visible de la listview.

Voilà ce que je te conseille donc, en l'absence de la propriété Topindex pour une listbox sous VBA.