Problème de compilation 32-64 bits

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 !

Re : Problème de compilation 32-64 bits

Bonjour,

Peut être une piste en utilisant une compilation conditionnelle comme dans le code suivant

Code:
#If VBA7 Then
  Private Declare PtrSafe Function SetWindowPos Lib "User32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As LongPtr
  
  Private Declare PtrSafe Function FindWindowA Lib "User32" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
  Private Declare Function SetWindowPos Lib "User32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long
  
  Private Declare Function FindWindowA Lib "User32" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

Merci de me dire si cela fonctionne en 32 bits comme en 64 bits.
 
Re : Problème de compilation 32-64 bits

Je te remercie, je n'ai plus l'erreur, mais quand, la macro se lance, sa ne marche pas avec la suite de la macro (texte en jaune).
Pour rappel, cette macro à pour but d'afficher un USERFORM après x minute.

Code:
#If VBA7 Then
  Private Declare PtrSafe Function SetWindowPos Lib "User32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As LongPtr
 
  Private Declare PtrSafe Function FindWindowA Lib "User32" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
  Private Declare Function SetWindowPos Lib "User32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long
 
  Private Declare Function FindWindowA Lib "User32" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

Private Sub UserForm_Initialize()
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), _
    -1, 0, 0, 0, 0, 3
End Sub

http://images.imagehotel.net/?cqcvho600i.jpg

Merci d'avance
 
Re : Problème de compilation 32-64 bits

Je suis sous 32 bits et ne peux, par conséquent, faire aucun test probant sur 64 bits.

Essayez de remplacer le code précédent par
Code:
#If VBA7 Then
  Declare PtrSafe Function SetWindowPos Lib "user32" Alias "SetWindowPos" _
  (ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _
  ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long

  Declare PtrSafe Function FindWindowA Lib "user32" Alias "FindWindowA" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
  Private Declare Function SetWindowPos Lib "User32" _
  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
  ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
  ByVal cy As Long, ByVal wFlags As Long) As Long
  
  Private Declare Function FindWindowA Lib "User32" _
  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If
 
- 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
10
Affichages
373
Réponses
6
Affichages
303
Retour