XL 2013 Résolu par Job75, Jacky67, Si : menu cellule affiché en permanence

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 !

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes à tous,

J'ai une question qui pourra vous paraître curieuse :

J'ai un fichier excel que j'envoie à mes futurs clients et dans ce fichier, j'ai fait mon maximum pour qu'ils aient le moins possible de saisie.

Donc, 95 % du remplissage demandé sont des sélections comme ci-dessous :
Sans titre.jpg

Mais voilà, certains (et ils sont nombreux), ne comprennent pas qu'il faut d'abord cliquer dans la cellule pour afficher le bouton du menu déroulant de sélection.

Est-il possible que le bouton déroulant soit affiché en permanence pour les cellules qui en ont ?
Je joins un petit fichier test.

Avec mes remerciements,
Bonne fin de journée à toutes et à tous.
Amicalement,
Lionel,
 

Pièces jointes

Bonsoir Lionel, Jacky67,

Avec une ListBox et ce code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ListBox1
  If ActiveCell.Address = "$F$8" Then
    .Top = ActiveCell.Top
    .Left = ActiveCell(1, 2).Left
    .Visible = True
  Else
    .Visible = False
  End If
End With
End Sub

Private Sub Listbox1_Click()
With ActiveCell
  'ici le code
  .Activate 'ôte le focus
End With
End Sub
A+
 

Pièces jointes

Bonjour

« je ne sais que choisir », alors prends la mienne 😛 (exemple de survol facilement adaptable à n cas) !
VB:
Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  List1.Visible = 1: List1.DropDown
End Sub
Private Sub List1_Click()
  List1.Visible = 0: [A1].Select
End Sub

Je laisse la main à Job 😉 pour les Modules de Classe.
 

Pièces jointes

Bonjour Lionel, le forum,

En fait une seule ListBox suffit pour toutes les cellules à renseigner.

Il suffit que ces cellules soient dotées d'une validation de données avec formule NB.SI.

Le code de la feuille :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim f$, s
On Error Resume Next
f = ActiveCell.Validation.Formula1
With ListBox1
  .Visible = False
  If Not (f Like "=NB.SI(*" Or f Like "=COUNTIF(*") Then Exit Sub
  s = Split(f, ";")
  If UBound(s) < 1 Then s = Split(f, ",") 'pour version anglaise
  f = Mid(s(0), InStr(s(0), "(") + 1)
  .LinkedCell = ActiveCell.Address(0, 0)
  .ListFillRange = f
  Application.ScreenUpdating = False
  Range(f).Columns.AutoFit 'ajustement largeur
  .ColumnWidths = Range(f).Width 'adapter éventuellement
  .Width = Range(f).Width + 8 'adapter éventuellement
  .Height = Range(f).Height + 4 'adapter éventuellement
  Range(f).Columns.Hidden = True 'masque la colonne
  .Top = ActiveCell.Top
  .Left = ActiveCell(1, 2).Left
  .Visible = True
End With
End Sub

Private Sub Listbox1_Click()
With ActiveCell
  'ici le code à adapter
  .Activate 'ôte le focus
End With
End Sub
Fichier joint.

Bonne journée.
 

Pièces jointes

Re,

Pour l'adaptation de la hauteur de la ListBox ce code est plus précis chez moi :
Code:
  .Height = .ListCount * (.FontSize + 2.5) + 4 'adapter le 2.5 éventuellement
Fichier (1 bis).

Edit : petite précision, la colonne A et la ListBox doivent avoir la même police.

A+
 

Pièces jointes

Dernière édition:
- 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

Retour