comment recuper valeur dans ListView

ThomasR

XLDnaute Occasionnel
Bonjour le Forum,

Je cherche un moyen de recup des valeurs dans Listview.

mon problème est que je ne sais pas comment dire la 2eme colonne??

car l'additem utilisé pour le remplir (la listview) ne m'aide pas à trouver .

Code:
For i = 2 To Sheets(13).Range('D6000').End(xlUp).Row
x = x + 1

    
    
    
     .ListItems.Add , , Sheets(13).Range('D' & i).Text
     .ListItems(x).ListSubItems.Add , , Sheets(13).Range('C' & i).Text
     .ListItems(x).ListSubItems.Add , , Sheets(13).Range('B' & i).Text
     .ListItems(x).ListSubItems.Add , , Sheets(13).Range('A' & i).Text

je ne sais pas comment si je clic sur une ligne récup dans un msgbox la valeur de la 2 colonnes ??


D'avance merci
Thomas®
 

ThomasR

XLDnaute Occasionnel
re, je me rend compte que ma question est nul faire une boucle n'est pas si génant que ca et je ne pense pas qu'il y ai d'autres facon de faire.

Là j'ai une question plus pertinante. (enfin pour moi :S )

si mes entête de colonne ont un nom

With ListView1
With .ColumnHeaders
.Clear
.Add , , Sheets(13).Range('D1').Text, 134
.Add , , Sheets(13).Range('C1').Text, 48
.Add , , Sheets(13).Range('B1').Text, 48
.Add , , Sheets(13).Range('A1').Text, 48
End With

puis je me servir de ce nom comme d'index.

car en fait ma listView n'est pas alimenté par des tableaux identique selon le Sheets

exemple si j'alimente mon listview depuis la page1

A1 = nom
B1 = adresse
C1 = ville
D1 = mois

si je suis dans la page 2

A1 = mois
B1 = nom
C1 = ville
D1 = adresse


Moi ce que j'essai de faire est que l'orsque je clic sur une ligne de mon listview j'affiche plus d'info sur la ligne en question.
pour aller chercher ses info j'ai besion du nom et du mois.

le probleme est qu'il ne sont pas toujours avec le même index

pour autant si je peux dire je veux la valeur de la ligne selectionné dont la colonne à pour nom Mois

D'avance merci.

PS : je cherche pour ma culture perso car j'ai deja pensé à une solution de contournement dans mon cas qui est de dire selon la feuille selectionné l'index voulu est ...

mais je suis sur qu'il doit y avoir une facon de filtrer en fonction de ColumnHeaders
 

ThomasR

XLDnaute Occasionnel
re bonjour le forum,

avant de partir je n'y arrive toujours pas j'ai pensé qu'avec un code comme ca ca fonctionnerait mais ca marche po

Code:
Private Sub ListView1_DblClick()
Dim i As Byte
For i = 1 To ListView1.ListSubItems.Count
If ListView1.ColumnHeaders(i) = 'Mois' Then
MsgBox ListView1.SelectedItem.ListSubItems(i)
End If
Next i


End Sub

erreur :pinch: , j'ai remplacé le For i = 1 To ListView1.ListSubItems.Count

par For i = 1 To ListView1.ColumnHeaders.Count sans conviction idem

Bon week end à tous
 

ThomasR

XLDnaute Occasionnel
Re bonjour le forum,

j'ai trouvé la solution.

Private Sub ListView1_DblClick()
Dim i As Byte
For i = 1 To ListView1.SelectedItem.ListSubItems.Count
If ListView1.ColumnHeaders(i+1) = 'Mois' Then
MsgBox ListView1.SelectedItem.ListSubItems(i)
End If
Next i


End Sub

J'ai eu des problèmes car le LIstview utilise des index different pour les columnheaders des list qu'il contien.

maintenant que j'ai trouvé je comprend la logique mais pour un debutant comme moi cela n'a pas été evident a comprendre.

en fait le entêtes de colonne ont un index qui commence à 1 des la 1er colonne donc 1,2,....

la différence d'index est que la listview a une architecture différente de la listbox car comme je l'ai montré au debut de ce poste l'additem que l'on utilise pour remplir la list montre la presence de listitem (ce qui est sous l'index 1 de columnheaders) puis de listsubitems qui commence à la 2eme colonne ( sous l'index 2 de columnheaders) donc l'index de la columnheaders pour listview1.selecteditem.listsubitems(2) est 3 .

Voila si cela peut servir à quelqu'un.
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS