Microsoft 365 Liste de choix dynamique

galoulozere

XLDnaute Nouveau
Bonjour
J'ai eu beau chercher dans de multiples endroits, je ne trouve pas ce dont j'ai besoin

Je souhaite que la colonne A soit une liste de choix pour remplir la colonne D, sans doublons
Et je veux une liste de choix pour la colonne E, les données étant en colonne B, mais dépendants de ce que l'on choisi en D

J'espère que je suis clair

Merci par avance pour votre temps
Gael
 

Fichiers joints

galoulozere

XLDnaute Nouveau
Bonjour
Merci pour la réponse
Cette solution, je l'avais déjà

Mon problème, c'est que les données vont évoluer et je ne peux pas les anticiper
Je souhaite créer ma liste depuis la colonne A sans la copier dans une autre

Merci encore
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Mon problème, c'est que les données vont évoluer et je ne peux pas les anticiper
Cette méthode s'adapte aux données de la colonne A et B.

La moindre des choses, c'est de préciser ce que vous avez déjà expérimenté et qui ne vous convient pas. Ainsi vous ne faites pas travailler les autres pour des prunes.
 

chris

XLDnaute Barbatruc
Bonjour à tous

Par formule nommée tu ne peux créer une liste utilisable en validation à partir des éléments en colonne A et B.
Même en utilisant UNIQUE ou TRIERPAR qui génèrent des matrices dynamiques, ces fonctions n'étant pas directement acceptées par la validation et ces matrices ne pouvant être a priori explorées par EQUIV, DECALER...

Il faut une liste physique comme base de la validation (qui peut être créée par UNIQUE ou TRIERPAR)

Tu peux par contre utiliser PowerQuery pour créer dynamiquement ces listes à partir de A et B, plutôt que des formules
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re, bonjour @chris ;),

Une version par VBA pour la feuille "Feuil2".
Le code est dans le module de la feuille "Feuil2".

nota : on pourrait ne pas effacer la cellule de la colonne E quand la cellule de la colonne D est modifiée. Il vaut mieux alors mettre une MFC sur la colonne E pour montrer que les valeurs de la colonne D et de la colonne E sont éventuellement incohérentes.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Count = 1 And Target.Column = Range("d1").Column Then Target.Offset(, 1) = ""
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n&, t, d As New Dictionary, i&
If Target.Count = 1 And Target.Column = Range("d1").Column Then
   n = Application.WorksheetFunction.CountA(Columns("a:a"))
   t = Columns("a:a").Resize(n): d.CompareMode = TextCompare
   For i = 2 To UBound(t)
      If t(i, 1) <> "" Then d(t(i, 1)) = ""
   Next i
   With Target.Validation
      .Delete
      .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
      xlBetween, Formula1:=Join(d.Keys, ",")
   End With
ElseIf Target.Count = 1 And Target.Column = Range("e1").Column Then
   n = Application.WorksheetFunction.CountA(Columns("a:a"))
   t = Columns("a:b").Resize(n): d.CompareMode = TextCompare
   For i = 2 To UBound(t)
      If t(i, 1) = Target.Offset(, -1) And Target.Offset(, -1) <> "" Then d(t(i, 2)) = ""
   Next i
   With Target.Validation
      .Delete
      If d.Count > 0 Then
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
         xlBetween, Formula1:=Join(d.Keys, ",")
      End If
   End With
End If
End Sub
 

Fichiers joints

Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas