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.
UNIQUErenvoie les différentes valeurs sous forme de matrice déversée ;COUNTAcompte 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
