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 :

Minimiser userform par bouton


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut Minimiser userform par bouton
    Salut le forum !!!

    Je viens de découvrir sur le forum comment il était possible d'ajouter les boutons maximiser et minimiser sur une userform.

    Maintenant, ce que je souhaiterai programmer c'est le fait de pouvoir minimizer une userform non modal après un click sur un bouton de commande de cette même userform.

    Est ce possible???

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Je n'ai pas Excel sous la main en ce moment....

    Si personne n'a du plus simple à te proposer, je te propose donc ceci :

    Tout en haut de ta page de 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
    Option Explicit
    Private Type POINTAPI
      x As Long
      y As Long
    End Type
    Private Type RECT
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
    End Type
    Private Type WINDOWPLACEMENT
      Length As Long
      flags As Long
      showCmd As Long
      ptMinPosition As POINTAPI
      ptMaxPosition As POINTAPI
      rcNormalPosition As RECT
    End Type
    Private Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Et dans l'évènement click de ton bouton de commande :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim WP As WINDOWPLACEMENT, pp As POINTAPI, monhwnd As Long
      monhwnd = FindWindow(vbNullString, Me.Caption)
      pp.x = 0: pp.y = 0
      With WP
        .Length = Len(WP): .showCmd = 6
        .ptMinPosition = pp: .ptMaxPosition = pp
      End With
      SetWindowPlacement monhwnd, WP
    Voilà ...

  3. #3
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    plus simple, il y a la FAQ :

    http://excel.developpez.com/faq/?pag...uctionUserForm

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut
    Salut cafeine !

    J'ai parcouru la FAQ, et malheureusement je n'arrive pas à trouver ce que je cherche.Voici le code que j'utilise et qui me permet de créer l'icône réduire en haut à droite de ma Userform.
    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
    Private Declare Function FindWindowA& Lib "User32" (ByVal lpClassName$, ByVal lpWindowName$)
    Private Declare Function EnableWindow& Lib "User32" (ByVal Hwnd&, ByVal bEnable&)
    Private Declare Function GetWindowLongA& Lib "User32" (ByVal Hwnd&, ByVal nIndex&)
    Private Declare Function SetWindowLongA& Lib "User32" (ByVal Hwnd&, ByVal nIndex&, ByVal dwNewLong&)
    Dim Hwnd As Long
     
    Private Sub UserForm_Initialize()
     
    Hwnd = FindWindowA(vbNullString, Me.Caption)
    SetWindowLongA Hwnd, -16, GetWindowLongA(Hwnd, -16) Or &H20000
     
    end sub
     
    Private Sub UserForm_Activate()
     
    Hwnd = FindWindowA("XLMAIN", Application.Caption)
    EnableWindow Hwnd, 1
     
    End Sub
     
    Private Sub CmdProjets_Click()
     
    'Ici placer le code réduisant ma userform !!
    Workbooks.Open Filename:="R:\Projets.xlsx"
    Workbooks("Projets.xlsx").Activate
     
    End Sub
    Ce que je ne sais pas faire c'est interagir sur ce code pour que lorsque que je click sur CmdProjets_Click de cette même userform celle-ci se réduise en bas de mon écran, pour que l'utilisateur est l'écran totalement disponible...


  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut
    ucfoutu!

    Je viens d'essayer le code que tu m'as proposé, et ma userform ce réduit bien en bas à droite de mon écran dès que je click sur mon bouton.

    Seul problème, quand je désire la réagrandir elle disparaît de mon écran???

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Ouais....

    Tu as raison.
    Il va nous falloir alors "faire un inventaire des leiux", dès l'ouverture... et y revenir au besoin.

    Ainsi :
    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
     
    Private Type POINTAPI
            x As Long
            y As Long
    End Type
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
    Private Type WINDOWPLACEMENT
            Length As Long
            flags As Long
            showCmd As Long
            ptMinPosition As POINTAPI
            ptMaxPosition As POINTAPI
            rcNormalPosition As RECT
    End Type
    Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
    Private Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Dim commeorig As RECT, monhwnd As Long
     
    Private Sub UserForm_Initialize()
        Dim WP As WINDOWPLACEMENT
        Dim R As Long
        WP.Length = Len(WP)
        monhwnd = FindWindow(vbNullString, Me.Caption)
        GetWindowPlacement monhwnd, WP
        commeorig = WP.rcNormalPosition
    End Sub
     
    Private Sub Command1_Click()
        Dim WP As WINDOWPLACEMENT
        Dim p As POINTAPI
        p.x = 100
        p.y = 100
        WP.Length = Len(WP)
        WP.showCmd = 6
        WP.ptMinPosition = p
        WP.ptMaxPosition = p
        WP.rcNormalPosition = commeorig
        SetWindowPlacement monhwnd, WP
    End Sub
    Attention :
    1) ne "complète" pas mais écrase tout (plusieurs modifs ...)
    2) je n'ai pas pu essayer avec Excel (pas sous la main)...

    Dis-moi....

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

Discussions similaires

  1. [XL-2007] Ajouter un bouton dans un userform par macro
    Par mimidodo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2015, 13h31
  2. Ouverture de userform par clic sur un bouton de formulaire
    Par karlgina dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/06/2011, 19h29
  3. ajout par bouton
    Par shinrei dans le forum ASP
    Réponses: 7
    Dernier message: 02/06/2006, 12h25
  4. Tri d'une zone de liste par bouton
    Par illight dans le forum Access
    Réponses: 7
    Dernier message: 09/11/2005, 19h39
  5. [VB.NET] ouverture d'une DataGrid par bouton
    Par breizhou dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/04/2005, 18h08

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