Treeview en VBA ? je bloque...

Docck Messages postés 16 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 2 avril 2003 - 21 mars 2003 à 09:05
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 16 avril 2004 à 13:13
Salut,

Je cherche a faire un treeview en VBA qui me fera toute l'arborescence du disque dur comme pour enregistrer un fichier.

Ou alors si vous savez comment faire pour Enregistrer un fichier comme le font tous les logiciels, cest a dire ouvrir une fenetre avec la liste des dossiers et pouvoir enregistrer avec le nom qu'on veut.

Merci pour votre aide

Docck

1 réponse

tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
16 avril 2004 à 13:13
C'est chaud sous access.
Prends d'abord un listview (LV1) et treeview(TV1) et imageList1 6.0 dans un form
Place une image de dossier dans l'imageList1 et appelle le "Dossier"

'Le load ne liste que les HDD
Private Sub Form_Load()
Dim fs As Object
Dim dc, d
Dim str, n, img As String

Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
For Each d In dc
If (d.IsReady) Then
str = fs.GetDrive(d.Driveletter).RootFolder
Else:
GoTo suite2
End If
Select Case d.DriveType
Case 0:
n = "Inconnu"
Case 1:
n = "Amovible"
Case 2:
n = d.VolumeName
img = "HDD"
Case 3:
n = d.ShareName
img = "DR"
Case 4:
n = "CD-ROM"
img = "CD"
Case 5:
n = "Disque RAM"
End Select

n = n & " (" & d.Driveletter & ":)"
'Création des noeuds racines des disques)
If (d.DriveType <> 3) Then
Me.TV1.Nodes.Add , , str, n, img
AjouteRep str
End If
suite2:
Next
End Sub

'Procédure récursive permettant de créer tous les nodes issus de l'arborescence du ou des disques

Private Sub AjouteRep(ByVal str As String)
Dim fs, f, fld, fld1, sf

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(str)
Set sf = f.SubFolders
For Each fld In sf
If fld.Name = "RECYCLER" Then GoTo suite
If fld.Name = "System Volume Information" Then GoTo suite
'ajoute les dossier
If f.IsRootFolder = True Then
Me.TV1.Nodes.Add str, tvwChild, fld.Path, fld.Name, "Dossier"
'Ajoute les sous dossiers
AjouteRep fld.Path
Else:
Me.TV1.Nodes.Add str, tvwChild, fld.Path, fld.Name, "Dossier"
AjouteRep fld.Path
End If
suite:
Next
End Sub

Voilà, qui t'avancera un peu, ensuite à toi de jouer pour la gestion des clicks en tout genre.
Attention, n'oublies pas que sous access, il faut écrire
Private Sub TV1_NodeClick(ByVal Node As Object)
Private Sub LV1_ItemClick(ByVal Item As Object)

TBBUIM
0
Rejoignez-nous