Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2024 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Deux menus déroulant liés

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Deux menus déroulant liés

n°1471805
Amerigo2
Posté le 07-11-2006 à 20:15:44  profilanswer
 

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!)

mood
Publicité
Posté le 07-11-2006 à 20:15:44  profilanswer
 

n°1471838
seniorpapo​u
Posté le 07-11-2006 à 21:11:30  profilanswer
 

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

n°1471865
Amerigo2
Posté le 07-11-2006 à 21:56:59  profilanswer
 

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.

n°1472013
seniorpapo​u
Posté le 08-11-2006 à 07:57:18  profilanswer
 

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

n°1472587
Amerigo2
Posté le 08-11-2006 à 19:41:14  profilanswer
 

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!

n°1472594
seniorpapo​u
Posté le 08-11-2006 à 19:51:21  profilanswer
 

Bonsoir,
C'est tout à fait cela . Il est dommage que la plage de validation ne puisse se trouver dans une autre feuille.
@+

n°1472697
galopin01
Posté le 09-11-2006 à 04:50:14  profilanswer
 

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+


Message édité par galopin01 le 09-11-2006 à 04:50:50
n°1472706
seniorpapo​u
Posté le 09-11-2006 à 06:53:22  profilanswer
 

bonjour,
Aloïs a encore frappé
Je vais revoir ma copie dans la journée
 
Merci galopin01

n°1472707
seniorpapo​u
Posté le 09-11-2006 à 07:16:51  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Deux menus déroulant liés

 

Sujets relatifs
Javascript : Probleme de menu deroulant[resolu] Pas fait pour les ordis portables les menus déroulants ?!
java SWING - Panneau déroulant[RESOLU] Menu déroulant en HTML
[Access] Faire défiler un menu déroulant avec la flèche du clavierTaille d'un SELECT déroulant
Place d'un menu déroulant[PHP... ou autres] trouver les termes liés dans un texte
Menu déroulantPositionnement de blocs et de menus
Plus de sujets relatifs à : Deux menus déroulant liés


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR