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

  • Initiateur de la discussion Initiateur de la discussion roybaf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
46
Affichages
2 K
Réponses
7
Affichages
1 K
Réponses
6
Affichages
2 K
Réponses
7
Affichages
24 K
Compte Supprimé 979
C
Retour