XL 2016 Adapter hauteur d'un UserForm et d'un Listbox en fonction du contenu

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 !

halecs93

XLDnaute Impliqué
Bonjour,

Je rencontre une difficulté avec un UserForm : je souhaite ajuster automatiquement sa hauteur ainsi que celle de la ListBox qu’il contient, afin d’éviter l’apparition de la barre de défilement verticale.

L’objectif est que l’utilisateur puisse visualiser l’intégralité des données sans avoir à scroller.

Si quelqu’un a une solution ou une piste, je suis preneur !

Merci d’avance 😊
 

Pièces jointes

Solution
Bonjour

tu as défini un maxListBoxHeight à 300
et ensuite tu calcules: calculatedHeight = ListBox1.ListCount * itemHeight

avec le nombre de lignes à affichier, ton calculatedHeigh atteint les 820 MAIS tu brides à 300 ==> le scroll sera mis
si tu mets ton max à 900 ==> toutes les lignes sont affichées, et pas de scroll.

mais;. si tu ajoutes des lignes à la table.. bah. tu te retrouves avec le meme pb..
Bonjour Halecs93,
Concernant ta demande, pour le moment, je ne sais pas trop.
J'ai vu qu'il y a des créations (textbox) en fonction des choix faits dans la listbox.
Cependant, la création des textboxs se fait à priori en regard des lignes sélectionnées dans la listbox
Vu que le formulaire n'a pas lui d'ascenseur vertical actuellement, les sélections en bas de tableaux sortent automatiquement de la page.
Que doit-on saisir dans ces texboxs ?
Du coup, ne pouvant répondre vraiment à ta question, j'ai pensé à un truc que je te soumets.
Pas du tout sûr que cela corresponde à ton besoin.
A voir
@+ Lolote83
 

Pièces jointes

Bonjour Halecs93,
Concernant ta demande, pour le moment, je ne sais pas trop.
J'ai vu qu'il y a des créations (textbox) en fonction des choix faits dans la listbox.
Cependant, la création des textboxs se fait à priori en regard des lignes sélectionnées dans la listbox
Vu que le formulaire n'a pas lui d'ascenseur vertical actuellement, les sélections en bas de tableaux sortent automatiquement de la page.
Que doit-on saisir dans ces texboxs ?
Du coup, ne pouvant répondre vraiment à ta question, j'ai pensé à un truc que je te soumets.
Pas du tout sûr que cela corresponde à ton besoin.
A voir
@+ Lolote83
Bonjour et merci.

Je regarde la proposition... mais je préfère si possible conserver mon fonctionnement. Pourvoir sélectionner plusieurs lignes du ListBox et que s'affiche alors les Texbox correspondant... de façon à y saisir des quantités.
 
Bonjour

tu as défini un maxListBoxHeight à 300
et ensuite tu calcules: calculatedHeight = ListBox1.ListCount * itemHeight

avec le nombre de lignes à affichier, ton calculatedHeigh atteint les 820 MAIS tu brides à 300 ==> le scroll sera mis
si tu mets ton max à 900 ==> toutes les lignes sont affichées, et pas de scroll.

mais;. si tu ajoutes des lignes à la table.. bah. tu te retrouves avec le meme pb..
 
Bonjour

tu as défini un maxListBoxHeight à 300
et ensuite tu calcules: calculatedHeight = ListBox1.ListCount * itemHeight

avec le nombre de lignes à affichier, ton calculatedHeigh atteint les 820 MAIS tu brides à 300 ==> le scroll sera mis
si tu mets ton max à 900 ==> toutes les lignes sont affichées, et pas de scroll.

mais;. si tu ajoutes des lignes à la table.. bah. tu te retrouves avec le meme pb..
Hello... tout simplement merci !!!!
 
Salut,
Pour que le formulaire ne dépasse pas la hauteur de l'écran, on peut mettre le formulaire avec une ScrollBar verticale et mettre ceci par exemple pour régler la hauteur du formulaire :
VB:
    Me.Height = 300
    Me.ScrollHeight = lastTextBoxBottom + margeBas
    ' Ajuste dynamiquement la hauteur du UserForm en fonction du dernier TextBox
 '   Me.Height = lastTextBoxBottom + margeBas

Il y a un souci avec la création des TextBox chez moi (même avec le code original) : plus on va vers le bas de la ListBox, plus elles se décalent :
LBox.gif


Nullosse
 
Salut,
Pour que le formulaire ne dépasse pas la hauteur de l'écran, on peut mettre le formulaire avec une ScrollBar verticale et mettre ceci par exemple pour régler la hauteur du formulaire :
VB:
    Me.Height = 300
    Me.ScrollHeight = lastTextBoxBottom + margeBas
    ' Ajuste dynamiquement la hauteur du UserForm en fonction du dernier TextBox
 '   Me.Height = lastTextBoxBottom + margeBas

Il y a un souci avec la création des TextBox chez moi (même avec le code original) : plus on va vers le bas de la ListBox, plus elles se décalent :
Regarde la pièce jointe 1220990

Nullosse
Bonjour,

Je ne souhaite pas de scrollbar 😉

Quant au décalage, je vais tenter en modifiant légèrement la taille de la police...et qui sait 😉
 
Salut,
Pour que le formulaire ne dépasse pas la hauteur de l'écran, on peut mettre le formulaire avec une ScrollBar verticale et mettre ceci par exemple pour régler la hauteur du formulaire :
VB:
    Me.Height = 300
    Me.ScrollHeight = lastTextBoxBottom + margeBas
    ' Ajuste dynamiquement la hauteur du UserForm en fonction du dernier TextBox
 '   Me.Height = lastTextBoxBottom + margeBas

Il y a un souci avec la création des TextBox chez moi (même avec le code original) : plus on va vers le bas de la ListBox, plus elles se décalent :
Regarde la pièce jointe 1220990

Nullosse
J'ai modifié la valeur qui défini la hauteur des TexBox :

Dim itemHeight As Double: itemHeight = 19.5

19.5 semble fonctionner
 
- 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
Retour