ListBox Sélection toujours en première position

Résolu
fluquet Messages postés 3 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 19 mai 2007 - 18 mai 2007 à 18:24
fluquet Messages postés 3 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 19 mai 2007 - 19 mai 2007 à 10:22
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

fluquet Messages postés 3 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 19 mai 2007
19 mai 2007 à 10:22
Merci pour cette idée.


Je vais mettre en pratique.
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 mai 2007 à 18:35
Bonjour,
intéresse-toi à la propriété topindex d'une listbox
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 mai 2007 à 18:58
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...
0
fluquet Messages postés 3 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 19 mai 2007
18 mai 2007 à 19:18
Oui effectivement, mais la difficulté est que je suis sous VBA Access et cette propriété est absente...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
18 mai 2007 à 20:03
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.
0