XL 2016 VBA - Redimensionner un UserForm après le retrait de la barre du menu système (Caption)

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dudu2

XLDnaute Barbatruc
Bonjour,

Suite à un sujet récent sur une barre de progression dont on peut retirer le Caption (la barre de menu système) via l'API, se pose la question de redimensionner le UserForm à sa taille sans le Caption.

En faisant un fichier de test j'ai (je pense) trouvé une solution qui n'est pas simple du tout et sur laquelle j'ai passé pas mal de temps.

Edit: je retire les commentaires de ce post car une solution beaucoup plus simple est proposée au post suivant.

Il y a peut-être un moyen encore plus simple en jouant sur les flags lors du retrait de la barre de menu système (le Caption) du UserForm via l'API. Avis aux experts !
 
Dernière édition:
Solution
@Dudu2
Autrement dit
DANS LE VBE:
quand je met un control à 1 point de left il est à 3 points de left bordure comprise
quand je met un control à 1 point du right il est à+ 2 points au delà du right bordure compris
quand je met un control a 1 points du bottom il est à bottom +19.5(épaississeur de la caption)+les 3points d'ecart/2

est ce que ça fait pareil chez vous ?
 
re
et oui c'est pour ça que je dis que la seule référence a peu près exacte c'est le inside
le "dit" height dans le vbe est faux
le dit "height" pendant l'affichage est faux
pareil pour le width
alors calculer avec des données fausses des deux cotés c'est compliqué

le inside et tu remonte vers l’extérieur
après tu utilise les outils que tu veux sur cette ref
 
Étrangement, lorsque l'option Resize est ON pour le System Menu du UserForm, au retrait du Caption, il conserve ses marges alors que ce n'est pas le cas si l'option Resize est OFF.
La zone blanche qui apparait en haut est de taille inconnue.
Mais vu l'extrême rareté de l'option Resize, je vais pas m'user les méninges à trouver sa taille.
De plus je ne pense pas qu'on puisse la supprimer.
 

Pièces jointes

Autre enseignement (décidément c'est sans fin !), le rajout du Caption sans API fait perdre les options du menu système (minimize, maximize, resize).
Il va donc falloir les sauver puis les restorer sauf à utiliser l'API pour la remise du Caption (au lieu de .Caption = .Caption).
 
Dernière édition:
Avec l'API le rajout du menu système conserve les options alors que l'instruction .Caption = .Caption restore bien le menu système mais ne les conserve pas.
(Voir constante VIA_API dans le code.)
 

Pièces jointes

Dernière édition:
re
ben oui tout simplement par ce que tu fait apel a une properties "caption" donc tu fait appel a la classe userform donc initialise et donc il y a bien un Re load
d’ailleurs on le vois bien le text de la caption est grisée et l'ombre n'est pas active donc le userform n'est pas la activewindow après avoir appuyé sur "remettre la caption"
 
Oui, c'est sûr que c'était pas très carré.

Maintenant j'ai trouvé comment supprimer la barre blanche qui vient en suppression de Caption quand l'option Resize est dans le Menu Système.
Faut faire un Not WS_THICKFRAME sur sur Window Style au moment du retrait.

Le problème c'est que ça supprime aussi l'option Resize !
Donc on ne peut rien faire et supposer que cette barre blanche est complètement liée à l'option Resize.
 
Et donc probablement (on y croit) le dernier fichier qui trace les positionnements, tailles et marges qui met en évidence le cas de l'option Resize qui, en suppression de Caption, ajoute cette petite barre blanche en haut du UserForm ET conserve les marges initiales ce qui n'est pas le cas lorsqu'elle n'est pas définie.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour