Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème de mise en forme d'un ComboBox dans un UserForm

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

J'ai un UserForm qui s'intitule "UserForm1".
Dans cet UserFormn il y a un ComboBox qui s'intitule "ComboBox1".
Je voudrais, lors de l'ouverture de la liste de ce ComboBox, que la longueur de celle-ci (ListRows) ne dépasse pas son contenu (afin que n'apparaissent pas de "blancs" inutiles).
Dans une cellule qui s'appelle "[FréquenceItem]" se trouve une constante qui correspond au nombre d'éléments contenus (à un moment donné...) dans la liste du ComboBox en question.
En conséquence, pour mettre à jour la longueur de la liste du ComboBox, j'écris :
With ActiveSheet.ComboBox1
.ComboBox1.ListRows = [FréquenceItem]
End With

Et bien, ¡caramba! ça ne marche pas !

Un grand merci pour me dépétrer de ce problème de ComboBox.
 
Dernière édition:
Re : Problème de mise en forme d'un ComboBox dans un UserForm

bonjour,
Si tu définis dynamiquement ta plage dans la procédure userform_initialize, tu n'as pas de blanc dans la liste
Exemple à adapter :

derligne = Sheets("Base").Range("A65536").End(xlUp).Row
PlageList = Sheets("Base").Range("C5:C" & derligne).Address
ComboBox1.RowSource = "Base!" & PlageList
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Bonjour Magic_Doctor, CHALET53,

Autre exemple de code d'initialisation :

Code:
Private Sub UserForm_Activate()
    ComboBox1.RowSource = Range("A:A").SpecialCells(xlCellTypeConstants).Address
    ComboBox1.ListRows = Range("A:A").SpecialCells(xlCellTypeConstants).Cells.Count
End Sub

Attention : pas de blancs dans la liste, mais la liste peut débuter par n'importe quelle ligne dans la colonne.

Espérant avoir été utile.

Cordialement.
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Bonjour CHALET53, Papou-net, le forum,

Je manie particulièrement mal les UserForms.
J'ai essayé, en suivant vos conseils :
Private Sub UserForm1_Activate()

ComboBox1.ListRows = [FréquenceItem]

End Sub

Puis :
Private Sub UserForm1_Initialize()

ComboBox1.ListRows = [FréquenceItem]

End Sub

Où, je le rappelle "FréquenceItem" est le nom de la cellule qui récupère le nombre d'items de la liste du ComboBox (ComboBox1) se trouvant dans l'UserForm1.

Pour l'instant rien n'a marché ; quand j'ouvre Propriété de ComboBox1, ListRows est toujours = 8
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Bonjour Magic Doctor, CHALET53, Papounet 🙂

Ceci ne marchera pas :

Private Sub UserForm1_Initialize()

ComboBox1.ListRows = [FréquenceItem]

End Sub


mais ceci marchera :

Code:
Private Sub UserForm_Initialize()

ComboBox1.ListRows = [FréquenceItem]

End Sub

Et mes derniers posts sur "Toile de fond" Doctor ? A la trappe ?

Edit : les propriétés d'un contrôle quelconque peuvent être modifiées quand l'UserForm est ouvert.

Mais une fois l'UserForm fermé (et la macro terminée), les propriétés reprennent leur valeurs initiales.

A+
 
Dernière édition:
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Bonjour job,

Je n'ai absolument pas oublié le fort passionnant "Toile de fond", d'autant plus que je suis opiniâtre. Mais, d'une part, j'ai dû comprendre ta dernière macro qui m'a soufflé et est particulièrement instructive (j'ai encore du chemin à faire...). Mais, les idées venant, je devais résoudre le problème de cet UserForm avant de revenir à nos moutons.
J'avais appelé l'UserForm "UserForm1" car dans son module apparaît "UserForm1".
J'ai rectifié en suivant tes conseils en écrivant bien dans le module de lUserForm en question :
Private Sub UserForm_Initialize()

ComboBox1.ListRows = [FréquenceItem]

End Sub

Ça ne marche toujours pas. Le ListRows reste immuablement à 8...
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Re,

Un détail sur Excel 2010, cette macro :

Code:
Private Sub UserForm_Initialize()
ComboBox1.ListRows = 0
End Sub

permet d'afficher la totalité de la liste quand on clique sur la ComboBox.

A+
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Apparemment il semble impossible de mettre à jour un ComboBox d'un UserForm.
Voilà en quoi Excel peut devenir détestable. Car, en supposant que ce soit quand même possible, il est curieux que pour résoudre un problème aussi simple il faille autant galérer !
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

C'est franchement très curieux.
En colère, juste pour voir, comme il n'y a que 3 items dans la liste, je vais à "Propriétés" du maudit ComboBox1 et j'assigne à ListRows la valeur 3.
Je fais ensuite apparaître le maudit UserForm qui contient ledit ComboBox1, j'ouvre la liste déroulante et sa longueur est toujours 8, autrement dit la valeur par défaut du ListRows du ComboBox1 quand il a été créé.

concertant !!!!
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Bonsoir Magic_Doctor,

Je t'assure que ma solution fonctionne, je l'ai testée. De même que celle de CHALET53 et celle de job75 (merci à ce dernier pour son astuce).


Si elle ne marche pas chez toi, le problème vient sûrement d'ailleurs, mais en ce cas, pas facile d'y répondre à distance.

Cordialement.
 
Re : Problème de mise en forme d'un ComboBox dans un UserForm

Enfin, porfín, ojalá,

En fait je me battais uniquement avec "ListRows" en négligeant "RowSource".

En écrivant ceci, ça marche enfin :

Pour des raisons logiques j'ai changé le nom "FréquenceItem" par "NbItems", mais c'est un détail sans grande importance.

Private Sub UserForm_Initialize()

'"ListeItems2" étant le nom de la plage (colonne) pouvant contenir jusqu'à 50 items.
'Je dois d'abord redéfinir cette plage en fonction de son contenu variable mais n'excédant évidemment pas 50 items ([NbItems].Value).
ComboBox1.RowSource = [ListeItems2].Resize([NbItems]).Address

'Je définis la longueur de la liste qui se déploie quand on ouvre le ComboBox1.
ComboBox1.ListRows = [NbItems]

End Sub
 
- 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

C
Réponses
4
Affichages
2 K
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…