Je sais, source très classique, mais j'en ai pas vu de simple, juste avec des objets FSO qui sont la pour ça.
N'utilise donc pas findClose...les types W...
Donc code - long = + facile à comprendre !
Source / Exemple :
Option Explicit
Dim fso As FileSystemObject
Private Sub Form_Load()
Set fso = New FileSystemObject
Call tree.Nodes.Add(, , "C:\", "C:\", "chef")
tree.Nodes.Add "C:\", tvwChild
End Sub
Private Sub init(initChemin As String)
Dim fichier As String
Dim rep As Folder
For Each rep In fso.GetFolder(initChemin).SubFolders 'on boucle tout le dossier contenu dans initChemin
Call tree.Nodes.Add(initChemin, tvwChild, initChemin & rep.Name & "\", rep.Name, "rep") 'on ajoute les dossier
If fso.GetFolder(initChemin & rep.Name).SubFolders.Count + fso.GetFolder(initChemin & rep.Name).Files.Count > 0 Then
tree.Nodes.Add initChemin & rep.Name & "\", tvwChild 'node factice si il y a un dossier ou un fichier
End If
DoEvents
Next
End Sub
Private Sub tree_Expand(ByVal Node As MSComctlLib.Node)
Dim i As Integer
For i = 0 To Node.Children - 1 'on vire le node fictif et l'ancienne recherche >>> actualisation automatique
tree.Nodes.Remove Node.Child.Index
Next i
Call init(Node.Key) ' dossier
Call ajoutFichier(Node) ' fichier
End Sub
Private Sub ajoutFichier(ByVal Node As MSComctlLib.Node)
Dim fichier As File
For Each fichier In fso.GetFolder(Node.Key & "\").Files
Call tree.Nodes.Add(Node.Key, tvwChild, Node.Key & "\" & fichier.Name, fichier.Name, "htm")
DoEvents
Next
End Sub
Private Sub tree_NodeClick(ByVal Node As MSComctlLib.Node)
On Error Resume Next
If Node.Image = "rep" Then
Label2.Caption = CStr(fso.GetFolder(Node.Key).Size) & " octets"
Label4.Caption = CStr(fso.GetFolder(Node.Key).DateCreated)
Else
Label2.Caption = CStr(fso.GetFile(Node.Key).Size) & " octets"
Label4.Caption = CStr(fso.GetFile(Node.Key).DateCreated)
End If
End Sub
Conclusion :
Et en plus on peut afficher toutes les info nécessaires sans aucune difficultés
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.