comment générer une action sur l'evenement choix d'un champs dans une liste.

N

nychko

Guest
Bonjour à tous je suis peut etre pas tres clair dans ma demande.
je vous explique.
J'ai créé une liste dans la cellule A1 à l'aide de validation .. liste.
dans cette liste j'ai deux choix A OU B.
je voudrais que lorsque je choisis A, apparaisse dans la cellule d'à coté une liste où la source serait situé dans la plage D1:D4. alors que si je choisi B à coté apparaitrait une autre liste avec une autre source...
Mon soucis est de savoir si sur un evement choix d'un champs dans une liste on peut faire une action résultante?
J'espere etre clair.
Je vous remercie pour votre aide.
 
L

Lord Nelson

Guest
Salut Nychko,

Voici un exemple de procédure qui change la plage de références d'une liste de validation située en B1 :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
With Range("B1").Validation
.Delete
If Target.Text = "Jours" Then
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$D$1:$D$7"
Else
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$E$1:$E$12"
End If
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub

Dans cet exemple, si l'on choisis "Jours" en A1, la liste de B1 propose les jours de la semaine, sinon les mois de l'année.

A+
Horatio
 
J

Jacques

Guest
Salut nychko, salut lord nelson

Un autre exemple en pièce jointe sans passer par VBA, pour ce qui est des listes de validation et de leurs utilisation, tu peux consulter le coffret des liste téléchargeable créé par Celeda, c'est très interressant.

J'espère avoir apporté de l'eau à ton moulin.

@ plus

Jacques
 

Pièces jointes

  • listenychko.zip
    1.9 KB · Affichages: 25
J

Jacques

Guest
Re nychko,

si tu veux que la cellule B3 s'efface quand tu change A3, rajoute le code suivant dans VBA :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$3" Then
Range("b3").Value = ""
End If
End Sub

Bon courage

Jacques
 
L

Lord Nelson

Guest
Oui Jacques, tu as raison !

Il n'est pas nécessaire de passer par VBA, on peut s'appuyer sur une formule en paramétrant la validation.

J'ai fait un autre test avec SI :
=SI(A20="Jours";$D$1:$D$7;$E$1:$E$12)
et ça marche aussi.

Merci à toi, à Nichko et à Celeda, j'ai encore appris quelque chose aujourd'hui.

Vive XLD !
Horatio
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz