XL 2013 Liste déroulante sans doublon

WIsh_

XLDnaute Occasionnel
Bonjour à tous,

Je cherche une formule qui permette d'afficher dans une liste déroulante une seule fois chaque valeur présente dans une colonne d'une table.

J'ai une table (tableau3) avec 200 lignes qui ont en colonne [Date] la date .

La liste déroulante me renvoie 200x la date 01/01/2020 et j'aimerais qu'elle ne me la renvoie qu'une seule fois.
=INDIRECT("Tableau3[DATE]")

Le tableau3 est évolutif et il y aura demain 400 lignes dont 200 avec la date 13/01/2021.

J'aimerais que la liste déroulante renvoie deux choix : 01/01/2021 et 13/01/2021 et pas 200x chaque date...

Merci d'avance,
Wish
 
Dernière édition:

job75

XLDnaute Barbatruc
D'accord, utilisez ce fichier (2) et la macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next 'sécurité
[A:A].Copy [C1] 'copier-coller
ListObjects(2).Range.RemoveDuplicates 1, xlYes 'supprime les doublons
With ListObjects(2).Range
    .Cells(Application.Match(Application.Max(.Value2), .Value2, 0)).Delete xlUp 'supprime la date la plus récente
End With
With [Choix_Date].Validation 'cellule nommée
    .Delete
    .Add xlValidateList, Formula1:="=" & ListObjects(2).DataBodyRange.Address(External:=True)
    .Parent = "" 'RAZ au cas où...
    .Parent = Application.Max(ListObjects(2).Range) 'date la plus récente
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
PS : je ne vois pas pourquoi vous utilisez le format "m/j/aaaa" mais bon...
 

Pièces jointes

  • liste choix date(2).xlsm
    23.6 KB · Affichages: 16
Dernière édition:

job75

XLDnaute Barbatruc
A quoi correspond listobject(2) ? Au 2ème listobject de la feuille ou du classeur ?
De la feuille, celle-ci n'est pas précisée devant ListObjects(2) puisque nous sommes dans son code.
Cela ne marche qu'une fois. Si je modifie une seconde fois la liste des dates, il n'y a plus d'update chez moi
Je ne comprends pas, vous avez peut-être mal copié ou modifié la macro ? La macro ne peut plus s'exécuter s'il n'y a pas Application.EnableEvents = True à la fin.

Enfin pour faire bon poids voyez ce fichier (3) et cette macro dans le code de Feuil1 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [Choix_Date].Address And Target(1) = "" Then Feuil2.[A1] = Feuil2.[A1] 'lance la macro
End Sub
 

Pièces jointes

  • liste choix date(3).xlsm
    27.3 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou