Liste déroulante "conditionelle"

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Thrimph

XLDnaute Nouveau
Bonjour

Nouvel inscrit sur ce forum, je sollicite votre aide non sans avoir cherché une solution à mon problème, solution que je n'ai pas trouvé (certainement du à une mauvaise recherche car je suis sur que le problème a déjà été soulevé).

Je m'explique:

J'ai un fichier excel dont le premier classeur contient une liste de pays en 1ère colonne, puis sur la 1ère ligne de chaque colonne, le nom d'un produit. Dans le reste du classeur, je met des croix si le produit est commercialisé dans le tableau.

Chaque autre classeur du fichier correspond à un produit. Dans chaque classeur je vais mettre diverses infos concernant le produit. L'une d'entre elle est la liste des produits dans lesquels le produit est commercialisé. Ainsi, je veux faire une liste déroulante qui va m'afficher la liste des pays pour lesquels il y aura une croix sur le premier classeur.
Par exemple, pour le produit A, je ne veux que les Pays 1, 2 et 4.

Aussi bête que cela à l'air, je n'y arrive pas 🙁

Voila pourquoi je sollicite votre aide. Cerise sur le gateau, si celle liste peut être évolutive (ajout d'une croix qui se répercute sur la liste voire même ajout d'un nouveau pays) ce serait tip top

Un grand merci d'avance

PS : Pour mieux comprendre, le fichier excel est en PJ.
 

Pièces jointes

Re : Liste déroulante "conditionelle"

Bonjour,

Voir PJ

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$B$8" Then
    Set d = CreateObject("Scripting.Dictionary")
    Set f = Sheets("Liste Pays Produit")
    p = Application.Match([B1], f.[B1:D1], 0)
    If Not IsError(p) Then
     For Each c In f.Range("B2:B8").Offset(, p - 1)
       If c = "x" Then d(c.Offset(, -p).Value) = ""
     Next c
     Target.Validation.Delete
     Target.Validation.Add xlValidateList, Formula1:=Join(d.keys, ",")
    End If
  End If
End Sub

JB
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
263
Réponses
8
Affichages
175
Réponses
4
Affichages
537
Réponses
10
Affichages
335
Retour