fluquet
Messages postés3Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention19 mai 2007
-
18 mai 2007 à 18:24
fluquet
Messages postés3Date d'inscriptionsamedi 5 juin 2004StatutMembreDernière intervention19 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
A voir également:
Vba listbox selected item
Vba listbox selected item index - Meilleures réponses
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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.