re
bilan des choses qui sont sures
REDIMENSIONNEMENT EN HAUTEUR
1° le redimensionnement en hauteur par un textbox en autosize avec les mêmes paramètres que la listbox
attention au specialffect et au borderstyle
2° nous soustrayons la valeur 3 correspondante a la constante de getsystemmetrics(36) (universelles)
qui correspondent a l'épaisseur de bordure créé avec le specialffect( de 1 à 6)
si les paramètres sont parfaitement synchrone le redimensionnement en hauteur est quasi parfait
REDIMENTTIONNEMENT EN LARGEUR
1°pour une colonne utiliser le width du textbox + la constante de getsystemmetrics(36) en l’occurrence 3
2° pour le multi colonne il sera préférable d'utiliser une plage de cellule dans le quel on retransfère le tableau ou le .list de la listbox et là on fait pareill pour les propriété font sauf que le size devra être à 1 de plus
pour être exact c'est 1.375 mais avec le rattrapage du DLGframe les nuances sont imperceptible a l’œil humain de l'ordre de 0.001 à 0.003 ce qui pour le vba avec les arrondi des calculs n'a quasiment pas d'incidence
la largeur des colonnes et de la listbox seront calquées ensuite sur la plage temporaire
pour info
la valeur 3(getsystemmetrics(36)) peut s'obtenir par le width-insidewidth de la listbox par l'intermédiaire d'un switch sur intergralheight et une mise a zero temporaire du height et récupération du height
ça reste une méthode versatile il arrive que chez moi la mise a zero ne s'opère et je me retrouve avec 16 qui est le height minimal en fonction du font.size d'une listbox ( donc a utiliser avec précautions )
comme c'est universelles j'utilise le nombre 3 variabilisé ou pas
voila les choses sont simples pas la peine d'en faire plus pour si peu
utilité de cette pratique
elle est rare
elle peut être utile par exemple pour une liste de choix positionnée sur un bouton (une sorte de menu contextuel (voir ressource patricktoulon à ce sujet)
elle peut être utile lors du redimensionnement d'un userform les paramètres seront au prorata du redimensionnement de l'userform et c'est valable pour l'inverse
conclusion:
en faire plus est du branlage de code
toutes les méthodes dans cette discussions (
@job75 /
@Dudu2 /
@patricktoulon)
on été testées pour ma part sur:
- Office 2007 32 bit en VB sur Win 7
- Office 2013 32 bit pro en vba7 sur Win 10
- Office 2016 64 bits en vba 7 sur Win 10