voici un exemple à copier dans un module standard, remplace le fichier
.wav «Son Jungle question.wav» par celui de ton choix
Declare Function sndPlaySoundA Lib "Winmm.dll" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Sub LeSON()
sndPlaySoundA "C:\Windows\Media\Son Jungle question.wav", 1
End Sub
en espérant avoir pu t'aider.
cordialement
isabelle
Jean-Charles a écrit :
> Comment puis-je faire jouer un son (autre que Beep) dans
> Excel sur lévénement <Worksheet_Change> ???
--
en espérant avoir pu t'aider.
cordialement
isabelle
De rien (Ca aussi c'est plus sympa !)
Cordialement
Pascal
"Jean-Charles" <jcharles...@wanadoo.fr> a écrit dans le message de
news: 82a301c28be0$c690f8c0$3aef2ecf@TKMSFTNGXA09...
Dim ret As Long, mp3file As String
Private Declare Function mciSendString Lib "winmm.dll"
Alias "mciSendStringA" (ByVal lpstrCommand As String,
ByVal lpstrReturnString As String, ByVal uReturnLength As
Long, ByVal hwndCallback As Long) As Long
Private Sub Form_Load()
mp3file = "c:\xxx.mp3"
ret = mciSendString("OPEN " & mp3file & " Alias Sonido",
0, 0, 0) 'ouvre
ret = mciSendString("Play sonido", 0, 0, 0) 'Joue
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode
As Integer)
ret = mciSendString("Stop sonido", 0, 0, 0) 'Pause (si on
fait lecture ca reprendra la)
ret = mciSendString("Close sonido", 0, 0, 0) 'Arret (si on
fait lecture ca recommence au debut)
End Sub
@+
>-----Message d'origine-----
>Comment puis-je faire jouer un son (autre que Beep) dans
>Excel sur lévénement <Worksheet_Change> ???
>.
>
Private Declare Function midiOutClose Lib "winmm.dll" _
(ByVal hMidiOut As Long) As Long
'-------------------------------
Private Declare Function midiOutOpen Lib "winmm.dll" _
(lphMidiOut As Long, _
ByVal uDeviceID As Long, _
ByVal dwCallback As Long, _
ByVal dwInstance As Long, _
ByVal dwFlags As Long) As Long
'-------------------------------
Private Declare Function midiOutShortMsg Lib "winmm.dll" _
(ByVal hMidiOut As Long, _
ByVal dwMsg As Long) As Long
'---------------------------------------------------
Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As
Long)
Dim hMidiOut As Long
Public note As long
'-------------------------------
Sub notesmidi()
For i = 32 To 96
note = RGB(144, i, 127)
'si aucun son emis : incrémenter le 1er 0 ci-dessous
midiOutOpen hMidiOut, 0, 0, 0, 0
midiOutShortMsg hMidiOut, note
Sleep (200) ' durée entre notes
Next
midiOutClose hMidiOut
End Sub
G&D
@+
>-----Message d'origine-----
>Comment puis-je faire jouer un son (autre que Beep) dans
>Excel sur lévénement <Worksheet_Change> ???
>.
>
"Modeste" <Gee...@mSIXnet.fr> a écrit dans le message de news:
246b01c28c00$5b5d3940$39ef2ecf@TKMSFTNGXA08...
;-))))
Ouuupsssss,
mea culpa laurent.....
c'est en effet un tiré à part d'un programme en cours de
développement,
il manque une clause :
midiOutClose hMidiOut
en sortie de proc apres la boucle for..next
NB : incrémenter le 1er parametre 0 sert dans le cas ou
plusieurs Devices Midi sont présents sur la machine.
l'auto detection sera intégrée dans mes prochains
travaux...
@+
>-----Message d'origine-----
>super,
>le roi de l'api
>j'ai un petit problème : comment réactiver le son,
>car lorsque je l'ai fait marcher une fois,
>plus rien ne sort, même en incrémentant le 0.
>Si je quitte Excel et que je le rouvre, ça remarche.
>Sinon, ça ouvre des perspectives pianistiques ça:-)))
>Amicalement
>Sitting Hoax
>"Modeste" <Gee...@mSIXnet.fr> a écrit dans le message de
news:
>aa6501c28bf1$35d9f190$35ef2ecf@TKMSFTNGXA11...
>.
>
NB : incrémenter le 1er parametre 0 sert dans le cas ou
plusieurs Devices Midi sont présents sur la machine.
l'auto detection sera intégrée dans mes prochains
travaux...
@+
>-----Message d'origine-----
>.
>
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Misange" <nospam-...@free.fr> a écrit dans le message de news:
uf#PWUAjCHA.1860@tkmsftngp09...
Private Declare Function midiOutOpen Lib "winmm.dll" _
(lphMidiOut As Long, _
ByVal uDeviceID As Long, _
ByVal dwCallback As Long, _
ByVal dwInstance As Long, _
ByVal dwFlags As Long) As Long
Private Declare Function midiOutShortMsg Lib "winmm.dll" _
(ByVal hMidiOut As Long, _
ByVal dwMsg As Long) As Long
Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)
Dim hMidiOut As Long
Public lanote As Integer
Public Const durée As Integer = 250 ' millisecondes'
Sub Au_clair_de_la_lune()
numéro = 0
notes_a_jouer = Array(51, 51, 51, 53, 55, 53, 51, 55, 53, 53, 51, _
51, 51, 51, 53, 55, 53, 51, 55, 53, 53, 51, _
53, 53, 53, 53, 48, 48, 53, 51, 50, 48, 46, _
51, 51, 51, 53, 55, 53, 51, 55, 53, 53, 51)
For Each noteG In notes_a_jouer
numéro = numéro + 1
dur_n = Array(300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600, _
300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600, _
300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600, _
300, 300, 300, 300, 600, 600, 300, 300, 300, 300, 600)
Temps = dur_n(numéro - 1)
On Error GoTo fin
midiOutClose hMidiOut '------------- ferme le port midi pour arreter la
note précédente
midiOutOpen hMidiOut, 0, 0, 0, 0 ' ----------------ouvre le port pour
la nouvelle note
midiOutShortMsg hMidiOut, RGB(192, 54 - 1, 127) 'ici, le nombre 51 peut
être changé
'par un nombre de 1 à 128
lanote = 12 + CInt(noteG) ' -----on calcule la note / l'octave
note = RGB(144, lanote, 127) '-----------------------astuce pour generer
un entier long
midiOutShortMsg hMidiOut, note ' --------------------on envoie la note
sur le port MIDI
Sleep (Temps)
fin:
midiOutClose hMidiOut
Next
End Sub
***************************
Amicalement
Sitting Hoax
"Modeste" <Gee...@mSIXnet.fr> a écrit dans le message de news:
246b01c28c00$5b5d3940$39ef2ecf@TKMSFTNGXA08...
midiOutShortMsg hMidiOut, RGB(192, Int(Rnd * 128) - 1, 127) 'ici, le
nombre 51 peut être changé
'par un nombre de 1 à 128
lanote = 12 + CInt(noteG) ' -----on calcule la note / l'octave
note = RGB(144, lanote, 127) '-----------------------astuce pour generer
un entier long
midiOutShortMsg hMidiOut, note ' --------------------on envoie la note
sur le port MIDI
lanote = 12 + CInt(noteG - 4) ' -----on calcule la note / l'octave
note = RGB(144, lanote, 127) '-----------------------astuce pour generer
un entier long
midiOutShortMsg hMidiOut, note ' --------------------on envoie la note
sur le port MIDI
lanote = 12 + CInt(noteG + Int(Rnd * 20))
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
midiOutShortMsg hMidiOut, RGB(192, Int(Rnd * 128) - 1, 127)
lanote = 12 + CInt(noteG)
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
lanote = 12 + CInt(noteG - Int(Rnd * 20))
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
lanote = 12 + CInt(noteG + Int(Rnd * 20))
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
midiOutShortMsg hMidiOut, RGB(192, Int(Rnd * 128) - 1, 127)
lanote = 12 + CInt(noteG)
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
lanote = 12 + CInt(noteG - Int(Rnd * 20))
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
lanote = 12 + CInt(noteG + Int(Rnd * 20))
note = RGB(144, lanote, 127)
midiOutShortMsg hMidiOut, note
Sleep (Temps)
midiOutClose hMidiOut
Next
End Sub
******************************
Amicalement
Sitting Hoax
"Philippe.Raulet" <A_S_r...@wanadoo.fr> a écrit dans le message de news:
evO$8#bjCHA.2008@tkmsftngp08...
--
Amicales Salutations
A_S_r...@wanadoo.fr
Ôter A_S_ pour répondre.
Qui cherche trouve et qui demande reçoit !
XL97 / XL2002
"Sitting Hoax" <Laurent...@wanadoo.fr> a écrit dans le message de news:
eCykVdyjCHA.2736@tkmsftngp10...
Sub Il_a_très_bien_chanté()
'adapté d'une macro de Modeste et Sitting Hoax
numéro = 0
'il a très bien chanté,bu-vons à
sa san-té, bu-vons,
notes_a_jouer = Array(60, 60, 60, 57, 53, 55, 60, 60, 60, 57, 53, 55, 48,
53, _
53, 55, 57, 58, 60, 55, 62, 60, 57, 57, 55, 53)
'bu-vons, à sa san-té, bu-vons à sa san-té
For Each noteG In notes_a_jouer
numéro = numéro + 1
dur_n = Array(500, 800, 300, 300, 500, 500, 600, 800, 300, 600, 650, _
1200, 800, 700, 1000, 1100, 900, 800, 700, 1000, 1000, 800, 400, 400, 500,
1000)
Temps = dur_n(numéro - 1)
On Error Resume Next
midiOutClose hMidiOut '--------ferme le port midi pour arreter la note
précédente
midiOutOpen hMidiOut, 0, 0, 0, 0 ' -----------ouvre le port pour la
nouvelle note
midiOutShortMsg hMidiOut, RGB(192, 57 - 1, 127) 'ici, le nombre 51 peut
être changé
'par un nombre de 1 à 128
lanote = 12 + CInt(noteG) ' -----on calcule la note / l'octave
note = RGB(144, lanote, 127) '-----astuce pour generer un entier long
midiOutShortMsg hMidiOut, note ' -----on envoie la note sur le port MIDI
Sleep (Temps)
midiOutClose hMidiOut
Next
End Sub
--
Amicalement
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Sitting Hoax" <Laurent...@wanadoo.fr> a écrit dans le message de news:
uS21U0WjCHA.1652@tkmsftngp09...