Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" (ByVal hWnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Dim FSO As FileSystemObject Dim TXTstream As TextStream 'Save lines of a ListView in a Text File 'This File can be open with Excel '(see Sub OpenListViewFileInExcel) '_________________________________________________________ Public Sub SaveListViewInFile(ByVal LV As ListView, _ ByRef FileName As String) Dim i As Long Dim j As Long Dim tempo As String On Error Goto gestion_erreur Set TXTstream = FSO.CreateTextFile(FileName) For i = 1 To LV.ListItems.Count tempo = LV.ListItems.Item(i).Text For j = 1 To LV.ColumnHeaders.Count - 1 tempo = tempo & Chr(9) & LV.ListItems.Item(i).SubItems(j) Next j TXTstream.WriteLine tempo Next i XTstream.Close Exit Sub gestion_erreur: MsgBox Err.Description, vbCritical, "ERREUR n°" & CStr(Err.Number) End Sub '_________________________________________________________ 'Load Lines from a file to a ListView Public Sub LoadListViewFromFile(ByVal LV As Object, _ ByRef FileName As String) Dim i As Long Dim j As Long Dim NbLigne As Long Dim NbColonne As Long Dim LigneTexte Dim ColonneTexte As String On Error Goto gestion_erreur LV.ListItems.Clear Set TXTstream = FSO.OpenTextFile(FileName) i = 1 j = 1 Do LigneTexte = TXTstream.ReadLine ColonneTexte = Mid(LigneTexte, 1, _ InStr(1, LigneTexte, Chr(9), vbTextCompare) - 1) LigneTexte = Replace(LigneTexte, ColonneTexte + _ Chr(9), "", , 1) LV.ListItems.Add , , ColonneTexte While InStr(1, LigneTexte, Chr(9), vbTextCompare) <> 0 If LV.ColumnHeaders.Count <= j Then _ LV.ColumnHeaders.Add , , j ColonneTexte = Mid(LigneTexte, 1, _ InStr(1, LigneTexte, Chr(9), vbTextCompare) - 1) LV.ListItems.Item(i).SubItems(j) = ColonneTexte LigneTexte = Replace(LigneTexte, _ ColonneTexte + Chr(9), "", , 1) j = j + 1 Wend If LV.ColumnHeaders.Count <= j Then LV.ColumnHeaders.Add , , j LV.ListItems.Item(i).SubItems(j) = LigneTexte j = 1 i = i + 1 Loop Until TXTstream.AtEndOfStream TXTstream.Close Exit Sub gestion_erreur: MsgBox Err.Description, vbCritical, "ERREUR n°" & _ CStr(Err.Number) End Sub '_________________________________________________________ 'Open a ListView File with Excel Public Sub OpenListViewFileInExcel(ByVal FileName As String) On Error Resume Next Call ShellExecute(0, "open", "excel", """" & _ FileName & """", "", 10) End Sub '_________________________________________________________ Private Sub Class_Initialize() Set FSO = New FileSystemObject End Sub '_________________________________________________________ Private Sub Class_Terminate() Set FSO = Nothing Set TXTstream = Nothing End Sub |