Salut! désolé, j'ai mis mon résultat final dans mon sujet Lecture d'un fichier Wave par Excel Vba.
Je voulais te répondre bien sur! Voci ce que mon fils a fait et moi avons fait:
Je n'était pas en mesure d'ouvrir le fichier que tu m'a envoyé car je roule sur Excel 2003. On a essayé de faire rouler l'application avec quelques lignes de codes placer dans Power shell, mais il se passait une chose bizarre: il arrivait que lorsque je cliquais sur une cellules contenant une position en heure minute seconde autre que 0 0 0, c'était la piece a 0 0 0 qui jouait! Alors on a décider d'utiliser VLC média player et ca marche tres bien. Le code est bien sur différent mais tres court. En gros, une ligne dans mon VBA pour appeler VLC a partir du code écrit dans le bloc note et une autre qui attend que l'application soit fermé avant de lancer de nouveau l'application.
Donc a chaque nouveau clic sur une nouvelle cellule contenant une position différente, si VLC est ouvert, il se ferme puis est relancé.
Ca fonctionne tres bien. Regarde les 2 dernieres lignes de code VBA ainsi que le code écrit dans le bloc note.
If Not Application.Intersect(target, Range("F3:F600")) Is Nothing And edit = False Then 'clic dans une cellule de colonne F
Dim strArray() As String
Dim hour As String: hour = "0"
Dim min As String: min = "0"
Dim sec As String: sec = "0"
Dim totalSeconds As Integer: totalSeconds = 0
Range("F3:F600").Interior.ColorIndex = xlColorIndexNone 'on enleve toute trace de couleur dans la colonne
target.Interior.Color = RGB(255, 128, 64) 'permet de réperer la location active
strArray = Split(ActiveCell.Value, ":")
If UBound(strArray) = 1 Then
min = strArray(0)
sec = strArray(1)
Else
hour = strArray(0)
min = strArray(1)
sec = strArray(2)
End If
totalSeconds = totalSeconds + 3600 * CInt(hour)
totalSeconds = totalSeconds + 60 * CInt(min)
totalSeconds = totalSeconds + sec
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim errorCode As Integer
Dim waitForReturn As Boolean: waitForReturn = True
errorCode = wsh.Run("powershell.exe -File ""C:\Users\stop_vlc_process.ps1""", 6, waitForReturn)
Call Shell("""C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"" ""C:\Users\musique_ piano\multipiste_piano_v1.WAV"" --start-time=" & totalSeconds, 6)
End If
code dans le bloc note:
Write-Host "Stopping VLC processes..."
Get-Process | Where-Object {$_.ProcessName -eq 'vlc'} | Stop-Process
Write-Host "Done"