Selection dans une zone de liste

EsialMickey Messages postés 8 Date d'inscription mardi 6 juillet 2004 Statut Membre Dernière intervention 2 août 2004 - 6 juil. 2004 à 11:45
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 6 juil. 2004 à 12:30
Bonjour a tous,
je cherche le moyen de selectionner une ligne de ma zone de liste dont le premier élément est connu :
La liste contient pour chaque ligne :"idPersonne" et "nom"
et j'aimerai selectionner la ligne qui a pour idPersonne 8 par exemple.
Je n'ai pas encore trouvé comment faire
merci pour vos suggestions

3 réponses

cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
6 juil. 2004 à 11:52
c koi comme controle....ListBox...ListView.....???

It@li@
0
ldx Messages postés 23 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 3 mai 2005
6 juil. 2004 à 12:27
LDX

s'il s'agit dune listbox, tu peux effectuer une recherche "exacte" ou approximative comme suit :

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'*** Constantes permettant de rechercher un élément dans une Liste ***
Private Const LB_FINDSTRING = &H18F
Private Const LB_FINDSTRINGEXACT = &H1A2

puis dans ta proc ...

dim NumItemListe as long

NumItemListe = (SendMessage(Nom de ta Listbox.hwnd, LB_FINDSTRINGEXACT, -1, ByVal Chaîne contenant ce que tu recherches))

NumItemListe te donnera si...

- tu as choisi LB_FINDSTRING : le N° d'item de la première occurence trouvée

- tu as choisi LB_FINDSTRINGEXACT : Le N° Item "exact" de l'objet recherché

Si tu veux faire la même chose avec un combobox il te faut les constantes suivantes :

Public Const CB_FINDSTRING = &H14C
Public Const CB_FINDSTRINGEXACT = &H158
...

(va voir dans WIN32API, les constantes LB_ et CB_ ...) tu auras plein d'autres possibilités (ajout, suppression, ...)

Portes toi bien
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 juil. 2004 à 12:30
Sur une listbox, on peut faire cela :
Dim i as long
With ListBox1
  For i = 0 to .ListCount-1
    If .list(i) like "8 *" Then 
      .ListIndex = i
      Exit for
    End If
  Next
End with

Je part du postulat que ton IdPersonne et le Nom sont séparé par un espace
Christophe R.
0
Rejoignez-nous