Macro liste déroulante

  • Initiateur de la discussion Initiateur de la discussion pajude
  • Date de début Date de début

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 !

pajude

XLDnaute Junior
Bonjour,
J'ai trouvé cette macro très interressante sur le net, mais elle ne fonctionne que pour une cellule donnée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$9" And Target.Count = 1 Then

SendKeys "%{down}"
End If
End Sub


J'aimerais avoir le même résultat quand je sélectionne B9, B10... ou B2000

Et aussi toutes les autres cellules de ma feuille qui ont ou auront des listes déroulantes.
Merci beaucoup
 
Re : Macro liste déroulante

Bonjour Pajude, Pierrot, bonjour le forum,

Pas compris ta réponse Pierrot ?...

J'ai essayé avec Cells.SpecialCells (xlCellTypeAllValidation) mais ça n'a pas marché car le SendKeys agissait sur toutes les cellules...
Essaie comme ça (à adapter) :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PL As Range 'déclare la variable PL (PLage)

If Target.Cells.Count > 1 Then Exit Sub 'si plusieurs cellules sélectionnées, sort de la procédure
'définit la plage PL
Set PL = Application.Union(Range("B9"), Range("B10")) 'ici tu ajoutes toutes les cellules concernées
If Not Application.Intersect(Target, PL) Is Nothing Then 'condition : si la cellule sélectionnée fait partie de la plage PL
    SendKeys "%{down}"
End If
End Sub
 
Re : Macro liste déroulante

Re,

sur l'idée de Robert🙂, j'espère qu'il ne m'en voudra pas....

Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Not Intersect(Target, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then
    SendKeys "%{down}"
End If
Application.EnableEvents = True
End Sub
bon après midi
@+
 
Re : Macro liste déroulante

Re,

au cas ou aucune liste de validation présente sur la feuille :
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
If Not Intersect(Target, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then
    If Err.Number = 0 Then SendKeys "%{down}"
End If
On Error GoTo 0
Application.EnableEvents = True
End Sub

Edition : rajouté un test, utile si pas de validation dur la feuille
 
Dernière édition:
Re : Macro liste déroulante

Re,

au cas ou aucune liste de validation présente sur la feuille :
Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
On Error Resume Next
If Not Intersect(Target, Me.Cells.SpecialCells(xlCellTypeAllValidation)) Is Nothing Then
    If Err.Number = 0 Then SendKeys "%{down}"
End If
On Error GoTo 0
Application.EnableEvents = True
End Sub

Edition : rajouté un test, utile si pas de validation dur la feuille

Merci de vous être penché sur ma question. ça fonctionne bien, mais je ne peux plus supprimer la valeur qui a été saisie.
Cdt
 
- 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
14
Affichages
255
Réponses
1
Affichages
353
Réponses
4
Affichages
223
Réponses
4
Affichages
258
Retour