🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Comment compter les valeurs uniques dans Excel — la méthode moderne et la formule classique

|

Comment compter les valeurs uniques dans Excel — la méthode moderne et la formule classique

L'essentiel — Excel n'a pas de fonction COUNTUNIQUE, donc « combien de valeurs différentes y a-t-il ici ? » a deux réponses. Moderne (365/2021) : =COUNTA(UNIQUE(plage)) — déversez les valeurs distinctes, puis comptez-les. Classique (versions plus anciennes) : =SUMPRODUCT(1/COUNTIF(plage, plage)) — une astuce matricielle habile. Les deux partagent un même piège : une cellule vide fausse le comptage, et chacune échoue à sa façon.

=COUNTA(UNIQUE(A2:A100))                          ' moderne : comptage des distinctes
=COUNTA(UNIQUE(FILTER(A2:A100, A2:A100<>"")))     ' moderne, cellules vides exclues
=SUMPRODUCT(1/COUNTIF(A2:A100, A2:A100))          ' classique (casse sur les vides)
=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100, A2:A100&""))  ' classique, sûr face aux vides

« Compter les valeurs distinctes » est l'une des tâches réelles les plus courantes dans Excel, et l'une des rares sans fonction dédiée — raison précise pour laquelle il vaut la peine de comprendre pourquoi chaque approche fonctionne, plutôt que de la coller sans réfléchir.

Ce que vous allez apprendre

  • Pourquoi il n'existe pas de fonction « compter les uniques » unique — et les deux ères de réponses
  • Le motif moderne COUNTA(UNIQUE()), et son piège de cellule vide
  • L'astuce classique SUMPRODUCT(1/COUNTIF()) — et pourquoi elle fonctionne
  • Comment empêcher les cellules vides d'ajouter silencieusement 1 à votre comptage
  • « Valeurs distinctes » vs « valeurs qui apparaissent exactement une fois » — une confusion fréquente

Remarque — noms de fonctions en français : dans une version française d'Excel, COUNTA = NBVAL, UNIQUE = UNIQUE, FILTER = FILTRE, SUMPRODUCT = SOMMEPROD et COUNTIF = NB.SI. Les formules ci-dessous conservent les noms anglais ; le comportement est identique dans les deux langues.

Le modèle mental : il n'existe pas de COUNTUNIQUE — vous en composez un

Si cette tâche paraît malaisée, c'est que vous cherchez une fonction qui n'existe pas. Excel vous donne des pièces à la place, et c'est vous qui assemblez la réponse. Il y a deux assemblages, et celui que vous employez dépend entièrement de votre version d'Excel :

  • Moderne (365, 2021) : obtenez la liste des distinctes, puis comptez-la. UNIQUE renvoie les différentes valeurs sous forme de matrice déversée ; COUNTA compte combien sont revenues. Lisible, et se recalcule en direct à mesure que les données changent.
  • Classique (2019 et antérieur) : pas de UNIQUE, alors vous utilisez une seule formule matricielle, SUMPRODUCT(1/COUNTIF(plage,plage)), qui compte les valeurs distinctes sans jamais les lister.

Si vous êtes sur une version moderne, utilisez le motif moderne — il est plus clair et vous pouvez voir les valeurs distinctes se déverser, ce qui rend le débogage trivial. Ne recourez à la formule classique que lorsque vous devez prendre en charge un fichier plus ancien.

La méthode moderne — et la cellule vide qui ajoute 1

=COUNTA(UNIQUE(A2:A100))

UNIQUE déverse les valeurs distinctes ; COUNTA les compte. Propre — jusqu'à ce qu'il y ait une cellule vide dans la plage. UNIQUE traite le vide comme une valeur : il renvoie un 0 (sa représentation d'une cellule vide) comme l'une des entrées distinctes, si bien que votre comptage revient d'une unité de plus que le nombre de valeurs réelles. C'est la première raison pour laquelle un comptage d'uniques est « décalé de un ».

La solution consiste à retirer les vides avant de compter, avec FILTER :

=COUNTA(UNIQUE(FILTER(A2:A100, A2:A100<>"")))

FILTER ne garde que les cellules non vides, UNIQUE les dédoublonne, COUNTA compte. Cette forme imbriquée — filtrer, dédoublonner, compter — est celle à mémoriser, car les vraies colonnes ont presque toujours des vides en fin de liste. Si FILTER ne trouve rien, il renvoie #CALC!, alors ajoutez FILTER(..., ..., "") comme valeur de repli vide si la plage peut être entièrement vide.

La méthode classique — et pourquoi l'astuce fonctionne vraiment

Sur les versions plus anciennes, la formule canonique est :

=SUMPRODUCT(1/COUNTIF(A2:A100, A2:A100))

Cela ressemble à de la magie, mais la logique vaut la peine d'être comprise, car c'est la clé pour corriger son bug. COUNTIF(plage, plage) renvoie une matrice — pour chaque cellule, combien de fois sa valeur apparaît dans la plage. Si « West » apparaît 4 fois, chacune de ces quatre cellules produit un 4. Prenez 1/cela, et chaque cellule « West » contribue pour 1/4. Quatre cellules × ¼ = 1. Chaque valeur distincte, quel que soit le nombre de ses répétitions, totalise exactement 1 — le grand total est donc le nombre de valeurs distinctes. Comprenez cela et vous n'aurez plus jamais à le mémoriser.

Le hic : si une cellule est vide, COUNTIF renvoie 0 pour elle, vous obtenez 1/0, et l'ensemble s'effondre en #DIV/0!. La version sûre face aux vides neutralise à la fois la division et la contribution de la cellule vide :

=SUMPRODUCT((A2:A100<>"")/COUNTIF(A2:A100, A2:A100&""))

Le &"" fait compter à COUNTIF les vides comme une chaîne vide correspondante (donc pas de diviseur nul), et (A2:A100<>"") place un 0 au numérateur pour les cellules vides afin qu'elles n'ajoutent rien. C'est la même idée que la correction moderne par FILTER, exprimée dans le vocabulaire matriciel d'autrefois. (Pour approfondir ce motif de sommation matricielle, voyez SUMPRODUCT.)

Valeurs distinctes vs valeurs qui n'apparaissent qu'une fois

Elles sonnent pareil sans l'être — les confondre est la réponse fausse et silencieuse la plus fréquente de tout ce sujet :

  • Comptage distinct — combien de valeurs différentes existent. {A, A, B}2. C'est tout ce qui précède.
  • Comptage des valeurs apparaissant exactement une fois — combien de valeurs ne sont pas répétées. {A, A, B}1 (seulement B). Question différente, formule différente :
=SUMPRODUCT(--(COUNTIF(A2:A100, A2:A100)=1))   ' valeurs qui apparaissent exactement une fois
=ROWS(UNIQUE(A2:A100, , TRUE))                 ' moderne : le troisième argument de UNIQUE

Le troisième argument de UNIQUE (exactly_once = TRUE) ne renvoie que les valeurs qui apparaissent une seule fois — pas la liste des distinctes. Si vous voulez « combien de clients différents », c'est le UNIQUE par défaut ; si vous voulez « combien de clients n'ont commandé qu'une fois », c'est exactly_once. Prenez le mauvais et votre comptage est plausiblement, silencieusement faux.

Le choix de jugement

Sur un Excel moderne, la réponse est toujours =COUNTA(UNIQUE(FILTER(plage, plage<>""))) — filtrer les vides, dédoublonner, compter — parce qu'elle est lisible, auto-déboguable (vous voyez le déversement) et sûre face aux vides. Ne gardez l'astuce SUMPRODUCT(1/COUNTIF()) en réserve que pour les fichiers hérités, et toujours dans sa forme &"" sûre face aux vides. Par-dessus tout, assurez-vous de la question à laquelle vous répondez : « combien de valeurs différentes » et « combien de valeurs apparaissent une fois » se ressemblent dans une phrase et produisent des nombres différents sur la feuille.

Comment ExcelMaster aide

Les formules de comptage distinct sont faciles à se tromper subtilement — un décalage de un dû à une cellule vide en fin de liste, un #DIV/0! venu de l'astuce classique, ou la confusion distinct-vs-une-fois qu'aucune erreur ne signale jamais. ExcelMaster vérifie votre version d'Excel, choisit en conséquence le moderne COUNTA(UNIQUE(FILTER(...))) ou la formule classique sûre face aux vides, et — surtout — confirme quelle question vous voulez dire avant d'écrire quoi que ce soit : valeurs distinctes, ou valeurs qui n'apparaissent qu'une fois. Dites « compte les clients distincts, en ignorant les vides », et il renvoie une formule juste pour votre version et votre intention.

Questions fréquentes

Comment compter les valeurs uniques dans Excel ?

Sur Excel 365 ou 2021, utilisez =COUNTA(UNIQUE(plage)), ou =COUNTA(UNIQUE(FILTER(plage, plage<>""))) pour ignorer les cellules vides. Sur les versions plus anciennes, utilisez la formule matricielle =SUMPRODUCT((plage<>"")/COUNTIF(plage, plage&"")), qui compte les valeurs distinctes sans les lister.

Existe-t-il une fonction COUNTUNIQUE dans Excel ?

Non. Excel n'a pas de fonction « compter les uniques » unique. Vous en composez une : UNIQUE + COUNTA sur les versions modernes, ou SUMPRODUCT(1/COUNTIF(...)) sur les plus anciennes. Un tableau croisé dynamique peut aussi afficher un « Nombre de valeurs distinctes » pour une analyse ponctuelle.

Comment compter les valeurs uniques dans un Excel ancien, sans UNIQUE ?

Utilisez =SUMPRODUCT(1/COUNTIF(plage, plage)). Chaque valeur qui apparaît n fois contribue pour n × (1/n) = 1, donc le total est le nombre de valeurs distinctes. Si la plage comporte des vides, utilisez la forme sûre face aux vides =SUMPRODUCT((plage<>"")/COUNTIF(plage, plage&"")) pour éviter une erreur #DIV/0!.

Pourquoi mon comptage d'uniques est-il trop élevé de un ?

Une cellule vide dans la plage est comptée comme une valeur. UNIQUE renvoie une cellule vide sous la forme 0, ce qui ajoute 1 au comptage distinct. Excluez les vides avec =COUNTA(UNIQUE(FILTER(plage, plage<>""))).

Quelle est la différence entre compter les valeurs distinctes et les valeurs qui apparaissent une fois ?

Le comptage distinct traite {A, A, B} comme 2 (deux valeurs différentes). Compter les valeurs qui apparaissent exactement une fois le traite comme 1 (seul B n'est pas répété). Utilisez le UNIQUE par défaut pour les distinctes ; utilisez UNIQUE(plage,,TRUE) ou SUMPRODUCT(--(COUNTIF(plage,plage)=1)) pour les valeurs n'apparaissant qu'une fois.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 07/07/2026.

Guides associés : Fonction UNIQUE d'Excel · Excel COUNTIF · COUNT, COUNTA et COUNTBLANK · Fonction FILTER d'Excel