[VBA] Comment jouer un son ?

Q&R publiƩe par MyDearFriend! le 06-10-2007

[VBA] Comment jouer un son ?

Voici 4 possibilités de procédure VBA à saisir dans un module de code standard (ex: Module1) :



POSSIBILITE 1 : le classique (et surtout le plus simple)

Option Explicit
 
Sub JouerSon()
Beep
End Sub

 


POSSIBILITE 2 : le classique revu et corrigé (fait appel à l'API Windows)
Option Explicit
 
Private Declare Function Beep& Lib "Kernel32" (ByVal Fq&, ByVal Tm&)
 
Sub JouerSon() 'A adapter... (faire des tests)
'Beep tonalité, durée
Beep 500, 500
Beep 550, 100
Beep 625, 100
Beep 675, 100
Beep 750, 100
Beep 850, 100
End Sub

 

POSSIBILITE 3 : les fichiers Wav (fait appel à l'API Windows)
Option Explicit
 
Private Declare Function PlaySound& Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName$, _
ByVal hModule&, ByVal dwFlags&)
 
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
 
Sub JouerSon()
Dim MonWav As String
MonWav = "C:\LeSon.wav" '... chemin et nom à adapter
Call PlaySound(MonWav, 0&, SND_ASYNC Or SND_FILENAME)
End Sub

Le son Wav peut ainsi être jouer de façon synchrone (SND_SYNC) ou asynchrone (SND_ASYNC).

 

POSSIBILITE 4 : les fichiers Mid (fait appel à l'API Windows)

Option Explicit
 
Private Declare Function mciExecute& Lib "winmm.dll" (ByVal lpstrCommand$)
 
Sub JouerSon()
Dim LeSonMid As String
LeSonMid = "C:\LeSon.mid" '... chemin et nom à adapter
Call mciExecute ("play " & LeSonMid)
End Sub

Et pour l'interrompre :

Sub StopSon()
Dim LeSonMid As String
LeSonMid = "C:\LeSon.mid" '... chemin et nom à adapter
Call mciExecute ("stop " & LeSonMid)
End Sub

 

Cette Q&R a été trouvée sur myDearFriend! Excel Pages : https://www.mdf-xlpages.com/modules/smartfaq/faq.php?faqid=20