Dimension Userform

Dimension Userform - VB/VBA/VBS - Programmation

Marsh Posté le 22-04-2009 à 15:37:45    


Bonjour,
 
Suite à mon précédent sujet, j'ai créé un fichier Excel qui doit être utilisé en tant qu'interface graphique.  
Je souhaite que l'userform apparaisse dès le démarrage en plein écran, jusqu'à ce que l'utilisateur clique sur un bouton, ce qui ferme le fichier de démarrage et en lance un autre.
 
J'utilise pour cela le code suivant :  
 
 

Code :
  1. Sub UserForm_Activate()
  2.     With UserForm1
  3.         .StartUpPosition = 3
  4.         .Width = Application.Width
  5.         .Height = Application.Height
  6.         .Left = 0
  7.         .Top = 0
  8.         UserForm1.Show
  9.     End With
  10. End Sub


 
J'ai deux problèmes que je n'arrive pas à résoudre :
 

  • L'Userform prend les dimensions qu'avait Excel lorsqu'il a été fermé la dernière fois, càd que si l'on ferme Excel lorsqu'il ne prend qu'un quart de l'écran, l'userform s'affichera sur un quart d'écran.
  • Lorsque ce problème là ne se pose pas, l'UserForm est parfois trop grand selon l'ordinateur sur lequel on lance le fichier.


J'ai essayé de trouver des solutions à ces deux problèmes mais sans succès, si l'un de vous a une piste, merci d'avance  ;)  

Reply

Marsh Posté le 22-04-2009 à 15:37:45   

Reply

Marsh Posté le 09-07-2009 à 11:39:27    

Un peu de déterrage, avec activewindow.width et activewindow.height ça fonctionne pas mieux ?


---------------
Instagram - Mon PVT en Australie.
Reply

Marsh Posté le 09-07-2009 à 11:43:33    

Edit : Le jeudi tout est permis.
 
Donc en fait j'ai c/c à l'arrache le code suivant :
 

Code :
  1. '****************************************************************************************
  2. '*                                                                                      *
  3. '*    Procédure pour l'Affichages des différents Userform en mode plein écran.          *
  4. '*                                                                                      *
  5. '****************************************************************************************
  6. Public Type RECT
  7.         Left As Long
  8.         Top As Long
  9.         Right As Long
  10.         Bottom As Long
  11. End Type
  12. Const GWL_STYLE = (-16)
  13. Const WS_CAPTION = &HC00000
  14. Const SWP_FRAMECHANGED = &H20
  15. Public Declare Function FindWindowA Lib "user32" _
  16.         (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  17.        
  18. Public Declare Function GetWindowRect Lib "user32" _
  19.         (ByVal hwnd As Long, lpRect As RECT) As Long
  20.        
  21. Public Declare Function GetWindowLong Lib "user32" Alias _
  22.         "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
  23. Public Declare Function SetWindowLong Lib "user32" Alias _
  24.         "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, _
  25.         ByVal dwNewLong As Long) As Long
  26. Public Declare Function SetWindowPos Lib "user32" _
  27.         (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, _
  28.         ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _
  29.         ByVal wFlags As Long) As Long
  30. Private Declare Function GetSystemMetrics Lib "user32" _
  31. (ByVal nIndex As Long) As Long
  32. Private Const SM_CXSCREEN = 0 'Screen width
  33. Private Const SM_CYSCREEN = 1 'Screen height
  34. Private Declare Function GetDC Lib "user32" _
  35. (ByVal hwnd As Long) As Long
  36. Private Declare Function GetDeviceCaps Lib "gdi32" _
  37. (ByVal hDC As Long, ByVal nIndex As Long) As Long
  38. Private Declare Function ReleaseDC Lib "user32" _
  39. (ByVal hwnd As Long, ByVal hDC As Long) As Long
  40. Private Const LOGPIXELSX = 88 'Pixels/inch in X
  41. Private Const POINTS_PER_INCH As Long = 72
  42. Public Function ScreenWidth() As Long
  43. ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
  44. End Function
  45. Public Function ScreenHeight() As Long
  46. ScreenHeight = GetSystemMetrics(SM_CYSCREEN)
  47. End Function
  48. Public Function PointsPerPixel() As Double
  49. Dim hDC As Long
  50. Dim lDotsPerInch As Long
  51. hDC = GetDC(0)
  52. lDotsPerInch = GetDeviceCaps(hDC, LOGPIXELSX)
  53. PointsPerPixel = POINTS_PER_INCH / lDotsPerInch
  54. ReleaseDC 0, hDC
  55. End Function


 
Et j'ai utilisé :
 

Code :
  1. .Width = ScreenWidth * PointsPerPixel
  2. .Height = ScreenHeight * PointsPerPixel


 
C'est pas beau mais ça marche.


Message édité par Rondoudoudou le 09-07-2009 à 11:46:21

---------------
Ctplm !
Reply

Marsh Posté le 16-07-2009 à 22:27:11    

Ha ouai [:pingouino]


---------------
Instagram - Mon PVT en Australie.
Reply

Sujets relatifs:

Leave a Replay

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