Macro liste déroulante

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
 

Robert

XLDnaute Barbatruc
Repose en paix
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
 

Pyton

XLDnaute Nouveau
Re : Macro liste déroulante

Tu peut regarder du coté d'une fonction personnalisé. Voici un exemple que tu peut adapter.

Peut-être que cela peut t'aider.
Pyton
 

Pièces jointes

  • Fonction macro liste déroulante sans vide test.xls
    69.5 KB · Affichages: 33

Pierrot93

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

Pierrot93

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

pajude

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

Discussions similaires

Statistiques des forums

Discussions
312 896
Messages
2 093 388
Membres
105 716
dernier inscrit
jrmdprt