Récupérer noms de dossier et de fichier

jeanclaude57

XLDnaute Nouveau
Bonjour

Je voudrais savoir si il est possible et comment faire pour récupérer les noms de dossiers et de fichiers quelquonque dans un répertoire et dans faire une liste dans un fichier xls.

J'ai bien vu plusieurs post à ce sujet mais ils ne parlaient que de fichier xls moi je voudrais récuperer n'importe quel fichier ou dossier.

Merci de votre aide
 

kiki29

XLDnaute Barbatruc
Re : Récupérer noms de dossier et de fichier

Salut, peut-être voir dans l'aide en ligne de BuiltinDocumentProperties(12)
mais à priori Last Save Time de BuiltinDocumentProperties correspond au DateLastModified
 
Dernière édition:

Quenath

XLDnaute Nouveau
Re : Récupérer noms de dossier et de fichier

j'ai essayé de modifier une propriétée d'un fichier au niveau de l'explorateur et au niveau de excel sans enregistrer, et la date de modification reste égale à la date d'enregistrement.

peut-tu donner plus de détail ?

Bonjour,

voici la procédure utilisée :
clic droit sur un fichier --> Propriétés / Résumé
Modification du nom de l'auteur (par exemple)
clic sur OK
==> (chez moi) Date de modification = date du jour sans pour autant modifier la date de dernier enregistrement

Cordialement

Quenath
 

JCGL

XLDnaute Barbatruc
Re : Récupérer noms de dossier et de fichier

Bonjour à tous,

Pouvez-vous tester ce fichier ?

Vous remarquerez en colonne AF une valeur du .GetDetailsOf() mais qui n'est pas repris en Ligne 4 des Entêtes. Je pense qu'il s'agit de la date du dernier enregistrement

Code:
Option Explicit
Sub LireInfos() 'Merci à Michel XLD ;-)
'Dans outil réferences cocher Microsoft Shell Controls and Automation
Dim Chemin As String
Dim myShell As Shell
Dim myFolder As Folder
Dim myFile As FolderItem
Dim i As Byte, F As String, lig As Long
'Indiquer le chemin du répertoire
Chemin = Range("B1").Value
 
On Error Resume Next
Set myShell = CreateObject("Shell.Application")
Set myFolder = myShell.Namespace(Chemin)
Set myFile = myFolder.Items.Item(F)
Application.ScreenUpdating = False
[A4:AI65000].ClearContents
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(4, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
F = Dir(Chemin & "\*.*")
Do While Len(F) > 0
Set myFile = myFolder.Items.Item(F)
lig = [A65536].End(xlUp)(2).Row
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(lig, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
F = Dir
Loop
Set myShell = Nothing
Set myFolder = Nothing
Set myFile = Nothing
End Sub

A + à tous
 

Pièces jointes

  • Listage Complet.zip
    19.9 KB · Affichages: 157
G

Guest

Guest
Re : Récupérer noms de dossier et de fichier

Bonjour à toutes et tous,

Une brève incursion pour saluer mon ami JC (ainsi que sa solution).

[Edition] sans oublier non plus l'agrafeur préféré du bureau....

A+++
 
Dernière modification par un modérateur:

sabzzz

XLDnaute Junior
Re : Récupérer noms de dossier et de fichier

bonjour JCGL et à tous,

solution testé et concluante, on récupere bien tous les informations, sauf que certain titre de colonne sont à corriger,

Date de création se retrouve en colonne AF
Date du dernier enregistrement en colonne E,

cette solution est rapide
Merci à toi,

ps/ Quenath
tu as bien raison lorsque l'on modifie à partir de l'explorateur, la propriété Auteur la date de modification change.
 

JCGL

XLDnaute Barbatruc
Re : Récupérer noms de dossier et de fichier

Bonjour à tous,
Salut Hasco :):), qui m'a ignoré, tout comme l'ami BH² sur le fil d'Escargot.... Même pas mal

sabzzz : Pour les Titres de colonnes : elles sont mises par le .GetDetailsOf(). Peut-être as-tu découvert un "loup" dans XL...

Merci de ton test

A++ :):)
A + à tous
 

Quenath

XLDnaute Nouveau
Re : Récupérer noms de dossier et de fichier

Bonsoir,

Merci JCGL, c'est parfait... à un chouille près... je vais essayer de chercher un peu durant le week end (il faut bien que je bosse un peu quand même !) mais l'idéal serait de pouvoir aussi remonter les fichiers contenus dans les sous-dossiers du répertoire choisi...

Je reviens en début de semaine prochaine, soit pour présenter la solution trouvée, soit pour vous resolliciter un petit peu...

Bonne soirée

Cordialement

Quenath
 

sabzzz

XLDnaute Junior
Re : Récupérer noms de dossier et de fichier

bonjour et salutatous,

j'ai modifié ta macro en y ajoutant une référence à DSO
il faut donc activer la référence DSO OleDocument Properties Reader 2.0

Les propriétés de DSO.SummaryProperties sont :

ApplicationName ' Author ' ByteCount ' Category ' CharacterCount
CharacterCountWithSpaces ' Comments ' Company ' DateCreated
DateLastPrinted ' DateLastSaved ' HiddenSlideCount
Keywords ' LastSavedBy ' LineCount ' Manager ' MultimediaClipCount
NoteCount ' PageCount ' ParagraphCount ' PresentationFormat
RevisionNumber ' SharedDocument ' SlideCount
Subject ' Template ' Title ' TotalEditTime ' Version ' WordCount


Sub MainExtractData()
'Nécessite d'activer la référence DSO OleDocument Properties Reader 2.0
Dim DSO As DSOFile.OleDocumentProperties
Set DSO = New DSOFile.OleDocumentProperties

Dim NewSht As Worksheet
Dim MainFolderName As String
Dim TimeLimit As Long, StartTime As Double

ReDim X(1 To 65536, 1 To 12)

Set objShell = CreateObject("Shell.Application")
TimeLimit = Application.InputBox("Please enter the maximum time that you wish this code to run for in minutes" & vbNewLine & vbNewLine & _
"Leave this at zero for unlimited runtime", "Time Check box", 0)
StartTime = Timer

Application.ScreenUpdating = False
MainFolderName = BrowseForFolder()
Set NewSht = ThisWorkbook.Sheets.Add

X(1, 1) = "Path"
X(1, 2) = "File Name"
X(1, 3) = "Last Accessed"
X(1, 4) = "Last Modified"
X(1, 5) = "Created"
X(1, 6) = "Date Dernier enregistrement"
X(1, 7) = "Type"
X(1, 8) = "Size"
X(1, 9) = "Owner"
X(1, 10) = "Author"
X(1, 11) = "Title"
X(1, 12) = "Comments"

i = 1

Set fso = CreateObject("scripting.FileSystemObject")
Set oFolder = fso.GetFolder(MainFolderName)
'error handling to stop the obscure error that occurs at time when retrieving DateLastAccessed
On Error Resume Next
For Each Fil In oFolder.Files
Set objFolder = objShell.Namespace(oFolder.Path)
Set objFolderItem = objFolder.ParseName(Fil.Name)
i = i + 1
If i Mod 20 = 0 And TimeLimit <> 0 And Timer > (TimeLimit * 60 + StartTime) Then
GoTo FastExit
End If
If i Mod 50 = 0 Then
Application.StatusBar = "Processing File " & i
DoEvents
End If
X(i, 1) = oFolder.Path
X(i, 2) = Fil.Name
X(i, 3) = Fil.DateLastAccessed
X(i, 4) = Fil.DateLastModified
'X(i, 5) = Fil.DateCreated
'X(i, 6) = Fil.DateLastsaved
X(i, 7) = Fil.Type
X(i, 8) = Fil.Size
X(i, 9) = objFolder.GetDetailsOf(objFolderItem, 8)
X(i, 10) = objFolder.GetDetailsOf(objFolderItem, 9)
X(i, 11) = objFolder.GetDetailsOf(objFolderItem, 10)
X(i, 12) = objFolder.GetDetailsOf(objFolderItem, 14)

DSO.Open sfilename:="" & oFolder.Path & "\" & Fil.Name
X(i, 5) = DSO.SummaryProperties.DateCreated
X(i, 6) = DSO.SummaryProperties.DateLastSaved

Next

'Get subdirectories
If TimeLimit = 0 Then
Call RecursiveFolder(oFolder, 0)
Else
If Timer < (TimeLimit * 60 + StartTime) Then Call RecursiveFolder(oFolder, TimeLimit * 60 + StartTime)
End If

FastExit:
Range("A:K") = X
If i < 65535 Then Range(Cells(i + 1, "A"), Cells(65536, "A")).EntireRow.Delete
Range("A:K").WrapText = False
Range("A:K").EntireColumn.AutoFit
Range("1:1").Font.Bold = True
Rows("2:2").Select
ActiveWindow.FreezePanes = True
Range("a1").Activate

Set fso = Nothing
Set objShell = Nothing
Set oFolder = Nothing
Set objFolder = Nothing
Set objFolderItem = Nothing
Set Fil = Nothing
DSO.Close
Application.StatusBar = ""
Application.ScreenUpdating = True
End Sub

+a
 

MJ13

XLDnaute Barbatruc
Re : Récupérer noms de dossier et de fichier

Bonjour à tous

Je me permet de vous demander un petit plus sur le système DSO, mais je m'y perd un peu.

J'ai a peu près compris en faisant une recherche dans un dossier des noms de fichier avec leurs propriété, mais ce que je voudrais c'est à partir d'un nom de dossier et de fichier que j'ai dans 2 cellules: c'est récupérer le nom de l'auteur (voir les autres propriétés mais la se sera plus simple avec les codes de cette discussion).

Merci d'avance pour vos trouvailles.
 

MJ13

XLDnaute Barbatruc
Re : Récupérer noms de dossier et de fichier

Re a tous

C'est bon j'ai trouvé grâce à notre ami MichelXLD que je salue ce code:

Code:
Sub LireProprietesClasseur_DSO()
'MichelXLD
    'Nécessite d'activer la référence DSO OleDocument Properties Reader 2.0
    'http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q224351
    Dim DSO As DSOFile.OleDocumentProperties
 
    Set DSO = New DSOFile.OleDocumentProperties
 
    'Attention: Le fichier doit être préalablement fermé!
    DSO.Open sfilename:="C:\MonDossier\MonFichier.xls"
 
    '
    MsgBox DSO.SummaryProperties.Author & vbLf & DSO.SummaryProperties.Comments
    '
    'Les autres propriétés:
    '
    ' ApplicationName ' Author ' ByteCount ' Category ' CharacterCount
    ' CharacterCountWithSpaces ' Comments ' Company ' DateCreated
    ' DateLastPrinted ' DateLastSaved ' HiddenSlideCount
    ' Keywords ' LastSavedBy ' LineCount ' Manager ' MultimediaClipCount
    ' NoteCount ' PageCount ' ParagraphCount ' PresentationFormat
    ' RevisionNumber ' SharedDocument ' SlideCount
    ' Subject ' Template ' Title ' TotalEditTime ' Version ' WordCount
    '
    DSO.Close
End Sub

Je l'ai trouvé ici en suivant les liens:
http://www.developpez.net/forums/d4...xcel/vba-excel/afficher-liste-fichiers-excel/
 

fofo

XLDnaute Nouveau
Re : Récupérer noms de dossier et de fichier

Bonjour et Merci à tous,
Je découvre ce forum, et je sens que je ne viendrais pas qu'une seule fois.

J'ai testé le code de jeanclaude57. Ill fonctionne.. mais je ne parviens pas à récupérer les noms de dossiers (que ceux des fichiers).
Comment puis-je modifier le code pour obtenir les nom de dossiers svp ?

Un grand merci. et à bientôt ;)
 

Discussions similaires

Réponses
11
Affichages
247

Statistiques des forums

Discussions
312 237
Messages
2 086 486
Membres
103 232
dernier inscrit
logan035