OVH Cloud OVH Cloud

menu deroulant

2 réponses
Avatar
marco
J' ai deux colonnes A et B. Je voudrais créer un menu déroulant qui dans un
premier temps me restreigne à un choix dans la liste A. Puis ce choix
effectué, je souhaiterais voir apparaître une deuxieme liste provenant de B
dont le choix est restreint par mon premier choix.
Exemple je choisis boulangerie en A (au lieu de Boucherie) et alors je vois
apparaitre ce qui se vend dans la boulangerie pour effectuer mon choix. Une
sorte de liste en cascade....
Ma base de données aurait la forme suivante
A B
Boulangerie pain
Boucherie baguette
bonbons
viande
jambon

Merci d'avance

2 réponses

Avatar
Vincnet.
Bonjour,
Bon, j'ai fait un truc comme ça il y a pas longtemps, mais
c'est un peu chaud à expliquer par mail... Tu n'as pas une
adresse où je pourrai t'envoyer le fichier ?
A+
V.
Avatar
Daniel
Bonsoir.
Voila comment j'ai organisé ma feuille :
Colonne A : les commerces à saisir par liste de validation classique.
Colonne B : denrées à saisir par liste de validation dynamique.
de C1 à n1 : liste des commerces
en dessous de chaque commerce, les denrées vendues par exemple :
C1 : Boulangerie, C2 : pain, C3 : baguette
Macro à mettre dans thisworkbook :

Private Sub Workbook_Open()
Plage = "=$C$2"
Columns("B:B").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:=xlBetween, _
Formula1:=Plage
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub

Macro à mettre dans la feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Commerce As String, Deplacement As String, Cellule As Range
If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Set Cellule = Target
Commerce = Target.Offset(0, -1).Value
Deplacement = Application.Match(Commerce, Range("C1",
Range("C1").End(xlToRight)), 0)
Range("C1").Offset(1, Deplacement - 1).Select
Plage = "=" & Range(Selection, Selection.End(xlDown)).Address
Columns("B:B").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:=xlBetween, _
Formula1:=Plage
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
Cellule.Select
Application.EnableEvents = True

End Sub

Cordialement.
Daniel

"marco" a écrit dans le message de news:

J' ai deux colonnes A et B. Je voudrais créer un menu déroulant qui dans
un
premier temps me restreigne à un choix dans la liste A. Puis ce choix
effectué, je souhaiterais voir apparaître une deuxieme liste provenant de
B
dont le choix est restreint par mon premier choix.
Exemple je choisis boulangerie en A (au lieu de Boucherie) et alors je
vois
apparaitre ce qui se vend dans la boulangerie pour effectuer mon choix.
Une
sorte de liste en cascade....
Ma base de données aurait la forme suivante
A B
Boulangerie pain
Boucherie baguette
bonbons
viande
jambon

Merci d'avance