Deux menus déroulant liés - VB/VBA/VBS - Programmation
Marsh Posté le 07-11-2006 à 21:11:30
Bonsoir,
peux-tu mettre tous les modèles d'un constructeur sur une ligne (ou une colonne) distincte? avec en tête de ligne (ou de colonne) le nom du constructeur.?
cela permettrait de sélectionner en vb la ligne ou la colonne qui servira au second menu déroulant.
Cordialement
Marsh Posté le 07-11-2006 à 21:56:59
Oui, c'est tout à fait possible (en fait je réserve toujours une feuille cachée sous excel où je place toute mes données pour la programmation).
Cependant, je ne vois pas comment tu vas faire sous VB pour que le second menu déroulant se "mette à jour" automatiquement, c'est à dire sans passer par l'intermédiaire d'une macro commandée par un command boutton par ex?
J'attend ton idée pour continuer ! Merci
Amicalement.
Marsh Posté le 08-11-2006 à 07:57:18
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Range)
'le Premier menu déroulant est en col A1
'Le deuxiéme est sur la même feuille
' La colonne E est supposée être celle de liste de validation du deuxième menu
'La feuille deux contient par colonne le constructeur puis les véhicules
' Le menu 2 aura en première ligne le nom du constructeur, à gèrer si necessaire
If Target.Column = 1 Then
jecherche = Target.Value
With Sheets(2).Range("a1:iv1" )
Set fifi = .Find(What:=jecherche, After:=ActiveCell, LookIn:=xlFormulas)
cascade = fifi.Address(RowAbsolute:=False, ColumnAbsolute:=False)
zone = "$" & Left(cascade, Len(cascade) - 1)
End With
Sheets(2).Range(zone & ":" & zone).Copy Sheets(1).Range("e1" )
End If
End Sub
Cordialement
Marsh Posté le 08-11-2006 à 19:41:14
Merci bien ! Et pour le principe de fonctionnement, si je comprend bien, tu copies la plage de données de la feuille 2 que tu insères dans la plage de validation du second menu de la premiere feuille!
Marsh Posté le 08-11-2006 à 19:51:21
Bonsoir,
C'est tout à fait cela . Il est dommage que la plage de validation ne puisse se trouver dans une autre feuille.
@+
Marsh Posté le 09-11-2006 à 04:50:14
bonjour,
Citation : Il est dommage que la plage de validation ne puisse se trouver dans une autre feuille |
C'est possible à condition d'utiliser des plages nommées (Insertion / Nom / Définir) et non pas les adresses.
A+
Marsh Posté le 09-11-2006 à 06:53:22
bonjour,
Aloïs a encore frappé
Je vais revoir ma copie dans la journée
Merci galopin01
Marsh Posté le 09-11-2006 à 07:16:51
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Range)
'le Premier menu déroulant est en col A
'le deuxième en B
'Donner à chaque colonne de la feuil2 le nom du constructeur
'commencer la liste de chaque véhicule en ligne 1
'pas besoin de zone de validation sur feuil1 pour le menu2
'Net avantage : pour chaque cellule le menu2 reste adapté dans le cas d'une modification de contenu
' Encore Merci Galopin01
If Target.Column = 1 Then
Range("B" & Target.Row).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Target.Value
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End Sub
Cordialement
Marsh Posté le 07-11-2006 à 20:15:44
Bonjour,
je souhaite réalisé un second menu déroulant qui dépende du choix effectué à partir d'un premier menu déroulant.
L'exemple suivant, concret, permet je pense de bien comprendre.
Dans A1, je fais un menu déroulant qui permet de selectionner un constructeur automobile, puis dans B1, je souhaite
faire un menu qui permette de choisir le modèle de véhicule. Ex : Si je sélectionne RENAULT, le second menu me
propose les modèles MEGANE, ESPACE ..., mais si je choisi dans A1 PEUGEOT, je dois pouvoir selectionner dans le menu
suivant 107, 207 ...
La solution temporaire mise en place est assez peu pratique, j ai un menu déroulant avec les constructeur et un second
menu avec tous les modèles confondus (et la liste est longue!!!)
Je créé mes menus en nommant une plage de données, puis DONNEES/ VALIDATION/ LISTE.
Merci pour votre aide (la molette de ma souris vous en sera reconnaissante!)