Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

extraire Durée fichier mp3

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Patience

XLDnaute Nouveau
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
 
Re : extraire Durée fichier mp3

Bonjour phlaurent55,

Avant d'embêter avec mes questions, j'ai fais des recherches sur le forum et j'ai testé le code dont vous donnez le lien.
Malheureusement, chez moi, ca donne une erreur : erreur de compilation : Membre de méthode ou de données introuvables à la li 115, Col 41 et ca souligne en bleu le "items" dans la phrase For Each strFileName In objFolder.Items

et je suis bien trop débutante pour voir d'où ca peut venir.

Mais merci de votre réponse rapide.
Bonne journée
 
Dernière édition:
Re : extraire Durée fichier mp3

Bonjour Patience, Philippe, le forum,

Voici un code à placer dans un module :
VB:
Option Explicit
Public Enum FilePropType
Name = 0
Size = 1
FileType = 2
DateModified = 3
DateCreated = 4
DateAccessed = 5
Attributes = 6
Status = 7
Owner = 8
Author = 9
Title = 10
Subject = 11
Category = 12
Pages = 13
Comments = 14
Copyright = 15
Artist = 16
AlbumTitle = 17
Year = 18
TrackNumber = 19
Genre = 20
Duration = 21
BitRate = 22
Protected = 23
CameraModel = 24
DatePictureTaken = 25
Dimensions = 26
Company = 30
Description = 31
FileVersion = 32
ProductName = 33
ProductVersion = 34
End Enum

Public Function GetFileProperty(filePath As String, idx As FilePropType) As String
Dim objFolder As Object, theFile As Object
Set theFile = CreateObject("Scripting.FileSystemObject").GetFile(filePath)
Set objFolder = CreateObject("Shell.Application").Namespace(CStr(theFile.ParentFolder))
GetFileProperty = objFolder.GetDetailsOf(objFolder.ParseName(theFile.Name), idx)
Set objFolder = Nothing: Set theFile = Nothing
End Function

Ensuite, il faut l'utiliser comme ça :
VB:
laDuree = GetFileProperty("C:\MaMusique.mp3",Duration)


La fonction renvoit un string du type "00:04:19".
A+
 
Re : extraire Durée fichier mp3

Bonjour mromain,

et merci de votre réponse,

j'ai mis donc ce que vous m'avez donné dans un module.

et dans le code que j'avais déjà, j'ai changé et mis (cf police violette), sachant que les mp3 se trouvent à la racine de ma clé USB, en espérant avoir bien suivi vos indications :

Option Explicit

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 = GetFileProperty("G:\.mp3", Duration)

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


Maleureusement, ca ne convient pas à Excel. Lorsque j'execute la macro, il bloque, met un message : "Erreur d'exécution '53' : fichier introuvable et surligne en jaune (position Li 10, Col 1) dans le module où j'ai copié ce que vous m'avez donné
Set theFile = CreateObject("Scripting.FileSystemObject").GetFile(filePath)

Qu'est ce que j'ai mal fait ?

Je joins le fichier si ca peut aider.

Je précise que pour que la macro ne me liste que les mp3, je dois remplir une case dans la feuille test, sinon, il liste tous les types de fichiers.

encore merci de votre temps...
 

Pièces jointes

Dernière édition:
Re : extraire Durée fichier mp3

Bonjour Michel,

Ce fichier marche effectivement parfaitement. Merci beaucoup.

Je vais essayer de voir si je peux l'intégrer à ma macro déjà existante car j'aurais aimé pouvoir extraire d'un coup pour les fichiers mp3 présents sur la racine de ma clé USB leur nom, leur date de création et leur durée afin de pouvoir des trier du plus ancien au plus récent et les copier ensuite à la suite d'une liste déjà existante mais je crois qu'il ne faut pas trop en demander 😛.

En tout cas, merci beaucoup !

et bon week-end à tous.
 
Re : extraire Durée fichier mp3

Bonjour Patience

En tout cas, merci beaucoup !

Mais de rien, cela faisant longtemps que je cherchais ce code 🙂.

leur date de création et leur durée afin de pouvoir des trier du plus ancien au plus récent

Normalement en modifiant ce code, en ajoutant la boucle For..Next, tu devrais y arriver.

Code:
Cells(cell.Row, 2) = objFolder.GetDetailsOf(strFileName, 27)
 For j = 1 To 5
 Cells(cell.Row, j + 2) = objFolder.GetDetailsOf(strFileName, j)
 Next
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
480
Réponses
4
Affichages
212
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…