Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Plein ecran par VBA

5 réponses
Avatar
Bolderic
Bonjour,

une fois de plus, je viens vous emmerder sur ce forum parce que je
suis bloqué. Désolé ;-)

voila mon soucis:

actuellement, pour afficher mes UserForms en plein écran, j'utilise
les commandes:
Me.Width = Application.Width
Me.Height = Application.Height

Mais je trouve que c'est pas vraiment génial. Quand je passe par
exemple de 1280 X 1024 à 800 X 600, je "perds" une partie de
l'affichage.

Est-ce que par hasard, quelqu'un saurait comment faire pour que
l'UserForm ainsi que tout ce qu'il contient (boutons, labels,
textBox,...) soit ajusté en fonction de la résolution d'affichage?

Je crois savoir qu'on peut appliquer un "Zoom", mais comment connaitre
la valeur du Zoom à appliquer. Existe-t-il une formule mathématique
fiable pour le calculer en fonction de la résolution?

Merci à tous!



P.S.: pour ceux que ca pourrait interresser, voici comment récupérer
la résolution de l'écran. (comme vous pourrez le constater, ca ne
vient pas de moi)


The following code example returns the current screen video resolution
and displays the information in a message box.

Option Explicit
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex
As Long) As Long

'Constants for GetSystemMetrics

Const SM_CXSCREEN = 0 ' Width of screen
Const SM_CYSCREEN = 1 ' Height of screen


Sub Get_System_Metrics()

Dim XVal As Long, YVal As Long
YVal = GetSystemMetrics(SM_CYSCREEN)
XVal = GetSystemMetrics(SM_CXSCREEN)
MsgBox "Your Screen Resolution is " & XVal & " by " & YVal

End Sub

5 réponses

Avatar
Anacoluthe
Bonjour !

'Bolderic' nous a écrit ...
Est-ce que par hasard, quelqu'un saurait comment faire pour que
l'UserForm ainsi que tout ce qu'il contient (boutons, labels,
textBox,...) soit ajusté en fonction de la résolution d'affichage?


Il faut tout recalculer et retailler : ça peut être très galère selon
les contrôles et objets divers placés sur la feuille. Mieux vaut
concevoir ses UserForms pour la résolution la plus basse prévue et
éviter de vouloir les étirer à tout l'écran.

Anacoluthe
« Même les aveugles de nos jours ont un écran allumé au fond des yeux. »
- Daniel PENNAC

Avatar
Jacques93
Bonjour,
Bonjour,

une fois de plus, je viens vous emmerder sur ce forum parce que je
suis bloqué. Désolé ;-)

voila mon soucis:

actuellement, pour afficher mes UserForms en plein écran, j'utilise
les commandes:
Me.Width = Application.Width
Me.Height = Application.Height

Mais je trouve que c'est pas vraiment génial. Quand je passe par
exemple de 1280 X 1024 à 800 X 600, je "perds" une partie de
l'affichage.

Est-ce que par hasard, quelqu'un saurait comment faire pour que
l'UserForm ainsi que tout ce qu'il contient (boutons, labels,
textBox,...) soit ajusté en fonction de la résolution d'affichage?



[...]

Peux-tu préciser ?
Veux tu détecter un changement de résolution pendant la durée
d'affichage de ton UserForm (ce qui est peu fréquent) ou bien as tu
dessiné ton UserForm pour une résolution de 1280 x 1024?
Ce qui à mon avis ne serait pas une excellente idée.

--
Cordialement,

Jacques.

Avatar
Bolderic
Bonjour,

En fait, j'ai effectivement déssiné l'UserForm d'après la résolution
de mon écran (1280 X 1024). Mais le programme est destiné à être
utilisé sur mon lieu de travail où l'écran est un pauvre 15" avec
résolution 800 X 600. Toutefois, si c'est possible, j'aimerais que
l'affichage de l'UserForm s'adapte à la résolution de l'écran dans la
perspective que d'ici 1 à 2 ans les PC sur mon lieu de travail seront
remplacés et donc si l'écran s'agrandit, la résolution risque elle
aussi d'être augmentée (je suis un peu fainéant, je ne voudrais pas
être obligé à ce moment-là de modifer le programme ;-) )


Merci de l'intéret que vous portez à mon problème.


On Sun, 22 May 2005 16:58:53 +0200, Jacques93
wrote:

Bonjour,
Bonjour,

une fois de plus, je viens vous emmerder sur ce forum parce que je
suis bloqué. Désolé ;-)

voila mon soucis:

actuellement, pour afficher mes UserForms en plein écran, j'utilise
les commandes:
Me.Width = Application.Width
Me.Height = Application.Height

Mais je trouve que c'est pas vraiment génial. Quand je passe par
exemple de 1280 X 1024 à 800 X 600, je "perds" une partie de
l'affichage.

Est-ce que par hasard, quelqu'un saurait comment faire pour que
l'UserForm ainsi que tout ce qu'il contient (boutons, labels,
textBox,...) soit ajusté en fonction de la résolution d'affichage?



[...]

Peux-tu préciser ?
Veux tu détecter un changement de résolution pendant la durée
d'affichage de ton UserForm (ce qui est peu fréquent) ou bien as tu
dessiné ton UserForm pour une résolution de 1280 x 1024?
Ce qui à mon avis ne serait pas une excellente idée.



Avatar
Jacques93
Bonjour,
Bonjour,

En fait, j'ai effectivement déssiné l'UserForm d'après la résolution
de mon écran (1280 X 1024). Mais le programme est destiné à être
utilisé sur mon lieu de travail où l'écran est un pauvre 15" avec
résolution 800 X 600. Toutefois, si c'est possible, j'aimerais que
l'affichage de l'UserForm s'adapte à la résolution de l'écran dans la
perspective que d'ici 1 à 2 ans les PC sur mon lieu de travail seront
remplacés et donc si l'écran s'agrandit, la résolution risque elle
aussi d'être augmentée (je suis un peu fainéant, je ne voudrais pas
être obligé à ce moment-là de modifer le programme ;-) )



Afin d'éviter les complications indiquées par Anacoluthe
(redimensionnemnt et repositionnement des contrôles sur ton UserForm en
fonction de la résolution écran), Jettes un coup d'oeil sur le composant
Di6AutoScroll.ocx, il peut peut être te dépanner. A tester (Je l'ai
utilisé avec VB6 pas avec VBA)


http://www.delbeke.fr/informatique/

dans la rubrique 'Freeware VB6'.

Bonne chance.
--
Cordialement,

Jacques.

Avatar
Bolderic
Merci à Anacoluthe et Jacques93 pour leur aide précieuse.


J'ai encore trouvé une autre solution qui pourra peut être intéresser
les lecteurs de ce forum.
Ce n'est pas de moi et je ne garantis pas le résultat :-)


'Thierry's Macro Demo sur www.Excel-Downloads 10/11/2002
'================================================================================== 'Code Function pour l'API inclu dans MS-Office... Inutile de le
chercher sur le net !!
'VOIR / Program File / Microsoft Office / Office / Sample /SAMPLES.XLS
'Je conseille à tout le monde de le regarder, il y a plein de chose à
apprendre...
'pour une fois que Microsoft fait un cadeau, profitez-en !!! :-)
Thierry
'================================================================================== Option Explicit
Private Declare Function GetSystemMetrics Lib "user32" (ByVal
nIndex As Long) As Long
'Constantes utilisées par GetSystemMetrics
Const SM_CXSCREEN = 0 ' Largeur de l'écran
Const SM_CYSCREEN = 1 ' Hauteur de l'écran

Public Sub Taille()
Dim XVal As Long, YVal As Long
Dim Resolution As String
Dim ZoomZoom As Integer
YVal = GetSystemMetrics(SM_CYSCREEN)
XVal = GetSystemMetrics(SM_CXSCREEN)
Resolution = XVal & " x " & YVal
On Error GoTo Message

If Resolution = "1280 x 1024" Then ZoomZoom = 170
If Resolution = "1280 x 960" Then ZoomZoom = 160
If Resolution = "1280 x 768" Then ZoomZoom = 130
' If Resolution = "XXXX x XXX" Then ZoomZoom = ?? <= Si votre
résolution est non prévue...
If Resolution = "1280 x 720" Then ZoomZoom = 120
If Resolution = "1152 x 864" Then ZoomZoom = 80
If Resolution = "1024 x 768" Then ZoomZoom = 120
If Resolution = "800 x 600" Then ZoomZoom = 100
If Resolution = "640 x 480" Then ZoomZoom = 80
With Pageaccueil
.Zoom = ZoomZoom
End With
Pageaccueil.Show
Exit Sub
Message:
MsgBox "Votre écran a une résolution non prévue de " & XVal & " par "
& YVal & _
Chr(10) & "Mo