XL 2019 liste déroulante sans doublons, sans vide, sans passer par un colonne intermédiaire.

frederic78

XLDnaute Nouveau
Bonjour,
existe t-il un moyen de créer une liste déroulante sans passer une colonne intermédiaire pour éviter les doublons ?
merci de votre aide
 

job75

XLDnaute Barbatruc
Bonjour frederic78, Jean-Marie,

La solution classique passe par une plage supplémentaire avec une formule matricielle.

Si vous n'en voulez pas il faut du VBA.

Voyez le fichier joint et cette macro qui construit la liste en dur :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, r As Range, f$
Set cel = [A2] 'à adapter
cel.Validation.Delete 'RAZ
If Target.Address <> cel.Address Then Exit Sub
Set r = Range("C2", Range("C" & Rows.Count).End(xlUp)) 'à adapter
If r.Row < 2 Then Exit Sub
For Each r In r
    If r <> "" Then If InStr(f & ",", "," & r & ",") = 0 Then f = f & "," & r
Next
cel.Validation.Add xlValidateList, Formula1:=Mid(f, 2) 'création de la liste en dur, elle est limitée à 8192 caractères
End Sub
Comme toutes les formules cette liste est limitée à 8192 caractères.

Edit : non, c'est 255 caractères, voyez ce fil :

https://excel-downloads.com/threads/macro-liste-deroulante-bug.20083737/#post-20651694

A+
 

Pièces jointes

  • Classeur(1).xlsm
    16.4 KB · Affichages: 11
Dernière édition:

job75

XLDnaute Barbatruc
d'ailleurs si ma liste déroulante est sur une autre feuille j'adapte comment cette macro
La macro doit être placée dans le module de la feuille où l'on crée la liste de validation puisque c'est une SelectionChange.

Si la liste originale est dans une autre feuille il faut préciser cette feuille pour définir la plage r.

Et ajouter cette macro dans le même module que la SelectionChange :
VB:
Private Sub Worksheet_Activate()
Worksheet_SelectionChange ActiveCell
End Sub
 

Discussions similaires

Réponses
3
Affichages
149

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 678
dernier inscrit
arno12345678