Urgent : VBA - Problème de récupération des données dans une liste à sélection m

Résolu
lepgwen
Messages postés
19
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
11 mars 2009
- 13 juil. 2005 à 12:35
lepgwen
Messages postés
19
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
11 mars 2009
- 13 juil. 2005 à 14:59
Salut !

J'ai un problème : j'ai une liste dans laquelle se trouve une liste de tous les salaries. Je voudrais pouvoir sélectionner plusieurs salaries pour afficher les données qui leur correspondent. Pour cela, j'ai donc fait une liste à sélection multiple.

Le problème c'est que quand je valide, je ne parviens à récupérer qu'un seule enregistrement : le dernier sélectionné.

Voila mon code, en espérant avoir été assez clair.

'pour chaque ligne de la liste
With LstSalarie
For i = 0 To (.ListCount - 1)
If .Selected(i) = True Then
Call AfficheParSalarie(LstSalarie.List(LstSalarie.ListIndex, 2))
End If
Next
End With

Merci beaucoup pour l'aide que vous m'apporterez !

4 réponses

cs_phil23
Messages postés
79
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
14 juillet 2005
1
13 juil. 2005 à 14:56
Il ne faut pas utiliser la propriété ListIndex dans une liste multi select car elle renvoie l'index de la ligne ayant le focus, que celle-ci soit ou non actuellement sélectionnée.

Regarde cet exemple:

Option Explicit
Option Base 0


Private Sub UserForm_Initialize()


Dim tabSalaries() As String


ReDim tabSalaries(2, 1)


tabSalaries(0, 0) = "Philippe"
tabSalaries(0, 1) = "4580"

tabSalaries(1, 0) = "Claude"
tabSalaries(1, 1) = "2610"

tabSalaries(2, 0) = "Benoît"
tabSalaries(2, 1) = "4689"

LstSalarie.ColumnCount = 2
LstSalarie.List() = tabSalaries

End Sub


Private Sub CommandButton1_Click()


Dim i As Long


With LstSalarie
For i = 0 To (.ListCount - 1)
If .Selected(i) = True Then
MsgBox "Nom: " & LstSalarie.Column(0, i) & " Numéro: " & LstSalarie.Column(1, i)
End If
Next
End With


End Sub
3
PtitGrumo
Messages postés
205
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
28 novembre 2005
2
13 juil. 2005 à 13:57
Salut!

ne serai ce pas ceci
Call AfficheParSalarie(LstSalarie.List( i , 2))

a la place de cela
Call AfficheParSalarie(LstSalarie.List(LstSalarie.ListIndex, 2))

?

Tien moi au courant

++

PtitGrumo
0
lepgwen
Messages postés
19
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
11 mars 2009

13 juil. 2005 à 14:00
Salut !
Merci de ta réponse mais non ca marche pas j'ai toujours le nom de la dernière personne sélectionnée
Merci qd meme
0
lepgwen
Messages postés
19
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
11 mars 2009

13 juil. 2005 à 14:59
Super ca marche
Merci beaucoup !!!
0