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

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

patricktoulon

XLDnaute Barbatruc
@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 ?
 

patricktoulon

XLDnaute Barbatruc
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
 

Dudu2

XLDnaute Barbatruc
É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

  • Redimensionner un UserForm sans le Caption TEST avec Window RECT.xlsm
    67.5 KB · Affichages: 0

Dudu2

XLDnaute Barbatruc
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:

Dudu2

XLDnaute Barbatruc
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

  • Redimensionner un UserForm sans le Caption TEST avec Window RECT.xlsm
    60.4 KB · Affichages: 1
Dernière édition:

patricktoulon

XLDnaute Barbatruc
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"
 

Dudu2

XLDnaute Barbatruc
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.
 

Dudu2

XLDnaute Barbatruc
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

  • Redimensionner un UserForm sans le Menu Système Caption.xlsm
    73.9 KB · Affichages: 1

Dudu2

XLDnaute Barbatruc

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 133
Membres
112 667
dernier inscrit
foyoman