Microsoft 365 lire .wav en 32 ou 64bits VBA

youky(BJ)

XLDnaute Barbatruc
Bonjour tous,
Lire les fichiers .wav selon les versions
Avant en 32bits je déclarais ceci qui fonctionnait

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 Declare Function GetShortPathName Lib "kernel32" Alias _
"GetShortPathNameA" (ByVal lpszLongPath As String _
, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Private Song As String
----------------------------------------------------------------------
pour passer en 64bits j'ai ceci qui fonctionne en 64bits
#If VBA7 Then
Declare PtrSafe Function PlaySound Lib "winmm.dll" (ByVal pszsound As String, ByVal hmod As Long, ByVal fdwsound As Long) As Long
#Else
'ici ca passe pas en 32 bits, je ne sais pas quoi mettre, l'ancien code bug
'Declare Function PlaySound Lib "winmm.dll" (ByVal pszsound As String, ByVal hmod As Long, ByVal 'fdwsound As Long) As Long
#End If
----------------------------------------------------------------------
Sub woot()
PlaySound ThisWorkbook.Path & "\woot", 0, 1
End Sub

Si besoin d'un fichier
Lien du chargement du fichier Poker sur xld
Je souhaite mettre le son quel que soit les bits
Bruno
 

patricktoulon

XLDnaute Barbatruc
bonsoir
celle ci devrait fonctionner sur 32/64 bits sans déclaration
VB:
'-------------------------------------------------------------------------------------------------------------------
'FONCTION POUR JOUER UN SON WAVE
'patricktoulon
'extrait collection api  en macro 4 episode 4
Sub joueBeepWAVEWindows1()    'le dernier argument pour asyncro ou syncro
    Dim MonWav As String
    MonWav = "C:\Windows\Media\Windows Exclamation.wav"     '... chemin et nom à adapter
    ExecuteExcel4Macro ("CALL(""winmm"",""PlaySoundA"",""JCJJ"",""" & MonWav & """, " & 0 & "," & &H1 & ")")
End Sub
 

patricktoulon

XLDnaute Barbatruc
re @youky(BJ)
et oui c'est l'avantage de se servir des api en macro 4
la remarque de @bhbh n'est pas anodine
c'est vrai sur 2021 il faut cocher l'autorisation pour certaine api comme GDI par exemple

cela dit c'est un bon compromis quand on galère avec les déclarations 64 bits
de plus avec declaration le module charge les fonctions et variable afférentes en memoire
en macro4 elle consomme légèrement plus en action mais sont vidé après exécution
rien ne reste en mémoire
alors pour certaines api c'est pas simple surtout pour celle qui ont des argument de type structure
mais pour le long, string et variant c'est hyper simple

dans les ressource j'ai commencé une serie episodes (1,2,3,4) sous forme de fichiers si ça vous intéresse
voilà vous savez tout
 

matlatarte

XLDnaute Junior
Bonjour, j'aimerai faire la même chose mais avec 2 ou x fichiers sons lancés en même temps ou non. Est ce possible ? Dans le cas actuel, le lancement d'un autre son arrête celui déjà lancé. J'aimerai (à minima) qu'à chaque bouton cliqué par exemple cela lance un nouveau son sans arrêter les autres... Une idée ?
 

Discussions similaires

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400