Userform trop grand sur un laptop 15 pouce et passe parfaitement sur un ecran 17

pasquetp

XLDnaute Occasionnel
Bonjour,

j'ai crée un formulaire un peu grand: Userform trop grand sur un laptop 15 pouce et passe parfaitement sur un ecran 17 pource

j'ai mis le code suivant:

With database
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With

auriez vous une idée pour que le userform se mette bien en plein ecran en fonction de la tzille de l'écran?

Merci à tous
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Userform trop grand sur un laptop 15 pouce et passe parfaitement sur un ecran 17

Bonsoir pasquetp, bonsoir Misange :),

J'avais, il a bien longtemps pour mon propre usage, pondu un code pour redimensionner un userform qui faisait à peu de chose près ce que vous désirez. Le but était de se passer des APIs de Windows et de se passer de déclarer ou rechercher la résolution de l'écran. Je fournis le fichier à peu près tel quel avec quelques exemples de redimensionnement (les 3 boutons "option" et le bouton de commande "Taille personnalisée").

Je n'ai pas pu tester le fichier sur deux écrans de tailles différentes mais en changeant la résolution de l’écran, ça fonctionne (chez moi :p) . En redimensionnant à 95% le userform à l'initialisation, ça devrait :confused: le faire (il faut ré-activer l'avant dernière ligne de code de UserForm_Initialize). On pourra aussi jouer sur la constante TailPolice0 en diminuant sa valeur si on, utilise de petites tailles de Userform1.

Il y a du code dans userform1 et des variables publiques déclarées dans Module1. Les procédure les plus fondamentales sont: UserForm_Initialize et UserForm_Resize. Les autres sont des exemples de redimensionnement (plein écran, demi-écran, taille initiale ou taille personnalisée via "un pourcentage de l'écran")

Le codes de ces procédure sont:
VB:
Private Sub UserForm_Initialize()
Dim oldSize
  Larg0 = Me.Width: Haut0 = Me.Height
  Me.Left = (Application.Width - Larg0) / 2
  Me.Top = (Application.Height - Haut0) / 4
  Top0 = Me.Top: Left0 = Me.Left
  LargIni = Me.Width: HautIni = Me.Height
  Me.Top = 0: Me.Left = 0
  oldSize = Application.WindowState
  Application.WindowState = xlMaximized
  Me.Move 0, 0, Application.Width, Application.Height
  LargMax = Me.Width: HautMax = Me.Height
  Application.WindowState = oldSize
  Me.Move Left0, Top0, Larg0, Haut0
'  réactiver la ligne suivante pour passage plein écran à l'ouverture de userform1
'  Me.Move LargMax * (1 - 0.95) / 2, HautMax * (1 - 0.95) / 2, LargMax * 0.95, HautMax * 0.95
End Sub

Private Sub UserForm_Resize()
Dim Ctrl As Control, ratioLarg, ratioHaut
  LargAct = Me.Width: ratioLarg = LargAct / LargIni
  HautAct = Me.Height: ratioHaut = HautAct / HautIni
  
  On Error Resume Next
    For Each Ctrl In Me.Controls
      Ctrl.Top = Ctrl.Top * ratioHaut
      Ctrl.Height = Ctrl.Height * ratioHaut
      Ctrl.Left = Ctrl.Left * ratioLarg
      Ctrl.Width = Ctrl.Width * ratioLarg
      Ctrl.Font.Size = TailPolice0 * (LargAct / Larg0)
    Next Ctrl
  On Error GoTo 0
  LargIni = Me.Width
  HautIni = Me.Height
End Sub

Edit: préférez la version v1a du message #5.
 

Pièces jointes

  • pasquetp-Redim Userform v1.xlsm
    56.2 KB · Affichages: 40
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Userform trop grand sur un laptop 15 pouce et passe parfaitement sur un ecran 17

Bonsoir à tous,

1) une erreur honteuse :mad:: le rapport de la surface finale à la surface initiale étant le produit du rapport de la hauteur finale à la hauteur initiale et du rapport de la largeur finale à la largeur initiale, j'ai corrigé un intitulé du userform1 et un type de formule dans le code.

2) une précision sur l'imprécision: les ratios par rapport à la surface totale de l'écran sont approximatifs (par paresse, je n'ai pas tenu compte des largeurs de bordures autour du userform1)
 

Pièces jointes

  • pasquetp-Redim Userform v1a.xlsm
    56.8 KB · Affichages: 31
Dernière édition:

Statistiques des forums

Discussions
312 082
Messages
2 085 170
Membres
102 805
dernier inscrit
emes