XL 2019 Msgbox personnalisé en 64 bits - aide

thespeedy20

XLDnaute Occasionnel
Bonjour,

J'ai récupéré ce code sur un autre site( Mdf xlpages), j'ai un modifié les api....pour qu'il fonctionne en 64 bits
La personnalisation se passe bien sauf pour les deux boutons, il laisse oui et Non...

Pouvez-me donner un petit coup de main

Merci d'avance

Oli
 

Pièces jointes

  • Bouton.xlsm
    28.4 KB · Affichages: 6
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

La personnalisation se passe bien sauf pour les deux boutons, il laisse oui et Non...

Ce qui semble tout à fait normal si on s'en tient à l'avertissement dispensé à la source
Remarques importantes !
Curieusement, les tests de cette procédure à base d'API Windows ne fonctionnent pas lorsqu'on lance le code directement depuis l'éditeur VBE. Dans ce cas, les boutons afficheront invariablement leur valeur par défaut (c'est à dire "Oui" et "Non").
Il convient donc de lancer vos tests depuis l'interface Excel (comme le fera l'utilisateur de votre projet) et non depuis l'éditeur de code VBA.
 

Staple1600

XLDnaute Barbatruc
Re

Issu de mes archives anglophones
Testé sur Excel32bits W10 64bits
VB:
Option Explicit
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
 
Private Declare Function SetDlgItemText Lib "user32" _
    Alias "SetDlgItemTextA" _
    (ByVal hDlg As Long, _
     ByVal nIDDlgItem As Long, _
     ByVal lpString As String) As Long
 
Private Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, _
     ByVal lpfn As Long, _
     ByVal hmod As Long, _
     ByVal dwThreadId As Long) As Long
 
Private Declare Function UnhookWindowsHookEx Lib "user32" _
    (ByVal hHook As Long) As Long
 
Private hHook As Long
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5
' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7
 
Public Sub CustomMsgBox()
    ' Set Hook
    hHook = SetWindowsHookEx(WH_CBT, _
                             AddressOf MsgBoxHookProc, _
                             0, _
                             GetCurrentThreadId)
    ' Run MessageBox
    MsgBox "C'est une boîte de Message", vbYesNo, "API mumuse"
End Sub
 
Private Function MsgBoxHookProc(ByVal lMsg As Long, _
                                ByVal wParam As Long, _
                                ByVal lParam As Long) As Long
    If lMsg = HCBT_ACTIVATE Then
        SetDlgItemText wParam, IDYES, "Umma"
        SetDlgItemText wParam, IDNO, "Gumma ;-)"
        ' Release the Hook
        UnhookWindowsHookEx hHook
    End If
    MsgBoxHookProc = False
End Function
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972