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 :

Centrer image sur userform [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut Centrer image sur userform
    Bonjour,

    Sur un classeur, j'affiche en plein écran un userform comportant un contrôle image. Concernant le plein écran, j'ai réussi à trouver un code qui récupère les variables de configuration de l'écran. En revanche, selon l'écran et sa résolution, le contrôle image a tendance à bouger ! Ou plutôt le contraire, lui ne s'adapte pas au changement d'écran. Pensez-vous qu'il soit possible de le centrer sur le userform quelque soit le type d'écran, et si oui, comment ?

    Je tiens à préciser que dans les propriétés de l'image, j'ai déjà placé fmPictureAlignmentCenter et fmPictureSizeModeZoom, mais cela ne résout pas le problème.

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Un code ce ce style à adapter à tes noms (ici c'est les noms par défaut) devrait le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Initialize()
        With Me.Image1
            .Top = (Me.InsideHeight - Me.Image1.Height) / 2
            .Left = (Me.InsideWidth - Me.Image1.Width) / 2
        End With
    End Sub
    Philippe

  3. #3
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Bonjour Philippe,

    Merci pour ta réponse.
    Je viens de tester ton code, malheureusement il ne fonctionne pas du tout.. Je l'ai essayé uniquement sur mon poste pour le moment, et là l'image sur le userform est totalement décalée sur la droite, si bien qu'on ne la voit pas entièrement.

    Au besoin, je peux fournir un fichier exemple pour constater.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Fait voir le code qui te permet de te-dimensioner l'userform..

  5. #5
    Membre éclairé Avatar de m@tix
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 304
    Par défaut
    Bonjour bbil,

    Voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Initialize()
     Dim hWnd As Long, exLong As Long, zFactor As Integer
     
     hWnd = FindWindowA(vbNullString, Me.Caption)
     exLong = GetWindowLongA(hWnd, -16)
     If exLong And &H880000 Then SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
     Me.Width = ScreenWidth * PointsPerPixel
     Me.Height = ScreenHeight * PointsPerPixel
     
     With Me.Image1
        .Top = (Me.InsideHeight - Me.Image1.Height) / 2
        .Left = (Me.InsideWidth - Me.Image1.Width) / 2
     End With
     End Sub
    Et dans un module:

    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
    Private Declare Function GetSystemMetrics Lib "User32" (ByVal nIndex As Long) As Long
    Private Const SM_CXSCREEN = 0 'Screen width
    Private Const SM_CYSCREEN = 1 'Screen height
     
    Private Declare Function GetDC Lib "User32" (ByVal hWnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
    Private Declare Function ReleaseDC Lib "User32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
    '
    Private Const LOGPIXELSX = 88 'Pixels/inch in X
    '
    'A point is defined as 1/72 inches
    Private Const POINTS_PER_INCH As Long = 72
     
    'The width of the screen, in pixels
    Public Function ScreenWidth() As Long
    ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
    End Function
     
    'The height of the screen, in pixels
    Public Function ScreenHeight() As Long
    ScreenHeight = GetSystemMetrics(SM_CYSCREEN)
    End Function
     
    'The size of a pixel, in points
    Public Function PointsPerPixel() As Double
    Dim hDC As Long
    Dim lDotsPerInch As Long
    hDC = GetDC(0)
    lDotsPerInch = GetDeviceCaps(hDC, LOGPIXELSX)
    PointsPerPixel = POINTS_PER_INCH / lDotsPerInch
    ReleaseDC 0, hDC
    End Function

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pas de problème avec ce code ...

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

Discussions similaires

  1. Centrer zoom sur image
    Par Esooo dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 07/04/2009, 23h22
  2. Mettre 2 images sur la même ligne et les centrer par rapport au texte
    Par Lonlie dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 04/07/2008, 14h47
  3. Centrer une image sur la hauteur de la page
    Par koKoTis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 09/01/2008, 20h58
  4. [GD] Centrer texte sur une image
    Par maximenet dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 24/04/2007, 09h48
  5. [VBA-E] Question sur image dans userform ?
    Par damsmut dans le forum Excel
    Réponses: 3
    Dernier message: 04/04/2007, 05h32

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