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 :

ADapter un formulaire à la résolution de l'écran.


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 16
    Points
    16
    Par défaut ADapter un formulaire à la résolution de l'écran.
    Bonjour,
    je développe une appli Excel avec des formulaires. Mon écran est en 1280 X 1024. Anticipant les autres résolutions possibles, mes formulaires ne dépassaient pas en taille 800 X 600. Par exemple il y en a un qui fait 700 X 580.
    Or, quand je passe mon écran en 800 X 600, mon formulaire est beaucoup plus grand que l'écran.. Je ne comprends pas pourquoi, il est sensé être plus petit, non ?

    Quelle est mon erreur ? Quelle est l'unité des formulaires, les pixels ?

  2. #2
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 39
    Points : 41
    Points
    41
    Par défaut
    Bonsoir,
    J'ai le même problème.
    Après avoir fureté sur google, j'ai trouvé une petite option qui calcule un coefficient "zoom"
    Il ne faut pas oublier d'appeler des bibliothèques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public Declare Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
    'Definition variables Affichage
    Const GWL_STYLE = (-16), GWL_EXSTYLE = (-20), WS_SIZEBOX = &H40000, WS_TROIS_BOUTON = &H70000, WS_EX_APPWINDOW = &H40000
    Public l(), h(), F(), p(), s() As String, wLong As Long, hWnd As Long, I, c As Control, la As Long, ha As Long
    Public user As Object
    D'abord le module Config_Ecran
    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
    '   Recupere la configuration actuelle de l ecran
    Sub CaptureConfig()
    I = 0: ha = user.Height: la = user.Width
    For Each c In user.Controls
        I = I + 1
        ReDim Preserve l(I): l(I) = c.Width
        ReDim Preserve h(I): h(I) = c.Height
        ReDim Preserve p(I): p(I) = c.Top
        ReDim Preserve F(I): F(I) = c.Left
        ReDim Preserve s(I): s(I) = c.Width / c.Font.Size
     Next
    hWnd = FindWindow(vbNullString, user.Caption)
    wLong = GetWindowLongA(hWnd, GWL_STYLE) Or WS_SIZEBOX Or_ WS_TROIS_BOUTON
    SetWindowLong hWnd, GWL_STYLE, wLong
    End Sub
    '   Calcule le facteur necessaire pour le zoom
    Sub ZoomControles()
    On Error Resume Next
    I = 0
    For Each c In user.Controls
        I = I + 1
        c.Width = user.Width / (la / l(I))
        c.Height = user.Height / (ha / h(I))
        c.Left = user.Width / (la / F(I))
        c.Top = user.Height / (ha / p(I))
        c.Font.Size = c.Width / s(I)
    Next
    End Sub
    '   Teste la definition de l image (en pixel)
    Sub DefinitionImage()
    If GetSystemMetrics(0) > 800 Or GetSystemMetrics(1) > 800 Then  _ ShowWindow hWnd, 3
    End Sub
    ensuite, rajoute dans ton userform:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub UserForm_Activate()
    DefinitionImage
    End Sub
     
    Private Sub UserForm_Resize()
    ZoomControles
    End Sub
     
    Private Sub UserForm_Initialize()
    Set user = Me: CaptureConfig
    'la suite de ton code
    En espérant que cela t'aide. Par contre, je ne me souviens plus du site...

    Que l'on me corrige si je me suis trompé. Mais cela fonctionne sur Excel 2003

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Points : 16
    Points
    16
    Par défaut
    super, merci pour ta réponse !

  4. #4
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 39
    Points : 41
    Points
    41
    Par défaut
    Mais de rien. Essaye pour voir si cela fonctionne sur d'autre version d'Excel (>2003).

Discussions similaires

  1. [AC-2007] Adapter les formulaires à la résolution de l'écran
    Par Triton972 dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/05/2011, 20h16
  2. adaptation du formulaire à la taille de l'écran
    Par Jeje_031 dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/08/2008, 08h28
  3. Réponses: 0
    Dernier message: 14/02/2008, 13h52
  4. Adapter page suivant la résolution de l'écran
    Par sandykoala dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/02/2007, 17h41
  5. adapter un formulaire à toutes les tailles d'écran
    Par arnogef dans le forum Access
    Réponses: 3
    Dernier message: 09/01/2006, 11h01

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