XL 2013 Affiche automatique liste validation au clic dans la cellule

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Voilà longtemps que je ne vous ai pas sollicité.

Après avoir été souffrant, je reprends peu à peu la "forme" :)

Petit souci pour lequel, malgré mes recherches, je n'ai pas trouvé la solution :

Dans le fichier test joint, et dans la cellule G7, j'ai une petite liste de validation
J'aurais besoin qu'au clic dans cette cellule, la liste de sélection s'affiche automatiquement.
Sans avoir à cliquer sur le bouton pour dérouler le menu
Est-ce possible ?
Auriez-vous la solution ?

Avec mes remerciements,
Je vous souhaite à toutes et à tous une très belle journée :)
Amicalement,
arthour973,
 

Pièces jointes

  • Test affichage liste.xlsm
    9.2 KB · Affichages: 44

job75

XLDnaute Barbatruc
Bonjour arthour973, bbb38,

Ce que tu veux faire Lionel n'est pas possible avec une liste de validation.

Ceci est par contre classique avec une ComboBox :
Code:
Private Sub ComboBox1_GotFocus()
ComboBox1.List = Array("ALLO", "HELLO", "CHALUT")
ComboBox1.DropDown 'déroule la liste
End Sub

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then ComboBox1 = ""
[G7] = ComboBox1
ActiveCell.Activate 'ôte le focus
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Test affichage liste(1).xlsm
    24.9 KB · Affichages: 33

Si...

XLDnaute Barbatruc
Bon_soir

Une liste de validation n'est pas programmable comme un contrôle ActiveX.
Ici, un autre exemple, avec un contrôle Listbox nommé Lst
VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  If Lst.ListCount < 4 Then Lst.List = Array("ALLO", "HELLO", "CHALUT", " ")
  Lst.Visible = R.Address = [G7].Address
End Sub

Private Sub Lst_Change()
  [G7] = Lst: [G8].Select
End Sub

Nota : si la liste est très longue, il vaut mieux passer par un contrôle ComboBox
 

Pièces jointes

  • ListBox en Onglet.xlsm
    22.2 KB · Affichages: 34

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonsoir,


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$G$7" And Target.Count = 1 Then
SendKeys "%{down}"
End If
End Sub

On peut l'afficher au survol

http://boisgontierjacques.free.fr/fichiers/DonneesValidation/DVSurvolCell.xls

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
[g7].Select
SendKeys "%{down}"
End Sub


jb
 

Pièces jointes

  • Copie de Test affichage liste-1.xlsm
    13.8 KB · Affichages: 24
  • Copie de Test affichage listeSurvol.xlsm
    18.1 KB · Affichages: 30
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour JOb, Bonjour JB,

Je suis désolé de ne pas vous avoir répondu hier au soir.
Je suis encore un peu faible après mon souci de santé et j'étais 'OFF" LOL

Job75, je te remercie pour ta solution qui fonctionne bien mais j'aimerais (j'avais omis de le mentionner) que ça fonctionne sur une plage de cellules et je n'arrive pas à modifier pour, par exemple de G7 à G500.

JB
Un grand merci également pour ton code qui fonctionne mais pkoi ça pose problème pour les versions excel > à 2007 ?

Un grand merci à vous deux.
Amicalement,
Arthour973 :)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Si,

Je suis désolé, je n'ai pas vu ton post.

Un grand merci à toi aussi pour ton code qui fonctionne bien.

J'ai le même souci pour les 3 solutions :
J'aimerais que ça fonctionne sur une plage de cellules et je n'arrive pas à modifier pour, par exemple de G7 à G500.

Amicalement,
Arthour973,
 

job75

XLDnaute Barbatruc
Re,
Job75, je te remercie pour ta solution qui fonctionne bien mais j'aimerais (j'avais omis de le mentionner) que ça fonctionne sur une plage de cellules et je n'arrive pas à modifier pour, par exemple de G7 à G500.
Il suffit de déplacer la ComboBox sur la cellule sélectionnée et de l'activer :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ComboBox1
    If Intersect(ActiveCell, [G7:G500]) Is Nothing Then _
        .Visible = False Else .Top = ActiveCell.Top: .Visible = True: .Activate
End With
End Sub

Private Sub ComboBox1_GotFocus()
ComboBox1.List = Array("ALLO", "HELLO", "CHALUT")
ComboBox1.DropDown 'déroule la liste
End Sub

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then ComboBox1 = ""
ActiveCell = ComboBox1
ActiveCell.Activate 'ôte le focus
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Test affichage liste(2).xlsm
    28.1 KB · Affichages: 34
Dernière édition:

Discussions similaires

Réponses
25
Affichages
786

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin