j'ai cru bon d'ajouter mon code source
les objet sur la feille sont :
TV1 est un treeview
LV1 est un listview
imageList1 est un imagelist
'\\\ DECLARATION ///
Option Explicit
Private fso As New FileSystemObject
Dim LV1Path As String
Private Sub Form_Load()
TV1.Enabled = False
Dim imgX As ListImage
' Add images to ListImages collection.
Set imgX = ImageList1. _
ListImages.Add(, "fermer", LoadPicture(App.Path & "\image\fermer.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "fermerT", LoadPicture(App.Path & "\image\fermerT.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "fermerI", LoadPicture(App.Path & "\image\fermerI.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "fichier", LoadPicture(App.Path & "\image\fichier.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "fichierT", LoadPicture(App.Path & "\image\fichierT.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "ouvert", LoadPicture(App.Path & "\image\ouvert.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "ouvertT", LoadPicture(App.Path & "\image\ouvertT.gif"))
Set imgX = ImageList1. _
ListImages.Add(, "ouvertI", LoadPicture(App.Path & "\image\ouvertI.gif"))
TV1.ImageList = ImageList1
LV1.SmallIcons = ImageList1
LV1.Icons = ImageList1
LV1.View = lvwIcon
Label1.Caption = "en cours de creation de la structure du disque dur C (cette operation peut prendre quelque minute)"
Show
Refresh
DoEvents
Screen.MousePointer = vbHourglass
AjouteRep fso.GetDrive("c").RootFolder
'
Screen.MousePointer = vbDefault
Label1.Caption = "creation de la structure du disque dur c accomplis"
Me.Show
TV1.Enabled = True
End Sub
Private Sub AjouteRep(fld As Folder, Optional Node As Node = Nothing)
If fld.Name = "RECYCLER" Then Exit Sub
If fld.Name = "System Volume Information" Then Exit Sub
'ajoute le dossier
Dim n As Node
If fld.IsRootFolder = True Then
Set n = TV1.Nodes.Add(, , , fld.Path, "fermer", "ouvert")
Else
Set n = TV1.Nodes.Add(Node, tvwChild, , fld.Name, "fermer", "ouvert")
End If
'traite les sous-dossier
Dim fld1 As Folder
For Each fld1 In fld.SubFolders
AjouteRep fld1, n
Next
End Sub
Private Sub LV1_ItemClick(ByVal Item As MSComctlLib.ListItem)
If Item.Icon <> "fermer" Then Exit Sub 'si il ne sagit pas d'un dossier => sort de la sub
LV1.ListItems.Clear
'construit le nom du repertoire
Dim fic As String
Dim rep As String
rep = LV1Path
If Right(rep, 1) <> "" Then rep = rep & ""
fic = Item.Text
rep = rep & fic
LV1Path = rep
Screen.MousePointer = vbHourglass
Dim fld As Folder
Set fld = fso.GetFolder(rep)
Dim f As File
Dim fldl As Folder
Dim message As Boolean
message = False
'ajoute les elements dossier a LV1 sans prendre en compte la poubelle et l'information de volume systeme.
For Each fldl In fld.SubFolders If fldl.Name "RECYCLER" Then message True If fldl.Name "System Volume Information" Then message True
If message = False Then
Dim li As ListItem
Set li = LV1.ListItems.Add(, , fldl.Name, "fermer", "fermer")
li.ListSubItems.Add Key:="size", Text:=fldl.Size
li.ListSubItems.Add Key:="date", Text:=fldl.DateLastModified
End If
Next
'ajouter les element fichier a LV1
For Each f In fld.Files
Dim li2 As ListItem
Set li2 = LV1.ListItems.Add(, , f.Name, "fichier", "fichier")
li2.ListSubItems.Add Key:="size", Text:=f.Size
li2.ListSubItems.Add Key:="date", Text:=f.DateLastModified
Next
Screen.MousePointer = vbDefault
End Sub
Private Sub TV1_NodeClick(ByVal Node As MSComctlLib.Node)
LV1.ListItems.Clear
'construit le nom du repertoire
Dim fic As String
Dim rep As String
rep = Node.FullPath
If Right(rep, 1) <> "" Then rep = rep & ""
LV1Path = rep
Screen.MousePointer = vbHourglass
Dim fld As Folder
Set fld = fso.GetFolder(rep)
Dim f As File
Dim fldl As Folder
Dim message As Boolean 'sera utile pour filtrer des dossiers a ne pas afficher
message = False
'ajoute les elements dossier a LV1 sans prendre en compte la poubelle et l'information de volume systeme.
For Each fldl In fld.SubFolders If fldl.Name "RECYCLER" Then message True If fldl.Name "System Volume Information" Then message True
If message = False Then
Dim li As ListItem
Set li = LV1.ListItems.Add(, , fldl.Name, "fermer", "fermer")
li.ListSubItems.Add Key:="size", Text:=fldl.Size
li.ListSubItems.Add Key:="date", Text:=fldl.DateLastModified
End If
Next
'ajouter les element fichier a LV1
For Each f In fld.Files
Dim li2 As ListItem
Set li2 = LV1.ListItems.Add(, , f.Name, "fichier", "fichier")
li2.ListSubItems.Add Key:="size", Text:=f.Size
li2.ListSubItems.Add Key:="date", Text:=f.DateLastModified
Next
Screen.MousePointer = vbDefault
End Sub
un gros Merci,
SgtJazz