Bonjour à tous,
Je suis nouvelle sur le forum, j'ai quelques notion d'excel et suis débutante en VBA.
Mon pb: J'ai des fichiers mp3 sur un clé USB (G:\);
J'ai réussi à bidouiller différents morceaux de code pour les lister (sans lister les sous-dossiers ce qui est tout à fait ce que je souhaite), en extraire le nom et la date de création. je voudrais également avoir la durée mais je bloque.
J'ai cherché et tester différentes macros mais je ne m'en sors pas.
Je fais un post en désespoir de cause.
Je bloque au niveau de la ligne en violet et ne sais pas quoi mettre pour récupérer la durée du fichier mp3
En espérant que vous pourrez m'aider.
voici mon code :
Sub ScanClasseurs()
Dim Dossier As Object, Fichier As Object
Dim Chemin As String, CeFichier As String, ExtFichier As String
Dim TabDossiers As Variant
Dim L As Long, D As Long
Chemin = "G:\"
If Chemin = "" Then Exit Sub
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Test").Range("A2:B65536").Delete Shift:=xlUp
CeFichier = ThisWorkbook.Name
ExtFichier = UCase(Trim(ThisWorkbook.Sheets("Test").Range("Extension").Text))
L = 1
'Création du tableau des sous-dossiers existants
TabDossiers = lstDossiers(Chemin, True)
'Chemin du dossier (ou sous-dossier) à analyser
Chemin = "G:\"
If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
'Analyse du dossier (ou sous-dossier)
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
For Each Fichier In Dossier.Files
If Fichier.Name <> CeFichier Then
If ExtFichier = "" Or UCase(Right(Fichier.Name, 3)) = ExtFichier Then
'Liste les fichiers
L = L + 1
'MAJ feuille résultats
With ThisWorkbook.Sheets("Test")
.Cells(L, 1).Value = Fichier.Name
.Cells(L, 2).Value = Fichier.DateCreated
.Cells(L, 3).Value = Fichier.????????
End With
End If
End If
Next
Set Dossier = Nothing
'Rétablit l'alerte de lien éventuelle dans les options Excel
Application.ScreenUpdating = True
End Sub
Private Function lstDossiers(Chemin As String, Optional Debut As Boolean) As Variant
Dim Dossier As Object, SD As Object, D As Object
Static TabTemp() As String
If Debut Then
ReDim TabTemp(1 To 1)
TabTemp(1) = Chemin
End If
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
'examen du dossier courant
For Each D In Dossier.subfolders
ReDim Preserve TabTemp(1 To UBound(TabTemp) + 1)
TabTemp(UBound(TabTemp)) = D.Path
Next
End Function
Je suis nouvelle sur le forum, j'ai quelques notion d'excel et suis débutante en VBA.
Mon pb: J'ai des fichiers mp3 sur un clé USB (G:\);
J'ai réussi à bidouiller différents morceaux de code pour les lister (sans lister les sous-dossiers ce qui est tout à fait ce que je souhaite), en extraire le nom et la date de création. je voudrais également avoir la durée mais je bloque.
J'ai cherché et tester différentes macros mais je ne m'en sors pas.
Je fais un post en désespoir de cause.
Je bloque au niveau de la ligne en violet et ne sais pas quoi mettre pour récupérer la durée du fichier mp3
En espérant que vous pourrez m'aider.
voici mon code :
Sub ScanClasseurs()
Dim Dossier As Object, Fichier As Object
Dim Chemin As String, CeFichier As String, ExtFichier As String
Dim TabDossiers As Variant
Dim L As Long, D As Long
Chemin = "G:\"
If Chemin = "" Then Exit Sub
Application.ScreenUpdating = False
ThisWorkbook.Sheets("Test").Range("A2:B65536").Delete Shift:=xlUp
CeFichier = ThisWorkbook.Name
ExtFichier = UCase(Trim(ThisWorkbook.Sheets("Test").Range("Extension").Text))
L = 1
'Création du tableau des sous-dossiers existants
TabDossiers = lstDossiers(Chemin, True)
'Chemin du dossier (ou sous-dossier) à analyser
Chemin = "G:\"
If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
'Analyse du dossier (ou sous-dossier)
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
For Each Fichier In Dossier.Files
If Fichier.Name <> CeFichier Then
If ExtFichier = "" Or UCase(Right(Fichier.Name, 3)) = ExtFichier Then
'Liste les fichiers
L = L + 1
'MAJ feuille résultats
With ThisWorkbook.Sheets("Test")
.Cells(L, 1).Value = Fichier.Name
.Cells(L, 2).Value = Fichier.DateCreated
.Cells(L, 3).Value = Fichier.????????
End With
End If
End If
Next
Set Dossier = Nothing
'Rétablit l'alerte de lien éventuelle dans les options Excel
Application.ScreenUpdating = True
End Sub
Private Function lstDossiers(Chemin As String, Optional Debut As Boolean) As Variant
Dim Dossier As Object, SD As Object, D As Object
Static TabTemp() As String
If Debut Then
ReDim TabTemp(1 To 1)
TabTemp(1) = Chemin
End If
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
'examen du dossier courant
For Each D In Dossier.subfolders
ReDim Preserve TabTemp(1 To UBound(TabTemp) + 1)
TabTemp(UBound(TabTemp)) = D.Path
Next
End Function