Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jouer un son dans Excel 2000

26 views
Skip to first unread message

Jean-Charles

unread,
Nov 14, 2002, 8:21:44 AM11/14/02
to
Comment puis-je faire jouer un son (autre que Beep) dans
Excel sur lévénement <Worksheet_Change> ???

isabelle

unread,
Nov 14, 2002, 8:59:27 AM11/14/02
to
Bonjour Jean Charles,

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


Papou

unread,
Nov 14, 2002, 9:07:40 AM11/14/02
to
Bonjou (c'est beaucoup plus sympa) Jean-Charles
1 - Code à placer dans un module standard (ici pour jouer du WAV - mais il
existe aussi une possibilité avec du MID) :
Public Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal ipszsoundname As String, ByVal uflags As Long)
As Long
Sub PlayWavFile(WavFileName As String)
If Dir(WavFileName) = "" Then Exit Sub
sndPlaySound WavFileName, 0
End Sub
2 - Dans ton Worksheet_Change intégrer (chemin d'accès à modifier):
PlayWavFile "D:\Mes Documents\Pascal\Sons\Toons\kikidi2.wav"

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...

Modeste

unread,
Nov 14, 2002, 10:10:51 AM11/14/02
to
Bonjour,
aussi :

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> ???

>.
>

Modeste

unread,
Nov 14, 2002, 10:19:22 AM11/14/02
to
Bonjour,
primeur pour EXCEL
embryon de développement en cours !!!

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> ???

>.
>

Misange

unread,
Nov 14, 2002, 12:45:29 PM11/14/02
to
Et voilà !
c'est malin,
en bal perso il me fait miroiter sa belle macro (j'ai pas dit autre
chose... faites gaffe, la fourche est de sortie) il me dit qu'il m'en
réserve la primeur pour disciplus et puis quand même, il cède à l'envie de
parader avec sur MPFE alors qu'elle est même pas au point. Ah là là. Quelle
déplorable façon de déflorer le sujet.
Bien que n'étant pas chirogourdiste, je n'aurai qu'un mot : pfffft
--
Misange migrateuse http://disciplus.simplex.free.fr

"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...

>.
>


Sitting Hoax

unread,
Nov 14, 2002, 11:10:09 AM11/14/02
to
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...

Modeste

unread,
Nov 14, 2002, 12:07:48 PM11/14/02
to
;-))))
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-----

>.
>

Jean-François Aubert

unread,
Nov 14, 2002, 4:14:50 PM11/14/02
to
C'est bizzare... moi je vois déjà dans le 1er message de Modeste cette
ligne...
C'est comme à l'école, quand on copie, il faut copier juste...

--
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...

Sitting Hoax

unread,
Nov 16, 2002, 7:38:35 AM11/16/02
to
Merci Geedee,
voici une variante intéressante de ta macro.
à coller dans un module, ça joue "au clair de la lune":-))
******************

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 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...

Philippe.Raulet

unread,
Nov 16, 2002, 5:30:21 PM11/16/02
to
Bonsoir les Mpfien(ne)s,
Vous êtes trop géniaux, je vous adore !
(Et j'archive la zizique)
--
Parimorvandennaises 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:
uS21U0WjCHA.1652@tkmsftngp09...

Sitting Hoax

unread,
Nov 18, 2002, 12:24:19 PM11/18/02
to
Tiens, puisque tu as l'air d'aimer,
voici une autre musique qui résume à peu près
ce qui se passe sous nos cafetières quand on bricole :-))
ça ressemble vaguement à la marche triomphale de Geedee.
**********
Sub solitude_du_créateur()
numéro = 0
notes_a_jouer = Array(30, 35, 120, 37, 30, 37, 39, 39, 39, _
39, 40, 35, 39, 37, 35, 120, 37, 39, 39, 37, 35, 120, 37, _
39, 39, 37, 39, 39, 35, 37, 37, 120, 30, 35, 120, 37, 30, _
37, 39, 39, 39, 39, 40, 35, 39, 37, 35, 120, 37, 39, 39, 37, _
35, 120, 37, 39, 39, 37, 39, 39, 37, 39, 37, 35)

For Each noteG In notes_a_jouer
numéro = numéro + 1
dur_n = Array(400, 1200, 200, 200, 200, 200, 700, 800, _
800, 200, 200, 200, 1000, 300, 1000, 200, 500, 200, 500, _
300, 800, 200, 500, 300, 800, 500, 300, 800, 500, 300, _
1000, 200, 400, 1200, 200, 200, 200, 200, 700, 800, 800, _
200, 200, 200, 1000, 300, 1000, 200, 500, 200, 500, 300, _
800, 200, 500, 300, 800, 500, 300, 800, 300, 300, 300, 1500)

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, 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...

Philippe.Raulet

unread,
Nov 18, 2002, 6:12:21 PM11/18/02
to
Merci Laurent :o))

--
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...

Jean-François Aubert

unread,
Nov 18, 2002, 6:49:17 PM11/18/02
to
Et une dernière pour la fin de soirée:
(il y a plus de canards dans ma mélodie que dans toutes les fermes réunies
du Sud-Ouest)

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...

0 new messages