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
Rejoignez-nous