Liste de films

Résolu
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

2 réponses

  1. Contributeur
    bonjour,
    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
    
    1. Modérateur
      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
      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