IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

MsgBox Perso aide pour 64 bits [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Par défaut MsgBox Perso aide pour 64 bits
    Bonjour,

    Me revoilà, cela fait quelques semaines que je n'avais pas de question pour vous !

    J'ai récupéré un code sur un autre forum pour créer une Msgbox personnalisé, or ce code ne fonctionne pas sur le 64bits, j'ai essayé de chercher sur les différents forums et ainsi faire par moi-même mais sans succès. Je demande donc votre aide.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #If Win64 Then
        Private Declare PtrSafe Function SetWindowsHookEx& Lib "USER32" Alias "SetWindowsHookExA" _
            (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&)
        Private Declare PtrSafe Function GetCurrentThreadId& Lib "kernel32" ()
        Private Declare PtrSafe Function CallNextHookEx& Lib "USER32" _
                (ByVal hHook&, ByVal CodeNo&, ByVal wParam&, ByVal lParam&)
        Private Declare PtrSafe Function GetWindow& Lib "USER32" (ByVal hWnd&, ByVal wCmd&)
        Private Declare PtrSafe Function SetWindowText& Lib "USER32" Alias "SetWindowTextA" _
                (ByVal hWnd&, ByVal lpString$)
        Private Declare PtrSafe Function UnhookWindowsHookEx& Lib "USER32" (ByVal hHook&)
        Private msgHook&
        Private TitreBtn$(1 To 2)
    #Else
        Private Declare Function SetWindowsHookEx& Lib "USER32" Alias "SetWindowsHookExA" _
            (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&)
        Private Declare Function GetCurrentThreadId& Lib "kernel32" ()
        Private Declare Function CallNextHookEx& Lib "USER32" _
                (ByVal hHook&, ByVal CodeNo&, ByVal wParam&, ByVal lParam&)
        Private Declare Function GetWindow& Lib "USER32" (ByVal hWnd&, ByVal wCmd&)
        Private Declare Function SetWindowText& Lib "USER32" Alias "SetWindowTextA" _
                (ByVal hWnd&, ByVal lpString$)
        Private Declare Function UnhookWindowsHookEx& Lib "USER32" (ByVal hHook&)
        Private msgHook&
        Private TitreBtn$(1 To 2)
    #End If
     
    Function MsgBoxPerso(Prompt$, Optional Title$, Optional Icon&, Optional Caption1$ = "Oui", _
        Optional Caption2$ = "Non", Optional Cancel As Boolean = False) As Byte
    Dim Rep%, hInstance&
        TitreBtn(1) = Caption1
        TitreBtn(2) = Caption2
        msgHook = SetWindowsHookEx(5, AddressOf CaptionBoutons, hInstance, GetCurrentThreadId())
        Rep = MsgBox(Prompt, Icon + IIf(Cancel, vbYesNoCancel, vbYesNo), Title)
        MsgBoxPerso = Application.Max(Rep - 5, 0)
        Erase TitreBtn
    End Function
     
    Function CaptionBoutons&(ByVal nCode&, ByVal wParam&, ByVal lParam&)
    Dim hWndChild&
      If nCode < 0 Then
        CaptionBoutons = CallNextHookEx(msgHook, nCode, wParam, lParam)
        Exit Function
      End If
      If nCode = 5 Then
        hWndChild = GetWindow(wParam, 5)
        Call SetWindowText(hWndChild, TitreBtn(1))
        hWndChild = GetWindow(hWndChild, 2)
        Call SetWindowText(hWndChild, TitreBtn(2))
        UnhookWindowsHookEx msgHook
      End If
      CaptionBoutons = False
    End Function
    Merci par avance pour le temps que vous m'accorderez.

    Bonne journée.

    Antoine.

  2. #2

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Par défaut
    Citation Envoyé par laurent_ott Voir le message
    Bonjour Laurent,

    Non, mais cela ne propose que pour la version 32 bit, ça ne fonctionne pas sur une version d'excel 64 bit

    Merci par avance.

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Il y a ça qui ressemble, mais avec plus de fonctionnalités et compatible 64 bits :
    https://arkham46.developpez.com/arti...sgboxplus/doc/
    (même lien que le pdf précédent mais là c'est le lien vers l'article)

    Ou sinon vous faites vos propres boîtes de dialogue avec des UserForms :
    https://arkham46.developpez.com/arti...serformdialog/

    Je préconise la deuxième solution à base de UserForms, comme ça vous maîtriser tout.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 11
    Par défaut
    Bonjour Arkham,

    J'ai bien vu tout le bon travail que tu fais, mais je cherche à passer par cet msgbox personnalisé.

    Je sais que je suis peut être dans l'abus mais personne n'est capable de passer ce code pour du 64bit ? en sachant que chez moi ça plante sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddressOf CaptionBoutons
    Il y a sans doute autre chose qui ne passe pas par la suite... je ne sais pas.

    Merci par avance de votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. aide pour configurer serveur de messagerie perso
    Par adrien239 dans le forum Windows 7
    Réponses: 0
    Dernier message: 08/12/2013, 19h25
  2. Aide pour la Conception d'un site perso
    Par rch05 dans le forum Débuter
    Réponses: 10
    Dernier message: 18/09/2013, 14h28
  3. Aide pour un MsgBox OUI/NON
    Par CLASSIQUE dans le forum IHM
    Réponses: 2
    Dernier message: 01/05/2013, 16h37
  4. Besoin d'aide pour la texture d'un perso 3D (3Dsmax)
    Par dedyyy dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 04/01/2008, 17h11
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo