pb compatibilité 32-64 bits pour executer une macro(résolu)

roybaf

XLDnaute Occasionnel
Bonjour à tous,

Je souhaite jouer une musique au démarage d'excel mais le problème est que les macros que je trouve utilisennt des API qui sont uniquement disponibles dans la version 32 bits et moi j'ai la 64.

voila le code

Code:
Option Explicit
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_PURGE = &H40 'Stop la lecture du fichier
Private Sub Workbook_Open()
   Call PlaySound(ThisWorkbook.Path & "\nom de ton fichier.wav", 0&, &H1 Or &H20000)
    Randomize
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    PlaySound vbNullString, ByVal 0&, SND_PURGE
End Sub


Merci à vous
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : pb compatibilité 32-64 bits pour executer une macro

Bonjour,
Il ne faut pas mettre les Declare Function dans le ThisWorkbook mais dans un Module.
Ci-joint un exemple qui fonctionne en Windowd 7 64bits et Excel 2010

Bon amusement :)
Robert
 

Pièces jointes

  • Excel-Jouer WAV.zip
    76.4 KB · Affichages: 86
  • Excel-Jouer WAV.zip
    76.4 KB · Affichages: 82
  • Excel-Jouer WAV.zip
    76.4 KB · Affichages: 80

MichD

XLDnaute Impliqué
Re : pb compatibilité 32-64 bits pour executer une macro

Bonjour Herdet,

Selon Microsoft, la déclaration de l'API devrait être ceci pour les versions 64 bits:

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

À cette adresse, on peut télécharger un petit fichier qui énonce
chacun des API version 64 bits.


Je suppose que l'on pourrait utiliser ceci dans le module : Une compilation conditionnelle

VB:
#If VBA7 And Win64 Then
    Declare PtrSafe Function PlaySound Lib "winmm.dll" _
    Alias "PlaySoundA" (ByVal lpszName As String, _
    ByVal hModule As LongPtr, ByVal dwFlags As Long) As Long
#Else
    Declare Function PlaySound Lib "winmm.dll" _
      Alias "PlaySoundA" (ByVal lpszName As String, _
      ByVal hModule As Long, ByVal dwFlags As Long) As Long
#End If

Évidemment, je n'ai pas testé ça pour toutes les versions d'Excel...

MichD
--------------------------------------------------
 

Pièces jointes

  • Win32API_PtrSafe.TXT
    676 KB · Affichages: 518

roybaf

XLDnaute Occasionnel
Re : pb compatibilité 32-64 bits pour executer une macro

bonjour Herdet, david 84...

Le fichier de Herdet ne tourne pas sur ma version excel 2010 64bits. Ton excel 2010 doit être en 32bits.

Merci quand même je vais creser ac ce que m'a donné david 84

merci