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 :

Macro pour afficher un formulaire sur la deuxième écran [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Macro pour afficher un formulaire sur la deuxième écran
    Bonjour à tous.
    J'ai créer un fichier pour saisir les résultats des matchs de box et il y a un formulaire form1 pour afficher les résultats au public en cliquant sur un boutton. Mais j'un problème:
    Je peux pas créer la macro permétant d'afficher le formulaire sur la deuxième écran et pas sur la première où je fais la saisie

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le formulaire se positionne automatiquement sur l'écran qui héberge la fenêtre du VBE. On peut paramétrer sa position de départ sur ledit écran, mais pas le placer sur un autre écran

    A mon avis, sans API, je ne pense pas que cela soit possible. Ce n'est pas mon domaine d'expertise

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Merci pour votre réponse

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    Bonjour,

    La position d'un UserForm peut être fixée par exemple de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Activate()
        Me.Top = 100
        Me.Left = 1100
    End Sub
    .Left = 0 et .Top = 0 correspond au coin supérieur gauche de l'écran principal.
    .Left sera négatif si l'écran secondaire est à gauche de l'écran principal.

    Bonne continuation.
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 182
    Points : 5 514
    Points
    5 514
    Par défaut
    et une version améliorée, avec fonction "maximiser" et "réduire" le formulaire, inspiré de ce post: VBA - Minimize/maximize a 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
    28
    29
    30
    31
    32
    33
    34
    35
    '--- dans un module:
    Option Explicit
     
    '--- https://ccm.net/faq/27876-vba-minimize-maximize-a-userform
     
    Public Declare Function FindWindowA& Lib "User32" (ByVal lpClassName$, ByVal lpWindowName$)
    Public Declare Function GetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&)
    Public Declare Function SetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
     
    ' Déclaration des constantes
    Public Const GWL_STYLE As Long = -16
    Public Const WS_MINIMIZEBOX = &H20000
    Public Const WS_MAXIMIZEBOX = &H10000
    Public Const WS_FULLSIZING = &H70000
     
    'Attention, envoyer après changement du caption de l'UF
    Public Sub InitMaxMin(mCaption As String, _
                          Optional Max As Boolean = True, _
                          Optional Min As Boolean = True, _
                          Optional Sizing As Boolean = True)
        Dim hWnd As Long
        hWnd = FindWindowA(vbNullString, mCaption)
        If Min Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_MINIMIZEBOX
        If Max Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_MAXIMIZEBOX
        If Sizing Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_FULLSIZING
    End Sub
     
    Sub Voir()
        UserForm1.Show
    End Sub
     
    '--- dans le code du formulaire UserForm
    Private Sub UserForm_Initialize()
        InitMaxMin Me.Caption
    End Sub
    Bonne continuation.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Merci bcp
    Citation Envoyé par EricDgn Voir le message
    et une version améliorée, avec fonction "maximiser" et "réduire" le formulaire, inspiré de ce post: VBA - Minimize/maximize a 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
    28
    29
    30
    31
    32
    33
    34
    35
    '--- dans un module:
    Option Explicit
     
    '--- https://ccm.net/faq/27876-vba-minimize-maximize-a-userform
     
    Public Declare Function FindWindowA& Lib "User32" (ByVal lpClassName$, ByVal lpWindowName$)
    Public Declare Function GetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&)
    Public Declare Function SetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
     
    ' Déclaration des constantes
    Public Const GWL_STYLE As Long = -16
    Public Const WS_MINIMIZEBOX = &H20000
    Public Const WS_MAXIMIZEBOX = &H10000
    Public Const WS_FULLSIZING = &H70000
     
    'Attention, envoyer après changement du caption de l'UF
    Public Sub InitMaxMin(mCaption As String, _
                          Optional Max As Boolean = True, _
                          Optional Min As Boolean = True, _
                          Optional Sizing As Boolean = True)
        Dim hWnd As Long
        hWnd = FindWindowA(vbNullString, mCaption)
        If Min Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_MINIMIZEBOX
        If Max Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_MAXIMIZEBOX
        If Sizing Then SetWindowLongA hWnd, GWL_STYLE, GetWindowLongA(hWnd, GWL_STYLE) Or WS_FULLSIZING
    End Sub
     
    Sub Voir()
        UserForm1.Show
    End Sub
     
    '--- dans le code du formulaire UserForm
    Private Sub UserForm_Initialize()
        InitMaxMin Me.Caption
    End Sub
    Bonne continuation.

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

Discussions similaires

  1. Afficher une TForm sur le deuxième écran
    Par NGeVtC87 dans le forum Delphi
    Réponses: 4
    Dernier message: 12/07/2019, 09h01
  2. Réponses: 1
    Dernier message: 12/04/2015, 17h07
  3. [XL-2010] Macro pour afficher Excel en grand sur 2 écrans
    Par apnw7931 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2014, 21h51
  4. [AC-2010] Macro commande pour envoyer un formulaire sur Word
    Par emilie27 dans le forum IHM
    Réponses: 21
    Dernier message: 16/04/2012, 16h53
  5. Comment afficher une form sur le deuxième écran
    Par saidm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 16/04/2008, 23h38

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