Afficher un userform en plein écran et ajuster les controls

Afficher un userform en plein écran et ajuster les controls - VB/VBA/VBS - Programmation

Marsh Posté le 07-01-2011 à 10:03:22    

Bonjour le forum,
 
Voilà j'ai une question à propos des Userform. Voilà j'ai créer une petite application en vba sur Excel avec 4 userforms. Le problème c'est que mon application va servir à différents utilisteurs qui n'ont pas la même taille d'écran.
 
Je voudrai mettre mon Userform en plein écran et ajuster tout mes controls en fonction de la taille du Userform.
 
J'ai commencer un code mais je n'arrive pas à ajuster mes controls quelqu'un pourrait m'aider en me donnant une piste SVP?
 
Voila mon code (feuille1 étant le nom de mon userform)
 
Private Sub UserForm_Initialize()
 
Dim oldH As Double, oldL As Double, appH As Double, appL As Double
Dim echH As Long, echV As Long
Dim ctr As Control
 
feuille1.Width = Application.Width
feuille1.Height = Application.Height
 
 
oldH = feuille1.Height: oldL = feuille1.Width
appH = Application.Height - 5: appL = Application.Width - 10
echH = appL / oldL: echV = appH / oldH
feuille1.Height = appH
feuille1.Width = appL
 
For Each ctr In feuille1.Controls
    ctr.Left = echH * ctr.Left
    ctr.Width = echH * ctr.Width
    ctr.Top = echV * ctr.Top
Next ctr
 
End Sub

Reply

Marsh Posté le 07-01-2011 à 10:03:22   

Reply

Marsh Posté le 07-01-2011 à 10:31:18    

Bien j'ai trouvé ma réponse  :bounce:  
pour ceux que ça intéresse :
 
Private Sub Userform_Initialize()
Dim ctl As Control
Dim ratow As String
Dim ratioh As String
 
ratiow = Application.Width / Me.Width
ratioh = Application.Height / Me.Height
Me.Left = 0
Me.Top = 0
Me.Width = Application.Width
Me.Height = Application.Height
For Each ctl In Me.Controls
  ctl.Left = ctl.Left * ratiow
  ctl.Top = ctl.Top * ratioh
  ctl.Width = ctl.Width * ratiow
  ctl.Height = ctl.Height * ratioh
  ctl.FontSize = ctl.FontSize * ratioh
NextEnd Sub

Reply

Marsh Posté le 07-01-2011 à 11:04:40    

Oups!
 
J'ai une nouvelle question, le code fonctionne très bien mais j'ai un problème :
   
   Excel me fait une erreur d'execution "438", erreur de methode ou proprité non géré par cet objet! :-( en fait, j'initialise mon application avec Userform1.Combobox.Clear et quand VBA passe dessus il initialise le Userform1 ou 2... et n'avance plus dans le code en affichant ce message d'erreur!! Comment faire? je suis obligé d'initialiser.
 
Quelqu'un peut m'aider?
 
Merci.

Reply

Marsh Posté le 11-01-2011 à 13:56:11    

>>j'initialise mon application avec Userform1.Combobox.Clear
et avec Userform1.Combobox1.Clear?

Reply

Marsh Posté le 28-02-2015 à 10:39:59    

aidevba a écrit :


Private Sub Userform_Initialize()
Dim ctl As Control
Dim ratow As String
Dim ratioh As String
 
ratiow = Application.Width / Me.Width
ratioh = Application.Height / Me.Height
Me.Left = 0
Me.Top = 0
Me.Width = Application.Width
Me.Height = Application.Height
For Each ctl In Me.Controls
  ctl.Left = ctl.Left * ratiow
  ctl.Top = ctl.Top * ratioh
  ctl.Width = ctl.Width * ratiow
  ctl.Height = ctl.Height * ratioh
  ctl.FontSize = ctl.FontSize * ratioh
NextEnd Sub


 
Bonjour,
le Pb vient de   ctl.FontSize = ctl.FontSize * ratioh  
a remplacer par :   ctl.Font.Size = ctl.Font.Size * ratioh  
Un peu tard certainement, mis le code vient de m'aider
Cdt


---------------
Jebi
Reply

Marsh Posté le 13-08-2019 à 15:30:43    

Bonjour,
 
j'ai également la même problématique soit comment passer un Userform en plein écran (à ajuster donc selon les écrans des utilisateurs).
Mon Userform contient une image avec des labels et quand j'applique ce code sur une macro qui ouvre mon Userform
 
Sub Bouton2_Cliquer()
Dim ctl As Control
Dim ratow As String
Dim ratioh As String
ratiow = Application.Width / UserForm1.Width
ratioh = Application.Height / UserForm1.Height
UserForm1.Left = 0
UserForm1.Top = 0
UserForm1.Width = Application.Width
UserForm1.Height = Application.Height
UserForm1.Show
End Sub
 
J'ai bien mon userform qui passe en plein écran mais mes labels ou image dessus reste à leur taille et place d'origine.
 
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed