Faire Apparaitre une liste déroulante en fonction d'une autre liste déroula

Bonjour

je souhaiterai faire apparaitre une liste déroulante en fonction d'une autre liste déroulante,

mais sans feuille supplémentaire, car je dois sortir un .txt (tabulé) merci de notre aide.

exemple:

CELLULE 1 CELLULE 2

Choix 1 -----------------Liste A

Choix 2 ----------------Liste B

Choix 3 -----------------Liste C

Bonjour,

Dans ce cas, il te faut utiliser les valeurs en dur dans le code. Une liste de validation en cellule A1 et pour le test, entrer les valeurs "Choix 1", "Choix 2", et "Choix 3", le résultat en cellule B1 :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address(0, 0) <> "A1" Then Exit Sub

    With Range("B1").Validation

        .Delete

        Select Case Target.Value
            Case "Choix 1"
                .Add xlValidateList, , , "Valeur 1 pour choix 1,Valeur 2 pour choix 1,Valeur 3 pour choix 1"

            Case "Choix 2"
                .Add xlValidateList, , , "Valeur 1 pour choix 2,Valeur 2 pour choix 2,Valeur 3 pour choix 2"

            Case "Choix 3"
                .Add xlValidateList, , , "Valeur 1 pour choix 3,Valeur 2 pour choix 3,Valeur 3 pour choix 3"

        End Select

    End With

End Sub

un grand merci

Mais c'est avec plaisir

encore une petite demande, j'ai essayé de faire en sorte que ce code fonctionne pour chaque ligne mais sans succes

Je pars du postulat que les cellules en colonne A ont toutes une liste de choix avec "Choix 1", "Choix 2" et "Choix 3" (pour le test bien sûr) ce qui va créer une liste de choix en colonne B :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column > 1 Then Exit Sub
    If Target.Count > 1 Then Exit Sub

    With Target.Offset(, 1).Validation

        .Delete

        Select Case Target.Value
            Case "Choix 1"
                .Add xlValidateList, , , "Valeur 1 pour choix 1,Valeur 2 pour choix 1,Valeur 3 pour choix 1"

            Case "Choix 2"
                .Add xlValidateList, , , "Valeur 1 pour choix 2,Valeur 2 pour choix 2,Valeur 3 pour choix 2"

            Case "Choix 3"
                .Add xlValidateList, , , "Valeur 1 pour choix 3,Valeur 2 pour choix 3,Valeur 3 pour choix 3"

        End Select

    End With

End Sub

merci mais je ne comprend pas comment tu cible A et B ?

Cette ligne de code cible la colonne A qui porte, on se doute bien le numéro 1 donc :

If Target.Column > 1 Then Exit Sub

si la cible a un numéro de colonne supérieur à 1 c'est tout simplement que ce n'est pas la colonne A et dans le cas contraire (c'est bien la colonne A) on sait que la colonne B est juste à coté à sa droite donc il suffit de décaler de une colonne :

Target.Offset(, 1)

le fait qu'il n'y ait rien avant la virgule revient à faire :

Target.Offset(0, 1)

pourquoi mettre alors la virgule et ne pas faire simplement ;

Target.Offset(1)

et bien tout simplement parce que le premier argument "RowOffset" Offset([RowOffset], [ColumnOffset]) (quand un argument est entouré de crochets [ ] il est facultatif) est le numéro de ligne et dans ce cas, on décale d'une ligne vers le bas en restant sur la même colonne puisque par défaut la valeur de "ColumnOffset" est 0 !

En espérant avoir été assez clair pour que tu comprennes mais dans le cas contraire, surtout n'hésites pas à revenir !

Bonjour

dsl d'etre un peu lent, j'ai essayé dans tous les sens je n'y arrive pas

je te partage mon fichier merci merci merci

6classeur1.xlsm (12.93 Ko)
Rechercher des sujets similaires à "apparaitre liste deroulante fonction deroula"