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

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

  • Test.xlsm
    9 KB · Affichages: 33

job75

XLDnaute Barbatruc
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

  • ListBox(1).xlsm
    27.3 KB · Affichages: 31

Si...

XLDnaute Barbatruc
Bonjour

« je ne sais que choisir », alors prends la mienne :p (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

  • FausseListeDeValidation.xlsm
    42.6 KB · Affichages: 28

job75

XLDnaute Barbatruc
Re, salut Si...

Jacky67 a raison, mais avec ma solution pas de flèche !

Comme le demande Lionel j'ai ajouté un Module de classe dans le fichier joint.

Il y a du code dans toutes les feuilles ou modules.

A+
 

Pièces jointes

  • ListBox et module de classe(1).xlsm
    33.5 KB · Affichages: 31

job75

XLDnaute Barbatruc
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

  • ListBox adaptable(1).xlsm
    30.2 KB · Affichages: 31

job75

XLDnaute Barbatruc
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

  • ListBox adaptable(1 bis).xlsm
    29.1 KB · Affichages: 23
Dernière édition:

Discussions similaires

Réponses
4
Affichages
321

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345