Page 1 sur 1

[Calc] Jouer un fichier son incorporé dans une feuille

MessagePublié: 18 Sep 2016 03:33
par ThierryM
Salut à tous,
Voici un code pour Calc mais facilement transposable pour Writer, Draw ou Impress (variante pour la propriété "Drawpage") permettant de jouer un fichier son incorporé. L'avantage est que le classeur Calc est autonome : pas besoin de lui adjoindre le fichier son à jouer.
Remarque : j'ai récupéré une partir du code ici : https://forum.openoffice.org/en/forum/v ... 20&t=57699 (merci à leurs auteurs).

Code : Tout sélectionner   AgrandirRéduire
REM  *****  BASIC  *****

Sub SonErreur
'Macro qui joue le fichier son incorporé dans la feuille "Son"
   maFeuille=thisComponent.Sheets.getByName("Son")
   maPage=maFeuille.DrawPage(0)
   'urlFichierSonIncorpore=maPage(0).MediaURL
   urlFichierSonIncorpore=maPage(0).PrivateTempFileURL
   PlaySound(urlFichierSonIncorpore)
End Sub


Sub PlaySound(i_soundpath as string)
'Macro qui permet de jouer un fichier son
' Source : https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=57699
     Dim oPlayer1 as object, sUrlSound as string, oSounMgr as object
     
     If Not isnull(oSounMgr) Then
         S_Start_New
         Exit Sub
     EndIf
     
     sUrlSound = ConvertToUrl(i_soundpath)

     If not fileexists(sUrlSound) Then       
         msgbox sUrlSound & " introuvable",16
     else
        If GetGuiType() = 1 Then
            oSounMgr = CreateUnoService("com.sun.star.media.Manager_DirectX")
        Else
            oSounMgr = CreateUnoService("com.sun.star.comp.media.Manager_GStreamer")
        End If
        If IsNull(oSounMgr) Then
           msgbox "Sound Mgr not set",16
        else
            oPlayer1 = oSounMgr.createPlayer(sUrlSound)
            oPlayer1.setMediaTime(0.0)
            oPlayer1.setVolumeDB(-10)
'            msgbox oPlayer1.getduration()
            oPlayer1.setPlayBackLoop( 0 )
            oPlayer1.start(0)
           while oPlayer1.isplaying()
              doevents
           wend
           oPlayer1 = nothing
           oSounMgr = nothing
           msgbox "Erreur : saisie non autorisée !",16
        End If
     End If
End Sub


En espérant que ça serve, cordialement,

Thierry