Jouer un son windows

Airone784

XLDnaute Occasionnel
Bonjour à tous,

J'ai trouvé ce code pour jouer un son windows présent par défaut :

Code:
Private Declare Function PlaySound32 Lib "winmm.dll" Alias "PlaySoundA" (ByVal IpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000

' archives mpfe
Sub PlayWAV()
' snd_async: son asynchrone (la musique n'arrete pas le programme)
If Application.CanPlaySounds Then
WAVFile = "C:\WINDOWS\MEDIA\tada.wav"
Call PlaySound32(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
Else
Exit Sub
End If

End Sub

Le but est que ce son se déclenche si je clique un commandbutton dans une userform.

Ce que je ne comprends pas c'est que ce code ne marche que pour le fichier tada.wav alors que j'ai plein d'autres fichiers .wav dans le répertoire....

Si vous aviez une explication et/ou solution à mon problème, ce serait super.

Merci d'avance.
 

Lone-wolf

XLDnaute Barbatruc
Re : Jouer un son windows

Bonjour Airone

C'est simple. Tu as bien noté ceci?!: "C:\WINDOWS\MEDIA\tada.wav". Si tu veux un autre son, il faut aussi que tu change son nom. ;)

Oubien, mais à tester

son = Choose("tada.wav", "toto.wav", "titi.wav") etc.

"C:\WINDOWS\MEDIA\" & son
 
Dernière édition:

Airone784

XLDnaute Occasionnel
Re : Jouer un son windows

Bonjour Lonewolf,

J'ai bien évidemment changé le nom en respectant le nom du fichier que je voulais lire mais ça ne fonctionne pas.
Quant à ta solution avec le choose, elle ne donne pas plus de résultat...

Merci tout de même
 

Airone784

XLDnaute Occasionnel
Re : Jouer un son windows

Re,

Je viens à l'instant de comprendre. Mon fichier .wav dans mon répertoire c:\windows\media est nommé notification.wav sauf que son vrai nom est notify.wav. Je m'en suis rendu compte en faisant une copie du fichier, windows m'a nommé la copie notify.wav copie. J'ai l'impression qu'il a été traduit de l'anglais vers le français.
Du coup, si je demande à mon code de jouer le fichier notification.wav, ça ne fonctionne pas par contre si je mets c:\windows\media\notify.wav j'ai bien le son qui est joué.

J'ai donc la solution.

Merci.
 

gilbert_RGI

XLDnaute Barbatruc
Re : Jouer un son windows

Bonjour,

et avec ceci ?

VB:
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long


Private Declare Function mciExecute Lib "winmm.dll" _
(ByVal lpstrCommand As String) As Long


Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
'-------------------------------------------


Sub JouerSon()
Dim Chemin As String
'à adapter ....selon où le fichier .Wav est situé...
'ChDir ("C:\WINDOWS\Media")
Chemin = "C:\WINDOWS\Media"
PlaySound Chemin & "\tada.wav", 0, 0
Chemin = ThisWorkbook.Path
PlaySound Chemin & "\Knockwav.wav", 0, 0

PlaySound Chemin & "\RING1.wav", 0, 0
End Sub
'-------------------------------------------
 

Lone-wolf

XLDnaute Barbatruc
Re : Jouer un son windows

Re Airone-Man ;), bonjour Gilbert :)

En PJ, regarde si ça te convient. Double-clique sur la feuille, clique sur le bouton et laisse aller.
 

Pièces jointes

  • Nouveau dossier.zip
    578.3 KB · Affichages: 51
  • Nouveau dossier.zip
    578.3 KB · Affichages: 61
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Jouer un son windows

Re

Sans formulaire, à mettre dans un module

Code:
Private Declare Function PlaySound32 Lib "winmm.dll" Alias "PlaySoundA" _
(ByVal IpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Dim chemin, son, i

Sub Joue_Son()
chemin = ThisWorkbook.Path & "\"
With Feuil1
x = 1
For i = 0 To 5
If x <> i Then
son = .Range("a" & x).Value
t = Timer + 3: Do Until Timer > t: DoEvents: Loop
x = x + 1
If Application.CanPlaySounds Then
WAVFile = chemin & son & ".wav"
Call PlaySound32(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
Else
Exit Sub
End If
End If
If x = 5 Then Exit For
Next i
End With
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call Joue_Son
Cancel = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 591
Membres
111 208
dernier inscrit
estalavista