Noose123
Messages postés12Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention18 août 2009
-
10 déc. 2008 à 13:34
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
10 déc. 2008 à 16:58
Bonjour,
J'ai un tableau dans une feuille excel, et j'aimerais bien pouvoir afficher le contenu de ce tableau dans une ListView.
Est-ce que quelqu'un peut me dire comment je dois faire ?
j'ai une boucle FOR qui parcourt le tableau jusqu'à la dernière ligne, et c à la fin de cette boucle que je veux transferer les donnees du classeur vers ma listview
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009 10 déc. 2008 à 14:25
Ok..
Je suis pas pro en vba mais une idée comme ca en passant, pourquoi ne pas selectionner les données et les remettre dans une feuille d'un classeur excel???
Ca contourne le problème car la j'ai pas d'idée...
Function
SetListViewValue(
ByRef
oLV
As
ListView,
ByVal
lRow
As Long
, lCol
As Long
, vValue
As Variant
)
As Boolean
' oLV : la
ListView
' lRow : numéro de ligne.
commence 0 = header
' lCol : numéro de
colonne. commence à 1
SetListViewValue = False
With oLV
If (lRow >= 0) And (lCol >= 1) Then
If (lRow <= .ListItems.Count)
And (lCol <=
.ColumnHeaders.Count) Then
If lRow = 0 Then 'header
.ColumnHeaders.Item(lCol).Text = CStr(vValue)
ElseIf lCol = 1 Then '1ère
colonne
.ListItems(lRow).Text
= CStr(vValue)
Else 'les autres
colonnes
.ListItems(lRow).SubItems(lCol - 1) = CStr(vValue)
End If
SetListViewValue = True
End If
End If
End With
End Function
Private Sub
AddColumn(LV
As
ListView, oCol
As
Collection, Header
As String
, Width
As Long
,
Optional
Color1
As
OLE_COLOR = vbBlack,
Optional
Color2
As
OLE_COLOR =
vbRed)
Dim Litem As ListItem, i As Integer, j As Integer, lCol As OLE_COLOR
i = LV.ColumnHeaders.Count
If i = 0 Then
' caption/name
LV.ColumnHeaders.Add 1, , Header
LV.ColumnHeaders(1).Width = Width
For i = 1 To oCol.Count
Set Litem = LV.ListItems.Add(, ,
oCol.Item(i))
lCol = IIf(i And 1, Color1, Color2)
LV.ListItems(i).ForeColor = lCol
Next i
Else
' value, on ajoute une
colonne et on la remplie
LV.ColumnHeaders.Add , , Header
LV.ColumnHeaders(i + 1).Width = Width
For j = 1 To oCol.Count
Set Litem = LV.ListItems.Item(j)
Litem.SubItems(i) = Trim$(oCol.Item(j))
lCol = IIf(j And 1, Color1, Color2)
Litem.ListSubItems(i).ForeColor = lCol
Next j
End If
End Sub
' EXEMPLE D'UTILISATION
Private Sub Form_Load()
Dim c1 As New Collection
Dim c2 As New Collection
With ListView1
.LabelEdit = lvwManual
.FullRowSelect = True
.View = lvwReport
.GridLines = True
End With
Noose123
Messages postés12Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention18 août 2009 10 déc. 2008 à 13:53
Le probleme c que j ai pas une listbox mais ListView,
et si je fais listView.ListItems.Add (Cells(i, 1)), par exemple, ca ne marche pas.
Mon tableau va de A à F, et il y a plus de 40000 lignes... (le fichier est mis à jour automatiquement, et il y a une centaine de lignes qui s ajoute a chaque fois).
Ce que je veux c pouvoir afficher tout ce tableau dans la ListView, j'ai essayé et ca ne marche pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009 10 déc. 2008 à 14:01
Re:
en fait tu veux pouvoir voir l'ensemble de tes données soit en icone, list ou détail?
Je comprends pas trop l'interet de ta listview...
sinon as tu essayé la méthode Add pour ajouter un objet columnHeader à la collection columnHeaders???
Noose123
Messages postés12Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention18 août 2009 10 déc. 2008 à 14:17
Ben j'ai ma ListView sur une winform, et quand je presse sur un bouton, les données de la feuille excel qui m'interessent vont etre ajoutees a la listview.
(je sais pas si tu arrive bien a me comprendre)
Si je fais ca, c'est parceque au final l'utilisateur ne pourra accéder qu a la winform, et il faut donc que je ressorte les infos importantes du tableau dans cette listview...
(quand il clique sur le bouton, ca enleve les lignes inutiles et ca copie dans la listview que les "données importantes"), qui seront réutilisées plus tard.
Vnumligne = Cells(2, 1).End(xlDown).Row
For i = 2 To Vnumligne
'si la 4eme cellule = Vide
If ActiveWorkbook.ActiveSheet.Cells(i, 4).Value <> "Vide" Then
txtA = ActiveWorkbook.ActiveSheet.Cells(i, 1).Value
lvInfo.ListItems.Add , , CStr(txtA)