Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

Pièces jointes

  • Liste de choix dynamique.xlsx
    8.9 KB · Affichages: 14

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @galoulozere,

Un exemple de ce qu'on peut faire avec des formules et deux noms dynamiques.
Le comment est expliqué dans le fichier.

edit : rajouté dans le fichier une MFC qui colore les cellules de la colonne E en rose si le choix dans la colonne D et la valeur de la colonne E sont incompatibles.
 

Pièces jointes

  • galoulozere- Liste de choix dynamique- v1.xlsx
    14.8 KB · Affichages: 15
Dernière édition:

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
 

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
 

Pièces jointes

  • galoulozere- Liste de choix dynamique- v2.xlsm
    24.9 KB · Affichages: 11
Dernière édition:

Discussions similaires

Réponses
15
Affichages
563
Réponses
8
Affichages
439
Réponses
2
Affichages
282
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…