J aimerais savoir s il est possible de
sauvegarder le contenus d une listview
(ce qu il est ecrit dans chaque collone,
) pour qu il reste ecrit a chaque relancement du prog.
For a = 1 To ListView1.ListItems.Count
' Colonne Principal
z$ = z$ + ListView1.ListItems.Item(a) + ","
' Colone 1
z$ = z$ + ListView1.ListItems.Item(a).ListSubItems(1) + ","
' Colone 2
z$ = z$ + ListView1.ListItems.Item(a).ListSubItems(2)
z$ = z$ + vbCrLf
Next
Close
Open "nom_fichier.ext" For Output As #1
Print #1, z$
Close
Voila, pour la sauvegarde. Ici je traite uniquement : l'entrée racine et 2 subItems, mais on peut en ajouter...
Pour le chargement ca donnera :
Close
Open "Nom_Fichier.ext" For Input As #1
Do Until EOF(1)
Line Input #1, z$
If z$ <> "" Then
Set s = ListView1.ListItems.Add(, , Mid$(z$, 1, InStr(z$, ",") - 1))
z$ = Mid$(z$, InStr(z$, ",") + 1)
s.SubItems(1) = Mid$(z$, 1, InStr(z$, ",") - 1)
z$ = Mid$(z$, InStr(z$, ",") + 1)
s.SubItems(2) = z$
End If
Loop
Close
Voila, c'est un exemple, mais y'a d'autre solution.
Note : J'utilise une virgule comme separateur de donnée, il ne faut pas l'utiliser dans les textes des items de la ListView. Si non, il faut choisire un autre caracter de separation (un # par exemple)
Si ca peut t'aider voici une autre facon de faire peut importe le nombre de Collone qui peut avoir
À mettre dans un module
'Sauvegarder le contenu d'un ListView
Public Function SaveListView(ListViewName As ListView, ByVal Source As String) As Long
Dim I As Long
Dim A As Long
Dim iFile As Long
Dim StrTemp As String
Dim SaveLine As String
On Error GoTo ErrSaveListView
Err.Clear
If Len(Source) <= 0 Then
SaveListView = False
Exit Function
End If
iFile = FreeFile
Open Source For Output As #iFile
For I = 1 To ListViewName.ListItems.Count
SaveLine = RTrim$(ListViewName.ListItems.Item(I).Text)
For A = 1 To ListViewName.ColumnHeaders.Count - 1
If RTrim$(ListViewName.ListItems.Item(I).SubItems(A)) = "" Then
StrTemp = "none"
Else
StrTemp = RTrim$(ListViewName.ListItems.Item(I).SubItems(A))
End If
SaveLine = SaveLine & ";" & StrTemp
Next A
Print #iFile, SaveLine
Next I
Close #iFile
SaveListView = IIf(Err, False, True)
Exit Function
ErrSaveView:
Close
SaveListView = False
Exit Function
End Function
'Ouvrir un fichier et le mettre dans un ListView
Public Function LoadListView(ListViewName As ListView, ByVal Source As String) As Long
Dim iFile As Long
Dim I As Long
Dim NBSI As Long
Dim NBTM As Long
Dim STIN As Long
Dim LineTemp As String
Dim StrTemp As String
Dim SousItem() As String
On Error Resume Next
Err.Clear
If Len(Source) <= 0 Then
LoadListView = False
Exit Function
End If
NBTM = 0
iFile = FreeFile
Open Source For Input Access Read As #iFile
Line Input #iFile, LineTemp
Close #iFile
For I = 1 To Len(LineTemp)
If Mid$(LineTemp, I, 1) = ";" Then
NBTM = NBTM + 1
LineTemp = Mid$(LineTemp, I)
If Left$(LineTemp, 1) = ";" Then
LineTemp = Right$(LineTemp, Len(LineTemp) - 1)
End If
I = 1
End If
Next I
iFile = FreeFile
Open Source For Input Access Read As #iFile
Do While Not EOF(iFile)
Line Input #iFile, LineTemp
If Len(LineTemp) > 0 Then
NBSI = 0
For I = 1 To Len(LineTemp)
If Mid$(LineTemp, I, 1) = ";" Then
StrTemp = Mid$(LineTemp, 1, I)
StrTemp = RemovePointVirgule(StrTemp) If (StrTemp "none" Or StrTemp "") Then
StrTemp = ""
End If
SousItem(NBSI) = StrTemp
NBSI = NBSI + 1
LineTemp = Mid$(LineTemp, I)
If Left$(LineTemp, 1) = ";" Then
LineTemp = Mid$(LineTemp, 2)
End If
I = 1
End If
Next I
SousItem(NBSI) = RemovePointVirgule(LineTemp)
ListViewName.ListItems.Add , , SousItem(0)
For I = 1 To ListViewName.ColumnHeaders.Count
ListViewName.ListItems.Item(STIN).SubItems(I) = (SousItem(I))
Next I
STIN = STIN + 1
End If
Loop
Close #iFile