OVH Cloud OVH Cloud

Beep... ok, mais...

4 réponses
Avatar
Sabian
Salut...

J'ai une question sur la mot Beep...
Si le je mets dans mon code 15x, il va beeper 15x...

Maintenant je voudais savoir si je peux changer le son du=20
Beep, sans aller le changer par d=E9faut dans les propri=E9t=E9s=20
de Windows...

On pourrait pas mettre un son en wav dans un dossier, avec=20
lequel on donnerait le chemin dans une variable (p.ex.=20
VarSound) et que l'on puisse mettre dans le code VBA un=20
truc du style:
Beep(VarSound) ou Beep =3D VarSound...

merci pour votre aide...

Sabian

4 réponses

Avatar
Modeste
Bonjour,

comme ça !!!!

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

Sub MonBeep()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail:
PlaySound "C:WINDOWSMEDIATADA.WAV", 0, 0
'----- le dernier parametre 0 ou 1 pour permettre
l'interruption (1) ou pas (0) par le son suivant
PlaySound "C:WINDOWSMEDIASon Utopia sortie de
Windows.wav", 0, 1

End Sub

@+

-----Message d'origine-----
Salut...

J'ai une question sur la mot Beep...
Si le je mets dans mon code 15x, il va beeper 15x...

Maintenant je voudais savoir si je peux changer le son du
Beep, sans aller le changer par défaut dans les
propriétés

de Windows...

On pourrait pas mettre un son en wav dans un dossier,
avec

lequel on donnerait le chemin dans une variable (p.ex.
VarSound) et que l'on puisse mettre dans le code VBA un
truc du style:
Beep(VarSound) ou Beep = VarSound...

merci pour votre aide...

Sabian
.



Avatar
Sabian
Merci pour ce code, mais la ligne
Alias "PlaySoundA" jusqu'à As Long reste en rouge...

Comment faire ?

Merci

-----Message d'origine-----
Bonjour,

comme ça !!!!

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

Sub MonBeep()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail:
PlaySound "C:WINDOWSMEDIATADA.WAV", 0, 0
'----- le dernier parametre 0 ou 1 pour permettre
l'interruption (1) ou pas (0) par le son suivant
PlaySound "C:WINDOWSMEDIASon Utopia sortie de
Windows.wav", 0, 1

End Sub

@+

-----Message d'origine-----
Salut...

J'ai une question sur la mot Beep...
Si le je mets dans mon code 15x, il va beeper 15x...

Maintenant je voudais savoir si je peux changer le son
du


Beep, sans aller le changer par défaut dans les
propriétés

de Windows...

On pourrait pas mettre un son en wav dans un dossier,
avec

lequel on donnerait le chemin dans une variable (p.ex.
VarSound) et que l'on puisse mettre dans le code VBA un
truc du style:
Beep(VarSound) ou Beep = VarSound...

merci pour votre aide...

Sabian
.

.





Avatar
Modeste
Bonsoir,
arghhh....
*%£$?!..... CDO

ces trois lignes n'en font qu'une !!!
de Declare... à.. As Long

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

@+



-----Message d'origine-----
Merci pour ce code, mais la ligne
Alias "PlaySoundA" jusqu'à As Long reste en rouge...

Comment faire ?

Merci

-----Message d'origine-----
Bonjour,

comme ça !!!!

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

Sub MonBeep()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail:
PlaySound "C:WINDOWSMEDIATADA.WAV", 0, 0
'----- le dernier parametre 0 ou 1 pour permettre
l'interruption (1) ou pas (0) par le son suivant
PlaySound "C:WINDOWSMEDIASon Utopia sortie de
Windows.wav", 0, 1

End Sub

@+

-----Message d'origine-----
Salut...

J'ai une question sur la mot Beep...
Si le je mets dans mon code 15x, il va beeper 15x...

Maintenant je voudais savoir si je peux changer le son
du


Beep, sans aller le changer par défaut dans les
propriétés

de Windows...

On pourrait pas mettre un son en wav dans un dossier,
avec

lequel on donnerait le chemin dans une variable (p.ex.
VarSound) et que l'on puisse mettre dans le code VBA un
truc du style:
Beep(VarSound) ou Beep = VarSound...

merci pour votre aide...

Sabian
.

.


.






Avatar
Michel Pierron
Bonjour Modeste;
Pour aller plus loin, on peut aussi construire le wav dans la procédure;
pour simplifier, on part sur 16bits et Stéréo.

