Dimensionner et ajuster un Userform

ValentinLF

XLDnaute Nouveau
Bonjour,

Petit problème que je n'arrive pas à résoudre :confused:
J'ai un Userform qui à une taille de 840 * 595, qui est approximativement une feuille A4.

J'aimerais dans un premier temps (Question peut être bête..) comprendre les unités inscrite lors du dimensionnement des éléments dans les propriétés. Est-il possible de les comparer à des centimètres par exemple ?

Dans un second temps, mon userform actuellement dimensionné n'est pas affiché entièrement sur l'écran lorsque je le lance (La moitié est caché en bas). C'est pourquoi j'aimerais trouvé un code qui permet d'ajuster automatiquement mon userform à l'écran, en gardant également les dimensions des boutons, comboBox, etc proportionnels à cet ajustement.

Je vous remercie d'avance pour vos réponse !
 

Lolote83

XLDnaute Barbatruc
Re : Dimensionner et ajuster un Userform

Salut ValentinLF,
Concernant ta première demande :
J'aimerais dans un premier temps (Question peut être bête..) comprendre les unités inscrite lors du dimensionnement des éléments dans les propriétés. Est-il possible de les comparer à des centimètres par exemple ?
La valeur est exprimée en TWIPS. En faisiant des recherches sur le Net, tu auras toutes les réponses à cette demande
Concernant ta deuxième demande :
Dans un second temps, mon userform actuellement dimensionné n'est pas affiché entièrement sur l'écran lorsque je le lance (La moitié est caché en bas). C'est pourquoi j'aimerais trouvé un code qui permet d'ajuster automatiquement mon userform à l'écran, en gardant également les dimensions des boutons, comboBox, etc proportionnels à cet ajustement.
Voir le fichier joint dans lequel, j'ai dessiné un formulaire simple, sans code si ce n'est la fermeture.
En cellule G2, un choix possible entre GRAND et PETIT pour faire des tests.
@+ Lolote83
 

Pièces jointes

  • Copie de VALENTINLF - Redimensionner UserForm.xlsm
    24.7 KB · Affichages: 114

Roland_M

XLDnaute Barbatruc
Re : Dimensionner et ajuster un Userform

Bonjour à tous

pour la compatibilité svp !
encore que ce n'est pas tout à fait ça au point de vu variable exemple avec GetDC:

' Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
' Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As LongPtr) As LongPtr

encore que, voir avec Win32 et Win 64 ... !? exemple
#If VBA7 Then 'VBA7 depuis office 2010
Dim handle As LongPtr '#####
'1 api FindWindowA pour trouver et identifier le handle de la fenetre(identifiant de la fenetre)
'2 api SetWindowLongA pour appliquer le nouveau style à la fenetre (userform)
#If Win64 Then
Private Declare PtrSafe Function FindWA Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function SWLA Lib "user32" Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#Else 'Win32
Private Declare PtrSafe Function FindWA Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
private Declare PtrSafe Function SWLA Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#End If
#Else . . .
. . .


Code:
#If VBA7 Then  'VBA7 depuis office 2010
Private Declare PtrSafe Function GetSystemMenu Lib "User32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare PtrSafe Function DeleteMenu Lib "User32" (ByVal hMenu As Long, ByVal iditem As Long, ByVal wflags As Long) As Long
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function ShowWindow Lib "User32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function IsIconic Lib "User32" (ByVal hWnd As Long) As Long
Private Declare PtrSafe Function IsZoomed Lib "User32" (ByVal hWnd As Long) As Long 'non utilisée ici
Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Private Declare PtrSafe Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare PtrSafe Sub ReleaseCapture Lib "User32" ()
#Else
Private Declare Function GetSystemMenu Lib "User32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "User32" (ByVal hMenu As Long, ByVal iditem As Long, ByVal wflags As Long) As Long
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function IsIconic Lib "User32" (ByVal hWnd As Long) As Long
Private Declare Function IsZoomed Lib "User32" (ByVal hWnd As Long) As Long 'non utilisée ici
Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub ReleaseCapture Lib "User32" ()
#End If
 
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re : Dimensionner et ajuster un Userform

Salut à tous,
Merci RolandM pour la précision entre Win32 et Win64.
Effectivement, j'avais oublié de précisé ce point.
En fait, je me suis inspiré d'un ancien code sur un vieux formulaire en Win32 que j'ai adapté ici (en Win64) pour faire des tests.
Merci pour cette précision
@+ Lolote83
 

ValentinLF

XLDnaute Nouveau
Re : Dimensionner et ajuster un Userform

Merci à tous les deux déjà pour m'avoir éclairé un peu sur mon problème.

J'ai testé le code sur mon propre fichier et effectivement il fonctionne très bien.

Cependant, l'idée n'est pas particulièrement d'ajuster le userform en plein écran mais de l'ajuster selon sa taille de départ pour qu'il soit entièrement visible sur l'écran. Avec ce code, mon userform qui a au préalable une taille A4 perd son format quand je l'affiche en grand.

L'idée serais de pouvoir dézoomer le userform et qu'il soit totalement visible à l'écran tout en conservant ses proportions.

J'espère que je suis assez clair dans mes explications
 

Lolote83

XLDnaute Barbatruc
Re : Dimensionner et ajuster un Userform

Salut ValentinLF, RolandM,
Tu dis :
Cependant, l'idée n'est pas particulièrement d'ajuster le userform en plein écran mais de l'ajuster selon sa taille de départ pour qu'il soit entièrement visible sur l'écran
alors que dans ton post#1 tu disais :
C'est pourquoi j'aimerais trouvé un code qui permet d'ajuster automatiquement mon userform à l'écran, en gardant également les dimensions des boutons, comboBox, etc proportionnels à cet ajustement.
Peut être un élément de réponse ici de notre ami RolandM https://www.excel-downloads.com/threads/usf-plein-ecran-sur-toutes-les-tailles-decran.106021/ (post#5).
A adapter à ton besoin.
Perso, je n'y comprends pas grand chose au code (j'essaye d'adapter en fonction de mes besoins), RolandM te donnera peut être toutes les astuces requises pour arriver à tes souhaits.
@+ Lolote83
 

ValentinLF

XLDnaute Nouveau
Re : Dimensionner et ajuster un Userform

Oui désolé, en effet j'ai relu mon premier post et je me suis aperçu que je n'avais pas bien expliqué mon problème.

Cependant vos réponses même si elles ne correspondent pas parfaitement à mon attente, m'on permis de découvrir des fonctions intéressantes ce qui m'a été quand même bénéfique ! :D
 

Roland_M

XLDnaute Barbatruc
Re : Dimensionner et ajuster un Userform

re

@Valentine,
si tu veux j'ai une routine sans appel api qui permet de redimensionner un userform à n'importe quelle résolution
ou de mettre plein écran !

si tu veux joindre ton classeur (sans données perso) je te l'incorpore !?
 

Discussions similaires

Statistiques des forums

Discussions
312 579
Messages
2 089 900
Membres
104 300
dernier inscrit
katlynefortin