XL 2013 Affiche automatique liste validation au clic dans la cellule

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

Bonjour Bernard,

Merci de m'avoir répondu.
Effectivement, c'est une idée et ça fonctionne 🙂

Mais je préférais si possible rester dans la validation des données mais je si n'obtiens pas de solution.
Je verrai dans cette direction.

Un grand merci.
Bonne fin de journée,
Amicalement,
arthour973,
 
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

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

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

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

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

Réponses
5
Affichages
677
Réponses
25
Affichages
1 K
Réponses
5
Affichages
406
Retour