Private Declare Function PlaySoundMemory Lib "winmm.dll" Alias "PlaySoundA"
_
(ptrMemory As Any, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SampleRate As Long = 44100
Private WaveTable() As Byte

Sub AuClairDeLaLune()
WavStop
WavBuildHeader ' Fixed Data
Dim Frequency As Double, i As Byte, During As Single
For i = 1 To 11
Frequency = Choose(i, 900, 900, 900, 975, 1080, 975, 900, 1080, 975,
975, 900)
SineWave Frequency, 0.5, 0.5
WavPlay
During = Timer
While Timer < During + 0.5: DoEvents: Wend
WavStop
Next i
End Sub

Private Sub WavStop()
PlaySoundMemory ByVal 0&, ByVal 0&, &H40 Or &H2
End Sub

Private Sub WavPlay()
PlaySoundMemory WaveTable(1), ByVal 0&, &H4 Or &H80 Or &H1 Or &H8 Or &H2
End Sub

Private Sub WavBuildHeader()
Dim lngBytesASec As Long, i As Byte, y As Byte, DataValue As Long
lngBytesASec = SampleRate * 4
ReDim WaveTable(1 To 44)
For i = 1 To 4 ' RIFF
WaveTable(i) = Choose(i, 82, 73, 70, 70)
Next i
For i = 9 To 17 ' WAVEfmt.
WaveTable(i) = Choose(i - 8, 87, 65, 86, 69, 102, 109, 116, 32, 16)
Next i
For i = 18 To 24
WaveTable(i) = Choose(i - 17, 0, 0, 0, 1, 0, 2, 0)
Next i
For i = 25 To 32
If i > 28 Then DataValue = lngBytesASec Else DataValue = SampleRate
WaveTable(i) = ExtractByte(DataValue, y)
If i = 28 Then y = 0 Else y = y + 1
Next i
For i = 33 To 40 ' data
WaveTable(i) = Choose(i - 32, 4, 0, 16, 0, 100, 97, 116, 97)
Next i
End Sub

Private Sub SineWave(Frequency As Double, VolumeL As Double, VolumeR As
Double)
Dim DataL As Long, DataR As Long
Dim DataPoint As Double, Positive As Boolean
Dim Cycles As Integer, CycleCount As Integer
Dim FileSize As Long, Samples As Long
Dim DataSize As Long, WaveTime As Double
Dim TotalTime As Double, SampleTime As Double
Dim DataSlice As Double, i As Long
If Frequency > 1000 Then Cycles = 100 Else Cycles = 10
WaveTime = 1 / Frequency
TotalTime = WaveTime * Cycles
SampleTime = 1 / CDbl(SampleRate)
DataSlice = 8# * Atn(1#) / (WaveTime / SampleTime)
Positive = True
Do
DataPoint = Sin(Samples * DataSlice)
If Samples > 0 Then
If DataPoint < 0 Then
Positive = False
Else
If Not Positive Then ' Detect Zero Crossing
CycleCount = CycleCount + 1
If CycleCount >= Cycles Then Exit Do
Positive = True
End If
End If
End If
Samples = Samples + 1
Loop
DataSize = Samples * 4
ReDim Preserve WaveTable(1 To 44 + DataSize)
' Bytes 05 - 08 Total Length to Follow (Length of File - 8)
FileSize = DataSize + 36
WaveTable(5) = ExtractByte(FileSize, 0)
WaveTable(6) = ExtractByte(FileSize, 1)
WaveTable(7) = ExtractByte(FileSize, 2)
WaveTable(8) = ExtractByte(FileSize, 3)
' Bytes 41 - 44 Length of Data Samples * Channels * Bits per Sample / 8
WaveTable(41) = ExtractByte(DataSize, 0)
WaveTable(42) = ExtractByte(DataSize, 1)
WaveTable(43) = ExtractByte(DataSize, 2)
' Bytes 44 - End Data Samples
WaveTable(44) = ExtractByte(DataSize, 3)
For i = 0 To Samples - 1
' 16 Bit Data (Calculate data point)
DataPoint = Sin(i * DataSlice) * 32767
DataL = Int(DataPoint * VolumeL)
DataR = Int(DataPoint * VolumeR)
' Place data point in wave tile.
WaveTable((4 * i) + 45) = ExtractByte(DataL, 0)
WaveTable((4 * i) + 46) = ExtractByte(DataL, 1)
WaveTable((4 * i) + 47) = ExtractByte(DataR, 0)
WaveTable((4 * i) + 48) = ExtractByte(DataR, 1)
Next
End Sub

Private Function ExtractByte(Word As Long, ByVal iPos As Byte) As Byte
Dim lngTemp As Long, intByte As Integer
If iPos = 3 Then ' Byte 2
lngTemp = Word
' Mask off byte and shift right 24 bits.
' Mask -> 2130706432 = &H7F000000 & Shift -> Divide by 16777216
lngTemp = (lngTemp And 2130706432) / 16777216
intByte = lngTemp
ElseIf iPos = 2 Then ' Byte 2
lngTemp = Word
' Mask off byte and shift right 16 bits.
' Mask -> 16711680 = &HFF0000 & Shift -> Divide by 65536
lngTemp = (lngTemp And 16711680) / 65536
intByte = lngTemp
ElseIf iPos = 1 Then ' Byte 1
lngTemp = Word
' Mask off high byte and shift right 8 bits.
' Mask -> 65290 = &HFF00 & Shift -> Divide by 256
lngTemp = (lngTemp And 65290) / 256
intByte = lngTemp
Else ' Byte 0
intByte = Word And &HFF
End If
ExtractByte = intByte
End Function

MP

"Modeste" a écrit dans le message de
news:0a6201c3aa9e$5e0caeb0$
Bonjour,

comme ça !!!!

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

Sub MonBeep()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail:
PlaySound "C:WINDOWSMEDIATADA.WAV", 0, 0
'----- le dernier parametre 0 ou 1 pour permettre
l'interruption (1) ou pas (0) par le son suivant
PlaySound "C:WINDOWSMEDIASon Utopia sortie de
Windows.wav", 0, 1

End Sub

@+

-----Message d'origine-----
Salut...

J'ai une question sur la mot Beep...
Si le je mets dans mon code 15x, il va beeper 15x...

Maintenant je voudais savoir si je peux changer le son du
Beep, sans aller le changer par défaut dans les
propriétés

de Windows...

On pourrait pas mettre un son en wav dans un dossier,
avec

lequel on donnerait le chemin dans une variable (p.ex.
VarSound) et que l'on puisse mettre dans le code VBA un
truc du style:
Beep(VarSound) ou Beep = VarSound...

merci pour votre aide...

Sabian
.