ListBox : La propriété IntegralHeight ne marche pas

dionys0s

XLDnaute Impliqué
Bonjour le forum

je n'y comprends rien. J'ai une ListBox qui s'alimente correctement avec une boucle, puis j'aimerais que la hauteur soit systématiquement ajustée au nombre d'items de la liste. C'est pile poil le but de la propriété IntegralHeight, qui redimensionne si besoin est. Elle est fixée sur True par défaut, et ça ne marche pas. J'essaie en la fixant sur True dans le code, ça ne marche toujours pas.

J'ai lu l'aide VBA qui ne m'en apprend pas plus. Je suis dans une impasse :confused:

Donc toute aide serait la bienvenue !

D'avance merci à tous

dionys0s
 

Pièces jointes

  • ExempleIntegralHeight.xlsm
    15.4 KB · Affichages: 84

Pierrot93

XLDnaute Barbatruc
Re : ListBox : La propriété IntegralHeight ne marche pas

Bonjour,

A priori, avec la propriété "IntegralHeight", la hauteur ne s'ajuste pas par rapport au nombre d'items de la liste mais par rapport à la taille de la police de la listbox pour permettre d'afficher le texte dans son intégralité (en hauteur), et ce en fonction du nombre de lignes affichables.... pas sûr d' être très clair...
bon après midi
@+
 

PMO2

XLDnaute Accro
Re : ListBox : La propriété IntegralHeight ne marche pas

Bonjour,

Voilà ce que je lis dans l'aide

IntegralHeight, propriété


Indique si un contrôle ListBox ou TextBox affiche des lignes entières de texte dans une liste ou des lignes partielles dans le sens de la hauteur.

Syntaxe

object.IntegralHeight [= Boolean]

La syntaxe de la propriété IntegralHeight comprend les éléments suivants :

Élément Description
object Objet valide.
Boolean Facultatif. Indique si la liste affiche des lignes partielles de texte.


Valeurs

Les valeurs de Boolean sont les suivantes :

Valeur Description
True La liste se redimensionne pour n'afficher que les éléments complets (par défaut).
False La liste ne se redimensionne pas, même si l'élément est trop grand pour être affiché complètement.


Remarques

La propriété IntegralHeight se rapporte à la hauteur de la liste, tout comme la propriété AutoSize se rapporte à la largeur de la liste.

Si la valeur de la propriété IntegralHeight est True, la zone de liste se redimensionne automatiquement si nécessaire pour afficher des lignes complètes. Pour la valeur False, la liste reste de taille fixe ; si les éléments sont plus grands que l'espace disponible dans la liste, l'élément entier n'est pas affiché.
 

PMO2

XLDnaute Accro
Re : ListBox : La propriété IntegralHeight ne marche pas

Essayez avec votre code modifié
Code:
Private Sub UserForm_Initialize()
Dim Banque As Range
Dim nb&   '///
For Each Banque In Range("Banques")
    ListBox_Banques.AddItem (Banque)
    nb& = nb& + 1 '///
Next Banque
ListBox_Banques.Height = ListBox_Banques.Height * nb& '///
Application.ScreenUpdating = True
End Sub
 

dionys0s

XLDnaute Impliqué
Re : ListBox : La propriété IntegralHeight ne marche pas

Bonjour Pierrot, Patrick

merci pour vos réponses.

Pierrot, l'aide le dit bien : "La propriété IntegralHeight se rapporte à la hauteur de la liste, tout comme la propriété AutoSize se rapporte à la largeur de la liste. Si la valeur de la propriété IntegralHeight est True, la zone de liste se redimensionne automatiquement si nécessaire pour afficher des lignes complètes" .On peut donc supposer que c'est l'intégralité de la liste qui sera affichée si la propriété est fixée sur True. Mais non, ça ne marche pas. Pour m'en convaincre, j'ai fait un test en mettant la taille de la ListBox proche de 0, et ça n'affiche pas le premier item de la liste correctement.

Patrick, j'ai déjà essayé cette alternative, mais ça ne me convient qu'à moitié puisque ça s'ajuste mal, et plus il y a d'items, plus la ListBox sera surdimensionnée par rapport à la liste. J'ai fait un test avec 12 items dans la ListBox, et c'est flagrant.

Donc il s'agirait d'une propriété qui ne marche en fait pas ? C'est curieux...
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : ListBox : La propriété IntegralHeight ne marche pas

Re, bonjour Patrick
la zone de liste se redimensionne automatiquement si nécessaire pour afficher des lignes complètes" .On peut donc supposer que c'est l'intégralité de la liste qui sera affichée si la propriété est fixée sur True.
bah non à priori.... pour tester c'est simple, après redimensionnement de ta liste pour afficher un ou 2 itemss, tu mets ta police sur 48, tu vois bien le résultat... Sinon pourquoi ne pas utiliser une "combobox" dont tu mets la priopriété "ListRows" égale sa propriété "ListCount"....
 

dionys0s

XLDnaute Impliqué
Re : ListBox : La propriété IntegralHeight ne marche pas

Rha c'est vous qui avez raison Pierrot ! J'm'ai gouré !

La propriété s'ajuste pour afficher une ligne entière, quel que soit le nombre d'items.
En gros, s'il y a 12 items, et que la hauteur permet d'afficher 2 lignes et demi, ça modifiera la hauteur pour afficher 3 lignes...

Bon. Je vais essayer votre solution aussi.
 

Paf

XLDnaute Barbatruc
Re : ListBox : La propriété IntegralHeight ne marche pas

bonjour à tous
le code proposé dans le classeur du post d'hier, fonctionne si la propriété IntegralHeight de la ListBox est à False .

pm :
Private Sub UserForm_Initialize()

Dim Banque As Range

For Each Banque In Range("Banques")
ListBox_Banques.AddItem (Banque)
Next Banque

ListBox_Banques.Height = ListBox_Banques.ListCount * ListBox_Banques.Font.Size * 1.25

End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 249
Messages
2 086 598
Membres
103 255
dernier inscrit
MANS29