Copier le contenu d'un repertoire ds un TreeView en VBA

macroVB Messages postés 26 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 11 mai 2007 - 10 nov. 2006 à 14:55
macroVB Messages postés 26 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 11 mai 2007 - 14 nov. 2006 à 11:46
Bonjour tous,
Comment puis-je faire pour copier le contenu d'un repertoire dans un TreeView en VBA

j'ai essayé avec le FileSystemObjects mais ca ne marche pas !!

Merci

6 réponses

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
10 nov. 2006 à 17:40
bonjour

tu peux tester

'
'Liste les sous répertoires d'un dossier, dans un TreeVieW
'VBA Excel2002 & WinXP
'
'



Private Sub UserForm_Initialize()
    Dim Chemin As String, Dossier As String
    Dim Longueur As Integer, i As Integer
   
    'attention au choix du repertoire (au dessus de 300 sous repertoires ,
    'le temps d'affichage peut prendre du temps
    Chemin = "C:\Documents and Settings\michel\dossier"
    '***********************************************
   
    Longueur = Len(Chemin)
    i = Longueur
   
    While Mid(Chemin, i, 1) <> ""
    i = i - 1
    Wend
   
    Dossier = Mid(Chemin, i + 1, Longueur - i)
    TreeView1.Nodes.Add , , Chemin, Dossier
    ListeRepertoires Chemin, True



End Sub





Private Sub ListeRepertoires(SourceRep As String, SousDossiers As Boolean)
    'necessite d'activer la reference Microsoft Scripting Runtime
    Dim Fso As Scripting.FileSystemObject
    Dim SourceFolder As Scripting.Folder
    Dim SubFolder As Scripting.Folder
    Dim FoItem As Scripting.Folder
   
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = Fso.GetFolder(SourceRep)
   
    For Each FoItem In SourceFolder.SubFolders
        TreeView1.Nodes.Add SourceFolder.Path, _
            tvwChild, FoItem.Path, FoItem.Name
    Next FoItem
   
    If SousDossiers Then 'recherche dans les sous repertoires
        For Each SubFolder In SourceFolder.SubFolders
            ListeRepertoires SubFolder.Path, True
        Next SubFolder
    End If



End Sub







bon we
michel
0
macroVB Messages postés 26 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 11 mai 2007
10 nov. 2006 à 18:29
Bonsoir Michel , bonsoir tous,
Merci pour ta réponse Michel, je vais l'essayer tout de suite
 
a titre d'info , l'application que je fais est en VBA word , donc je vais voir le code que tu me proposes, et j'essayerai de l'adapter et je te tiendrai au courant.

bon we et merci encore.
0
macroVB Messages postés 26 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 11 mai 2007
13 nov. 2006 à 17:00
Bonjour Michel, bonjour tous,
j'ai testée ton code Michel, ça marche nikel, je liste dans mon Treeview le contenu de mon répértoire sans problème,
et là  j'essaye en fait de selectionner a partir de mon TreeView les checkbox cochés et les mettre dans une ListView pour les ouvrir en clickant dessus a partir du code genre

If TreeView1.ListItems(n).Checked = True Then
   ListViewListeFichiers.Text
End if 
  
et apres une fois selectionner un fichier dans la ListView1 l'ouvrir

NFichier= ListView1.ListItems.Count
For n = 1 To NFichier
  If ListView1.ListItems(n).Checked = True Then
    OpenFile
  End If
Next
   
mais jusqu'au la j'ai pas reussis , ce n'est pas si facile que ça !
0
macroVB Messages postés 26 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 11 mai 2007
13 nov. 2006 à 17:21
j'ai essayé ce code
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
ListView1.ListItems.Clear

Dim fic As String
    Dim rep As String
    rep = Node.FullPath
    If Right(rep, 1) <> "" Then rep = rep & ""
    
      Dim fld As Folder
    Set fld = fso.GetFolder(rep)
    Dim f As File
    For Each f In fld.Files
        Dim li As ListItem
        Set li = ListView1.ListItems.Add(, , f.Name, "File", "Leaf")
        li.ListSubItems.Add Key:="Size", Text:=f.Size
        li.ListSubItems.Add Key:="Date", Text:=f.DateLastModified
    Next   
End Sub

ca plante avec un message d'erreur comme quoi le chemin d'accés est introuvable en se pointant sur la ligne
"Set fld = fso.GetFolder(rep)"
Je ne sais pas trop comment faire pour éviter ce poblème?

quelqu'un peut etre a une idée ?

Merci de vos réponses .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
13 nov. 2006 à 19:24
bonsoir

je suis désolé mais je ne comprend pas ce que tu cherches à réaliser dans la ListView.

michel
0
macroVB Messages postés 26 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 11 mai 2007
14 nov. 2006 à 11:46
Bojour michel , bonjour tous,
Pour la gestion des projets et pour le classement des fichiers concernant un projet, je cherche en fait a ouvrir un repertoire (repertoire type, qui contient les fichiers modèle du projet qui sont classés dans un emplacement donné) ds un TreeView , et lister les fichiers qui m'intersses qui concerne le projet dans une ListeView , pour permettre apres a  l' utilisateur de cocher ceux qu' il veut integerer dans le projet.
et apres de copier,  les fichiers cochés dans ma ListView, dans un  emplacement suivant l'année et le numéro du projet , car le nom du dossier projet est composé de l'année d'ouverture et d'un numéro d'ordre.

voila j'espère avoir été assez claire , si ce n'est pas claire fais moi signe et je t'expliquerai d'avantage

D'avance merci pour votre aide.
0
Rejoignez-nous