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 :

Réduire - Agrandir un UserForm


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Réduire - Agrandir un UserForm
    Bonjour à tous,

    Est-ce qu'il existe un moyen de réduire et d'agrandir un UserForm en VBa de la même manière que l'on réduit ou agrandit une fenêtre excel ou word ?
    En utilisant le - ou le carré à droite en haut de la fenêtre.
    J'aimerai pouvoir faire la même chose avec un UserForm.
    Merci par avance

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    Oui : Zoom (à voir dans l'aide excel)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    J'ai trouvé une solution que je vous donne. Je l'ai testée et elle fonctionne

    Dans un module mettre ce 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
    53
    54
    55
    56
    57
    58
    59
     
    Public Declare Function FindWindow& _
        Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName$, ByVal lpWindowName$)
     
    Public Declare Function GetWindowLong& _
        Lib "user32" Alias "GetWindowLongA" _
        (ByVal hwnd&, ByVal nIndex&)
     
    Public Declare Function SetWindowLong& _
        Lib "user32" Alias "SetWindowLongA" _
        (ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&)
     
    Private Declare Function EnableWindow& _
        Lib "user32" _
        (ByVal hwnd&, ByVal fEnable&)
     
    Private Declare Function CallWindowProc& _
        Lib "user32" Alias "CallWindowProcA" _
        (ByVal lpPrevWndFunc&, ByVal hwnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)
     
    Public Const GWL_WNDPROC& = -4&, WM_SYSCOMMAND& = &H112&
     
    Public BaseUFProc&, BaseXLProc&, AncState&
     
    Function UFProc&(ByVal hwnd&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
        Dim HwndXL&
        Const SC_MINIMIZE& = &HF020&
        If uMsg = WM_SYSCOMMAND Then
                If wParam = (SC_MINIMIZE And &HFFF0&) Then
                    HwndXL = FindWindow("XLMAIN", Application.Caption)
                    EnableWindow HwndXL, True
                    UserForm1.Hide
                    AncState = Application.WindowState
                    Application.WindowState = xlMinimized
                    BaseXLProc = SetWindowLong(HwndXL, GWL_WNDPROC, AddressOf XLProc)
                    UFProc = 1&
                    Exit Function
                End If
        End If
        UFProc = CallWindowProc(BaseUFProc, hwnd, uMsg, wParam, lParam)
    End Function
     
     
    Function XLProc&(ByVal hwnd&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
        Const SC_MAXIMIZE& = &HF030&, _
            SC_RESTORE& = &HF120&, SC_CLOSE& = &HF060&
        If uMsg = WM_SYSCOMMAND Then
                If wParam = (SC_MAXIMIZE And &HFFF0&) Or wParam = (SC_RESTORE _
                    And &HFFF0&) Or wParam = SC_CLOSE Then
                    SetWindowLong hwnd, GWL_WNDPROC, BaseXLProc
                    Application.WindowState = AncState
                    UserForm1.Show
                    XLProc = 1&
                    Exit Function
                End If
        End If
        XLProc = CallWindowProc(BaseXLProc, hwnd, uMsg, wParam, lParam)
    End Function
    Dans le module de l'UserForm ce 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
     
    Private HandleUF&
     
    Private Sub UserForm_Initialize()
        Const WS_MAXIMIZEBOX& = &H10000, _
            WS_MINIMIZEBOX& = &H20000, GWL_STYLE& = -16&
        HandleUF = FindWindow(vbNullString, Me.Caption)
        SetWindowLong HandleUF, GWL_STYLE, _
            GetWindowLong(HandleUF, GWL_STYLE) Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX
        BaseUFProc = SetWindowLong(HandleUF, GWL_WNDPROC, BaseUFProc)
    End Sub
     
    Private Sub UserForm_Terminate()
        SetWindowLong HandleUF, GWL_WNDPROC, BaseUFProc
    End Sub
    A bientôt

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

Discussions similaires

  1. Code Réduire / Agrandir format
    Par pourinfo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/06/2010, 11h26
  2. [AC-2003] Réduire agrandire formulaire
    Par lucas-18 dans le forum IHM
    Réponses: 12
    Dernier message: 03/11/2009, 16h00
  3. [XL-2007] reduire l'userform et agrandir l'UserForm
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/10/2009, 18h41
  4. Réponses: 4
    Dernier message: 16/10/2006, 20h24
  5. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02

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