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

Convertir des milièmes en mm:ss

  • Initiateur de la discussion Le Djé
  • Date de début
L

Le Djé

Guest
Bonjour le forum,

Voilà mon problème, je récupère la durée d'un fichier MP3 (par exemple : 501146 millisecondes) dans une cellule mais je voudrais changer le format en minutes et en secondes (mm:ss) sachant que le fichier cité en exemple dure 04:53.

J'ai bien essayé des formats ou des formules mais je n'ai pas encore trouvé...

Merci à vous

Le Djé
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour le fil

Bon il y a 2 fils ouverts sur le même sujet alors je donne l'autre en lien

Lien supprimé

Mais on se fait la même réflexion Didier 500000 millisecondes font plus de 8 minutes
 
L

Le Djé

Guest
Bonjour Didier,
En fait j'ai utilisé un code que j'ai eu je ne sais plus où qui est censé me donnder la durée d'un fichier MP3 et celui-ci m'est donné en ms.
Voici ce code :
Code:
Option Explicit
''*********************** durée fichiers WAV , MPEG , MP3 ****************************
Declare Function mciSendString Lib 'winmm.dll' Alias _
'mciSendStringA' (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
hwndCallback As Long) As Long

Private Declare Function GetShortPathName Lib 'kernel32' _
Alias 'GetShortPathNameA' (ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long




Sub dureeFichierMP3()
Dim s As String * 255
Dim i As Long
Dim ShortName As String

''ouvrir la session
ShortName = GetShortName('C:\\MP3\\Ton fichier.mp3' )
i = mciSendString('open ' & ShortName & ' type MPEGVideo alias Voix1', 0&, 0, 0)

''reuperer les infos
i = mciSendString('status voix1 length', s, 255, 0)
MsgBox Val(s) & ' millisecondes'

Range('C2') = Val(s)
''fermer la session
i = mciSendString('close voix1', 0&, 0, 0)

End Sub



Public Function GetShortName(ByVal sLongFileName As String) As String
Dim lRetVal As Long, sShortPathName As String, iLen As Integer
sShortPathName = Space(255)
iLen = Len(sShortPathName)

lRetVal = GetShortPathName(sLongFileName, sShortPathName, iLen)
GetShortName = Left(sShortPathName, lRetVal)
End Function

Je ne vois pas à quelle endroit on pourrait changer le format

Merci de ton aide

LeDjé
 

dg62

XLDnaute Barbatruc
re

ta procédure renvoie bien la durée en ms
j'ai fait un test sur un morceau de 2m41s
et ta proc m'a donnée 161456 ms ce qui est correct



pour convertir tu divises ta durée en ms par 60000
 

dg62

XLDnaute Barbatruc
re

vers la fin du code tu trouves

Range('C2') = Val(s)

tu remplaces par : Range('C2') = Val(s)/60000

sur la feuille excel

En c2 tu récupères la valeur en décimal

En c3 =ENT(C2) & 'mn' & ENT((C2-ENT(C2))*60) & 's'


Si tu ne veux pas de formatage, utilises la formule de Pascal76 qu'il t'a donné dans ton premier post.

Message édité par: dg62, à: 13/03/2005 18:04
 
L

Le Djé

Guest
Bonjour Didier,
En fait j'ai utilisé un code que j'ai eu je ne sais plus où qui est censé me donnder la durée d'un fichier MP3 et celui-ci m'est donné en ms.
Voici ce code :
Code:
Option Explicit
''*********************** durée fichiers WAV , MPEG , MP3 ****************************
Declare Function mciSendString Lib 'winmm.dll' Alias _
'mciSendStringA' (ByVal lpstrCommand As String, ByVal _
lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal _
hwndCallback As Long) As Long

Private Declare Function GetShortPathName Lib 'kernel32' _
Alias 'GetShortPathNameA' (ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long




Sub dureeFichierMP3()
Dim s As String * 255
Dim i As Long
Dim ShortName As String

''ouvrir la session
ShortName = GetShortName('C:\\MP3\\Ton fichier.mp3' )
i = mciSendString('open ' & ShortName & ' type MPEGVideo alias Voix1', 0&, 0, 0)

''reuperer les infos
i = mciSendString('status voix1 length', s, 255, 0)
MsgBox Val(s) & ' millisecondes'

Range('C2') = Val(s)
''fermer la session
i = mciSendString('close voix1', 0&, 0, 0)

End Sub



Public Function GetShortName(ByVal sLongFileName As String) As String
Dim lRetVal As Long, sShortPathName As String, iLen As Integer
sShortPathName = Space(255)
iLen = Len(sShortPathName)

lRetVal = GetShortPathName(sLongFileName, sShortPathName, iLen)
GetShortName = Left(sShortPathName, lRetVal)
End Function

Je ne vois pas à quelle endroit on pourrait changer le format

Merci de ton aide

LeDjé
 
L

Le Djé

Guest
Merci didier pour ton aide mais ça semble ne pas marcher ou alors je m'y prend mal ce qui est probablement le cas.

Exemple : 1 fichier qui, je sais, fait 4 min 53 sec (501146 ms)

tu m'as dit de le diviser par 60000 : 501146 / 60000
Ce qui fait : 8,35243333333333

Et en appliquant ton format cela fait 8mn21s

Peut-être ai-je fait une erreur ???

 
L

Le Djé

Guest
Résolu : Convertir des milièmes en mm:ss

Merci pour tout Didier, effectivement j'ai testé avec un autre fichier et le résultat est bon ! Bizarre (Excel ne doit pas apprécier Aqmé !)
Merci encore et bonne fin de week end.

Le Djé
 
L

Le Djé

Guest
Résolu : Convertir des milièmes en mm:ss

Merci pour tout Didier, effectivement j'ai testé avec un autre fichier et le résultat est bon ! Bizarre (Excel ne doit pas apprécier Aqmé !)
Merci encore et bonne fin de week end.

Le Djé
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…