XL 2010 Liste déroulante sous condition

pompier83

XLDnaute Nouveau
Bonjour à tous je viens vous redemandez un peut aide s'il vous plait

je souhaiterais créer des listes déroulantes qui se remplissent sous condition de la valeur des autres listes déroulantes .

exemple:

en A1 j'ai une Liste déroulant avec dedans une liste de nom issus de l'onglet liste A1:A10
en A2 j'ai une Liste déroulant avec dedans une liste de nom issus de l'onglet liste A1:A10
idem en A3 j'ai une Liste déroulant avec dedans une liste de nom issus de l'onglet liste A1:A10

je souhaiterait que si je sélectionne Toto1 en A1 dans les liste déroulante A2 et A3 Toto1 apparais plus si j’enlève Toto1 en A1 en A2 et A3 Toto1 réapparait dans la liste

existe t'il une solution en macro ou autre pour résoudre mon problème s'il vous plait un grand merci d'avance
 

Pièces jointes

pompier83

XLDnaute Nouveau
Bonjour r@chid et merci pour ton aide je vois que c'est une solution à l'aide de formule matriciel et liste que je maitrise pas vraiment je vais essayer tous de même tenter de l'adapter au projet mais si quelqu'un à une idée version macro je suis preneur également je te renouvelle mes remerciements
 

Chris401

XLDnaute Accro
Re

Le bug arrive quand DISPO n'a pas de données ; ce qui fait qu'il n'y a pas de cellules à vider.

Pour contourner ce problème, modifie le code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Sheets("Liste").[F2:H2] = "X"

If Not Intersect([A2:A14], Target) Is Nothing And Target.Count = 1 Then
    [Dispo1].ClearContents
        For Each c In [Groupe1]
            If IsError(Application.Match(c, Range(Cells(2, Target.Column), Cells(14, Target.Column)), 0)) Then
                Sheets("Liste").[F65000].End(xlUp).Offset(1, 0) = c
            End If
        Next c
End If
If Not Intersect([B2:B14], Target) Is Nothing And Target.Count = 1 Then
    [Dispo2].ClearContents
        For Each c In [Groupe2]
            If IsError(Application.Match(c, Range(Cells(2, Target.Column), Cells(14, Target.Column)), 0)) Then
                Sheets("Liste").[G65000].End(xlUp).Offset(1, 0) = c
            End If
        Next c
End If
If Not Intersect([C2:C14], Target) Is Nothing And Target.Count = 1 Then
    [Dispo3].ClearContents
        For Each c In [Groupe3]
            If IsError(Application.Match(c, Range(Cells(2, Target.Column), Cells(14, Target.Column)), 0)) Then
                Sheets("Liste").[H65000].End(xlUp).Offset(1, 0) = c
            End If
        Next c
End If
End Sub
 
Dernière édition:

Discussions similaires

Réponses
29
Affichages
794
Réponses
10
Affichages
479
Réponses
8
Affichages
575
Réponses
15
Affichages
959
Réponses
1
Affichages
403

Statistiques des forums

Discussions
315 297
Messages
2 118 164
Membres
113 441
dernier inscrit
elddr40