Liste de films
Résolu
Papyjoyeux
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,
Je possède un disque sur lequel j'ai plusieurs répertoires contenant des films.
Je cherche le moyen de lister ces films sur Excel 2010, par répertoire.
Cette liste devrait contenir le nom des films (c'est le minimum !!!) ainsi que la taille et la durée de chacun
D'une manière générale, je cherche à lister le contenu d'un répertoire avec les diverses propriétés de chaque élément contenu dans ce répertoire.
Merci pour vos éventuelles réponses
Je possède un disque sur lequel j'ai plusieurs répertoires contenant des films.
Je cherche le moyen de lister ces films sur Excel 2010, par répertoire.
Cette liste devrait contenir le nom des films (c'est le minimum !!!) ainsi que la taille et la durée de chacun
D'une manière générale, je cherche à lister le contenu d'un répertoire avec les diverses propriétés de chaque élément contenu dans ce répertoire.
Merci pour vos éventuelles réponses
A voir également:
- Liste de films
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
- Site dangereux liste - Guide
2 réponses
Bonjour,
Avec une rapide recherche sur le net,
par exemple :
https://www.google.com/search?q=vba+list+files+in+folder
et encore :
https://www.google.com/search?q=vba+video+file+properties
Ca devrait te permettre de trouver un code du genre
Avec une rapide recherche sur le net,
par exemple :
https://www.google.com/search?q=vba+list+files+in+folder
et encore :
https://www.google.com/search?q=vba+video+file+properties
Ca devrait te permettre de trouver un code du genre
Option Explicit
Sub GetVideos()
Dim fileType, fileNames, movieFile
Dim nextRow As Excel.Range
For Each fileType In Array(".avi", ".mkv", ".mpeg4", ".mov") '// add more as required...
'// Black console box may appear at this point for a while, this is normal...
fileNames = Filter(Split(CreateObject("WScript.Shell").Exec("CMD /C DIR ""C:\*" & fileType & """ /S /B /A:-D").StdOut.ReadAll, vbCrLf), ".")
For Each movieFile In fileNames
Set nextRow = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
nextRow.Value = GetProperties(CStr(movieFile), 0)
nextRow.Offset(0, 1).Value = GetProperties(CStr(movieFile), 1)
nextRow.Offset(0, 2).Value = GetProperties(CStr(movieFile), 27)
nextRow.Offset(0, 3).Value = GetProperties(CStr(movieFile), 182)
nextRow.Offset(0, 4).Value = GetProperties(CStr(movieFile), 284)
Next
Next
With Range("A1:E1")
.Value = Array("Name", "Size", "Length", "Type", "Frame Rate")
.EntireColumn.AutoFit
End With
End Sub
Function GetProperties(file As String, propertyVal As Integer) As Variant
Dim varfolder, varfile
With CreateObject("Shell.Application")
Set varfolder = .Namespace(Left(file, InStrRev(file, "\") - 1))
Set varfile = varfolder.ParseName(Right(file, Len(file) - InStrRev(file, "\")))
GetProperties = varfolder.GetDetailsOf(varfile, propertyVal)
End With
End Function
bonjour,
ceci te donnera toutes les propriétés de tes fichiers:
ceci te donnera toutes les propriétés de tes fichiers:
Option Explicit
Dim labels() As String, maxdet As Long
Private Sub allattr()
Dim app As Shell, i As Long, det As String, cedossier As Folder
Set app = New Shell
Set cedossier = app.Namespace(ThisWorkbook.Path)
For i = 0 To 1000
det = cedossier.GetDetailsOf(Null, i)
If det <> "" Then
maxdet = i
Debug.Print i, det
ReDim Preserve labels(maxdet)
labels(maxdet) = det
End If
Next i
End Sub
Private Sub proprietesFichiers()
Dim objShell As Shell
Dim strFileName
Dim objFolder As Folder
Dim Resultat As String
Dim i As Byte
Call allattr
Set objShell = New Shell
Set objFolder = objShell.Namespace(ThisWorkbook.Path)
Call explore(objShell, objFolder)
End Sub
Private Sub explore(app As Shell, ledossier As Folder)
Dim fo As FolderItem2, undossier As Folder, det As String, i As Long
For Each fo In ledossier.Items
If fo.isFolder Then
Debug.Print "dossier: ", fo.Path
Set undossier = app.Namespace(fo.Path)
Call explore(app, undossier)
Else
Debug.Print " fichier: ", fo.Name
For i = 0 To maxdet
det = ledossier.GetDetailsOf(fo, i)
If det <> "" Then
Debug.Print " ", labels(i), det
End If
Next i
End If
Next fo
End Sub