Comment Créer une liste sans doublon sur Excel.

2
42637

Les listes déroulantes son un des nombreuses fonctionnalités d’Excel que nous utilisons souvent mais il nous arrive souvent d’être confronter à une liste qui comporte des doublons et dans cette vidéo je vais vous montrez comment vous pouvez créer une liste avec des donnée unique cela veut dire une liste sans doublon.

Création d’une simple liste.

Alors ici je vous présente une petite base de données qui comporte les villes de la Belgique ainsi qua quel arrondissement elle appartiennent.

Dans notre exemple ici j’aimerais donc créer une liste déroulante des arrondissements. Pour cela je vais sélectionner la colonne des arrondissements et le nommer arrond. Puis dans une cellule je vais placer une liste ou je vais récupérer les données qui sont stocker sous le nom arrond.

Quand on navigue dans notre liste on s’aperçois vite qu’il y a des doublons

Alors ce qui m’intéresse c’est d’avoir des résultats uniques.

Méthode manuelle.

Alors la première méthode que nous allons voire est une méthode manuelle ou nous allons sélectionner la colonne arrondissement puis la coller dans une autre cellule.

Pour finir nous allons sélectionner le tout puis dans données on sélectionne supprimer les doublons. Et pour finir on va sélectionner le résultat qu’on a et le nomme nouvelle newarrond pour le faire afficher dans notre liste.

Désormais notre liste comporte des entrées uniques. Le problème ici c’est que si on ajoute de nouvelle donnée dans notre tableau il faudra à nouveau refaire cette manipulation.

Bien sur vous pouvez utiliser la technique des macros que nous avion vu pour automatiser cela pour vous mais nous allons voir une autre méthode sans code ou macro mais purement avec des bonne veille formule.

Filtré notre liste avec une formule.

Ce que nous allons faire c’est en fait filtré notre colonne grâce aux formules de base qui sont INDEX, EQUIV et NB.SI pour réaliser cela.

Alors pour commence nous allons avoir besoin de la formule index pour afficher un résultat après lui avoir donner le numéro de ligne donc un simple

=INDEX(Tableau1[Arrondissement];1)

Suffit pour nous afficher le premier résultat de notre liste mais désormais le truc va être de créer un tableau avec les données précédent et de contrôler si la valeur existe déjà donc s’il existe on la valeur est vrais mais nous on veut une valeur qui est faux.

Cela nous va le faire avec la fonction NB.SI et donc si je fais une recherche sur une ville dans une plage de donnée ou la ville n’apparais pas on obtient un 0 donc un faux. Par contre si on obtient un 1 un vrais alors c’est un doublon et on ne le veut pas.

Cela nous allons devoir vérifier ligne par ligne avec la fonction et capturer le numéro de ligne une fois le résultat 0 trouver qui voudra dire qu’il est unique.  

=EQUIV(0;NB.SI(H3;E3:E7);0) vue que nous allons créer un tableau (array) il faut valider la formule avec un maj + ctrl + entree

Pour finir nous allons placer notre résultat de ligne dans une fonction index comme suite pour afficher les entrées uniques.

=INDEX(Tableau1[Arrondissement];EQUIV(0;NB.SI($K$2:K2;Tableau1[Arrondissement]);0))

Filtré notre liste avec du code sans doublons avec du VBA.

Désormais nous allons voir comment ont peut faire la même manipulation avec du vba. Mais avant de commencer nous allons devoir sélectionner la colonne que nous voulons extraire les valeurs unique incompris le titre sinon il y aura 1 doublons et le nommer.

Dans mon exemple j’ai nommé la plage de donnée Tabliste. Puis nous allons créer un module et placer le code suivant.

C’est tout simple en gros nous avons effectuer un filtre avancé rien de plus.

Création de la liste déroulante sans doublon

Maintenant nous allons sélectionner la plage de donnée qui comporte les informations de notre liste. Et nous allons la nommer listearrond. Pour finir nous allons placer une liste déroulante qui comporte ces données.

Yeaa nous avons notre liste déroulante sans doublons mais il y a un petit problème car notre liste comporte à la fin des lignes blanche donc vide.

Pour éviter cela nous allons devoir créer un champ nommé qui vas calculer le nombre de cellule qu’il faut sélectionner avec la formule suivant que nous allons placer dan listearrond.

=DECALER($K$3;;;NB.SI($K$3:$K$400; »?* »))

Avec le signe ? et * nous allons simplement dire que le critère à au moins un caractère. Désormais notre liste ne comporte plus de ligne vide mais uniquement des valeurs uniques. Pour tester je vais placer une nouvelle ville deux fois et voir s’il est bien repris 1 seule fois dans notre liste

Tout fonctionne parfaitement.

Bien sur il y a d’autre façon de créer une liste déroulante unique je pense notamment à la nouvelle fonction filtre qui devrais sortir d’ici peut sur Excel 365 ou il sera possible d’extraire avec une simple fonction les valeurs uniques dans un tableau. Dès que cette fonction sortira officiellement je ferais une vidéo sur le sujet mais pour ceux qui ne travaille pas avec les dernière version cette méthode vous aidera. Aller je vous retrouve dans un prochain cours.

2 Commentaires

  1. Bonjour,
    J’essaie d’utiliser votre formule sans doublon suivante
    =SIERREUR(INDEX(groupe;EQUIV(0;INDEX(NB.SI($I$1:I1;groupe););0)); » »)
    pour une liste déroulante.
    Cela fonctionne à un détail près, c’est qu’il m’insère un 0 dans la liste.
    Auriez-vous une idée du pourquoi ?
    merci de votre réponse
    Cordialement

  2. Bonjour. Je travail sur un fichier de planning equipe. Il y a un système de rotations et des horaires variables. Je souhaite enregistrer tous les horaires de chaque salarié et de chaque jour dans une base de donnee excel car chaque mois je fais dois faire une feuille de presence avec les horaires réellement réalisés. Ma question est: comment enregistrer en vba ma feuille excel dans une base de donnee. En empêchant les doubles enregistrement ( donc doublons) et pouvoir modifier la base de donnee suite à des horaires modifiés après l élaboration du planning (absence salariée retard etc … ) merci d’avance !!

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.