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 à trois réponses personnalisables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mai 2020
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Mai 2020
    Messages : 12
    Par défaut MsgBox à trois réponses personnalisables
    Bonjour,
    je me permets de revenir vers vous pour une question sur l'utilisation des MsgBox.
    J'utilisais une fonction que j'avais trouvé sur Internet et qui fonctionnait bien pour l'affichage de msgbox à deux réponses ou trois avec un bouton annuler.
    cependant je suis à la recherche d'une solution permettant de pouvoir personnaliser l'ensemble des boutons proposés.



    Ci après mon code actuel ou je veux modifier true dans msgboxperso en "+20ans"
    Merci de votre aide par avance.
    bon après midi

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Sub Boite de dialogue
    Dim MonMessage As String
    Dim Rep As Byte
     
        MonMessage = "Quel age as tu?" & vbLf & vbLf & "Cet article vous a-t'il plu ?"
     
        Rep = MsgBoxPerso(MonMessage, "mDF XLpages.com", vbQuestion, "-10ans ", "entre 10 et 20ans", true)
     
        Select Case Rep
        Case 0
            ' ici le traitement (éventuel) si Annulation
            ' ...
        Case 1
            ' ici le traitement si réponse = "-10ans !"
            ' ...
        Case 2
            ' ici le traitement si réponse = "Entre 10 et 20ans"
            ' ...
        End Select
     
     
    end sub 
     
     
     
     
    Option Explicit
     
    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)
     
    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
     
    Private 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

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    J'aurais utilisé un simple formulaire Excel qui me donnerait un résultat simple à gérer via un bouton "Confirmer" qui lance une procédure:
    Nom : UserForm.jpg
Affichages : 343
Taille : 12,1 Ko

Discussions similaires

  1. [Outlook] Réponse personnalisée
    Par senacle dans le forum Outlook
    Réponses: 4
    Dernier message: 29/06/2018, 16h56
  2. [Mathematica] La FAQ Mathematica et ses vingt-trois réponses
    Par dourouc05 dans le forum Mathematica
    Réponses: 1
    Dernier message: 29/06/2012, 16h45
  3. Réponses: 1
    Dernier message: 20/06/2007, 17h07
  4. Personnaliser le Msgbox
    Par mouloudéen dans le forum Access
    Réponses: 9
    Dernier message: 30/07/2006, 09h45
  5. Ou retrouver dans la FAQ pour personnaliser MsgBox ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 1
    Dernier message: 25/10/2005, 10h58

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