Microsoft 365 UserForm : est-il possible de ne pas l'afficher - mais uniquement le ComboBox ?

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir à toutes et à tous,

En voilà une comme je les aime lol
Sans titre.jpg

Je ne parle pas de la croix de l'UserForm.
Mais afficher uniquement le ComboBox
J'ai des recherches mais je n'ai pas trouvé :mad:
Peut-être impossible mais ...
Je pose quand même la question car ce serait super bien :)
Je joins un ch'ti fichier test,
Avec mes remerciements,
lionel,
 

Pièces jointes

  • infos_com.xlsm
    48.1 KB · Affichages: 53

bof

XLDnaute Occasionnel
bonjour,
Mais si tu n'as besoin que du combo et pas de UserForm, c'est également possible y compris avec un utilisation avancée : Dans le fichier joint le combo varie suivant la ligne cliquée (pour ne pas fournir de doublon.
 

Pièces jointes

  • ComboIncrDec_Ed.xlsm
    23 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour Lionel, bof, le forum,

Il est sûr qu'il vaut mieux ne pas avoir d'UserForm et utiliser une ListBox dans la feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal r As Range)
ListBox1.Visible = False
If Not Intersect(ActiveCell, [AD9:AD16]) Is Nothing Then Afficher "AD10:AD12"
If Not Intersect(ActiveCell, [AE9:AE16]) Is Nothing Then Afficher "AE10:AE13"
If Not Intersect(ActiveCell, [AF9:AF16]) Is Nothing Then Afficher "AF10:AF12"
If Not Intersect(ActiveCell, [AG9:AG16]) Is Nothing Then Afficher "AG10:AG12"
End Sub

Private Sub ListBox1_Change()
ActiveCell = ListBox1
[A1].Select
End Sub

Sub Afficher(adresse$)
With ListBox1
    .ListFillRange = adresse
    .Height = Range(adresse).Height 'àdapter éventuellement
    .Top = ActiveCell(2).Top
    .Left = ActiveCell.Left + (ActiveCell.Width - .Width) / 2
    .Visible = True
End With
End Sub
Bonne journée.
 

Pièces jointes

  • infos_com(1).xlsm
    46.7 KB · Affichages: 8

job75

XLDnaute Barbatruc
Il n'existe pas de solution simple pour adapter la hauteur d'une ListBox à sa liste.

J'en ai proposé une sur ce fil :

https://www.excel-downloads.com/threads/ajustement-automatique-hauteur-listbox.20016017/

Mais je pense qu'ici il vaut mieux adapter la hauteur au cas par cas avec un 2ème argument :
VB:
Private Sub Worksheet_SelectionChange(ByVal r As Range)
ListBox1.Visible = False
If Not Intersect(ActiveCell, [AD9:AD16]) Is Nothing Then Afficher "AD10:AD12", 44 'hauteur à adapter au besoin
If Not Intersect(ActiveCell, [AE9:AE16]) Is Nothing Then Afficher "AE10:AE13", 58
If Not Intersect(ActiveCell, [AF9:AF16]) Is Nothing Then Afficher "AF10:AF12", 44
If Not Intersect(ActiveCell, [AG9:AG16]) Is Nothing Then Afficher "AG10:AG12", 44
End Sub

Private Sub ListBox1_Change()
ActiveCell = ListBox1
[A1].Select
End Sub

Sub Afficher(adresse$, h#)
With ListBox1
    .ListFillRange = adresse
    .IntegralHeight = False
    .Height = h
    .Top = ActiveCell(2).Top
    .Left = ActiveCell.Left + (ActiveCell.Width - .Width) / 2
    .Visible = True
End With
End Sub
 

Pièces jointes

  • infos_com(2).xlsm
    24.8 KB · Affichages: 12
Dernière édition:

bof

XLDnaute Occasionnel
Mon modèle contenait une formule qui permet de régler la hauteur du combo en fonction du nombre d'éléments.
Dans le modèle la formule n'a pas été modifié donc c'est un peu trop long mais en changeant avec cette formule :
VB:
ActiveSheet.Shapes("ListBox1").Height = (18 - 1 / 4 * k) * k
on obtient une dimension optimale.
Après le problème est que cette formule est sensible à des tas de paramètres dont à minima la police et la taille de la police.
Dans le cas de ma démo la formule ci-dessus semble correcte avec du Calibri 12 (sous W10 + Exc 2016)
C'est d'autant plus important que dans le cas de cette démo le combo se décrémente ou s'incrémente à chaque ouverture.
Si vous basculez en Arial 14 ça va pas le faire, il faudra tatonner ! (la plupart du temps j'obtiens un réglage suffisant simplement en changeant le premier nombre...)
A+
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa