Cours
Compter les cellules non vides paraît simple… jusqu’à ce que vous vous y mettiez. Vous écrivez une formule COUNTA() et le résultat ne correspond pas à ce que vous voyez à l’écran. Certaines cellules semblent vides mais sont comptées. D’autres contiennent des données, mais sont ignorées.
Dans ce tutoriel, je vous présente toutes les méthodes pour compter les cellules non vides : COUNTA(), COUNTIF(), COUNTIFS(), SUBTOTAL(), et SUMPRODUCT(). Je vous explique quand utiliser chacune, les erreurs à éviter, et comment corriger les problèmes que je vois le plus souvent. À la fin, vous saurez quelle fonction utiliser dans chaque situation.
Compter les cellules non vides avec COUNTA()
COUNTA() est ma fonction de référence pour compter les cellules non vides. Elle compte tout ce qui n’est pas totalement vide : texte, nombres, dates, erreurs, et même les formules qui renvoient des chaînes vides.
Comment fonctionne COUNTA()
La syntaxe est simple :
=COUNTA(value1, [value2], ...)
value1 est la plage à compter. Vous pouvez ajouter jusqu’à 255 arguments, mais en pratique vous utiliserez le plus souvent une seule plage.
Exemple tiré d’un suivi d’enquête que j’ai construit le mois dernier. J’avais 12 répondants, mais certains ont sauté des questions et d’autres ont abandonné en cours de route. Je devais savoir combien avaient réellement renseigné une adresse e‑mail.
=COUNTA(B2:B13)
Le résultat est 10, car deux personnes (Ahmed Hassan et Mohamed Ali) ont laissé le champ e‑mail vide.
Je peux aussi compter sur une ligne pour voir le niveau de complétude de chaque réponse :
=COUNTA(B2:F2)
Pour Sara Ibrahim, la formule renvoie 5 car elle a rempli tous les champs. Pour Nour Mahmoud, =COUNTA(B6:F6) renvoie seulement 1 puisqu’elle n’a fourni que son e‑mail avant d’abandonner.
Quand COUNTA() suffit
Utilisez COUNTA() pour un simple décompte quand vos données sont propres. Si chaque cellule vide de votre plage est réellement vide (jamais touchée, sans formule), COUNTA() fonctionne parfaitement.
Là où ça se complique, c’est lorsque des formules renvoient "" (chaînes vides). Je détaillerai ce cas limite plus loin dans la section « Comment Excel traite les cellules vides vs. les cellules nulles ».
Compter les cellules non vides avec COUNTIF()
COUNTIF() offre une autre façon de compter les cellules non vides. Au lieu de tout compter, elle compte les cellules qui respectent une condition — ici « non vide ».
Le critère "<>"
Voici la formule :
=COUNTIF(B2:B13,"<>")
La partie "<>" signifie « différent de rien », autrement dit « non vide ». Pour la même colonne e‑mail que tout à l’heure, j’obtiens 10, comme avec COUNTA().
Pourquoi ne pas utiliser COUNTIF(range,"*") ?
On voit encore ça dans d’anciens tutoriels, et c’est une erreur. Le joker "*" ne compte que le texte. Il ignore totalement les nombres, les dates et les valeurs VRAI/FAUX. Si votre colonne contient des types mixtes, vous obtiendrez un mauvais total.
Restez sur "<>". Cela fonctionne quel que soit le type de données.
Quand COUNTIF() est préférable à COUNTA()
Le vrai atout de COUNTIF(), c’est qu’elle mène naturellement à COUNTIFS(). Dès que vous devez compter des cellules non vides qui respectent aussi d’autres conditions (département, intervalle de dates…), COUNTIFS() est prête. Si vous pensez ajouter des critères plus tard, commencez avec COUNTIF() pour faciliter la transition.
Pour la plupart des données, COUNTA() et COUNTIF(range,"<>") donnent des résultats identiques. Elles comptent les mêmes éléments, y compris les erreurs et les faux vides des formules. La différence principale, c’est la flexibilité. COUNTIF() est votre passerelle vers le comptage multi‑critères avec COUNTIFS().
Compter des cellules non vides qui respectent des conditions
C’est là que COUNTIF() commence vraiment à briller. COUNTIFS() vous permet de compter les cellules non vides qui remplissent d’autres critères.
COUNTIFS() avec logique « non vide »
Supposons que je suive des formations internes et que je veuille savoir combien de personnes en Sales ont transmis une note. Voici la formule :
=COUNTIFS(B2:B11,"Sales",E2:E11,"<>")
Traduction : « Compter les lignes où Department vaut 'Sales' ET où Score n’est pas vide. » Dans mon suivi, cela renvoie 3, car Mona Sayed est en Sales mais n’a pas encore remis de note.
Plusieurs conditions
Vous pouvez empiler jusqu’à 127 paires critère/plage si besoin. Voici une formule qui compte les employés marqués « Complete » et qui ont aussi une note :
=COUNTIFS(C2:C11,"Complete",E2:E11,"<>")
J’obtiens 6, car Mona Sayed a terminé sa formation mais n’a jamais soumis de note.
Autre exemple : compter les personnes d’Engineering ayant une date d’achèvement :
=COUNTIFS(B2:B11,"Engineering",D2:D11,"<>")
La formule renvoie 3 car la formation d’Omar Mostafa est encore en attente et n’a pas de date.
Le schéma est simple : utilisez "<>" pour la colonne où vous vérifiez le non‑vide, et appliquez vos filtres spécifiques sur les autres colonnes.
Comment Excel traite les cellules « vides » vs. « nulles »
C’est là que surviennent la plupart des erreurs de comptage. Excel distingue plusieurs types de « vide » qui se ressemblent visuellement.
Cellules vraiment vides
Une cellule vraiment vide n’a jamais été modifiée ou a été totalement effacée. ISBLANK() renvoie TRUE, COUNTA()l’ignore, et COUNTBLANK() la compte. C’est le seul type de cellule que toutes les fonctions reconnaissent comme vide.
Chaînes vides générées par des formules
C’est le piège classique. Quand une formule comme =IF(A1>60,"Pass","") renvoie "", la cellule a l’air vide mais contient en réalité un résultat de formule. Voici comment les fonctions l’interprètent :
COUNTA()→ La compte (non vide)COUNTIF(range,"<>")→ La compte (non vide)COUNTBLANK()→ La compte (vide)ISBLANK()→ RenvoieFALSE
Vous voyez le problème ? COUNTBLANK() la considère vide, mais ISBLANK() dit l’inverse. Même des utilisateurs aguerris d’Excel se laissent piéger.
Le contournement SUMPRODUCT() + LEN()
Pour ne compter que les cellules avec un contenu réellement visible (pas de faux vides de formules, pas d’espaces), utilisez :
=SUMPRODUCT(--(LEN(B5:B10)>0))
La formule vérifie le nombre de caractères dans chaque cellule. Si LEN() renvoie 0, la cellule est vide quoi qu’il arrive. Le -- convertit VRAI/FAUX en 1/0, et SUMPRODUCT()` additionne le tout.
Pour un comptage encore plus strict qui ignore aussi les cellules avec espaces :
=SUMPRODUCT(--(LEN(TRIM(B5:B10))>0))Cellules avec caractères invisibles
Parfois une cellule paraît vide mais contient un espace normal (CHAR(32)) ou insécable (CHAR(160)) issu du web ou de PDF. COUNTA() la compte, LEN() renvoie 1 ou plus, et ISBLANK() renvoie FALSE.
Pour les intégrer correctement à votre comptage, utilisez la formule plus stricte vue plus haut : =SUMPRODUCT(--(LEN(TRIM(range))>0)). TRIM() retire les espaces normaux avant de compter. Pour les espaces insécables, nettoyez d’abord vos données avec =SUBSTITUTE(A1,CHAR(160),"") ou utilisez la fonction CLEAN().
Compter les cellules non vides dans des données filtrées
Piège fréquent : vous filtrez vos données, vous écrivez une COUNTA(), et le résultat inclut toujours les lignes masquées. C’est normal : COUNTA() ignore les filtres et compte tout dans la plage, visible ou non.
SUBTOTAL() : l’alternative compatible avec les filtres
SUBTOTAL() corrige cela. Elle compte en respectant les filtres.
=SUBTOTAL(3,D2:D11)
Le 3 indique à SUBTOTAL() d’effectuer un comptage de type COUNTA(). La différence : elle saute les lignes masquées par des filtres.
Numéros de fonction : 3 vs 103
SUBTOTAL() a deux modes :
- Fonction n° 3 : ignore les lignes masquées par AutoFilter, mais compte les lignes masquées manuellement.
- Fonction n° 103 : ignore TOUTES les lignes masquées (filtre et masquage manuel).
=SUBTOTAL(3,D2:D11) -- Ignore les lignes d’AutoFilter
=SUBTOTAL(103,D2:D11) -- Ignore TOUTES les lignes masquées
La plupart du temps, 3 suffit. Utilisez 103 seulement si vous avez masqué des lignes manuellement (clic droit > Masquer) et que vous voulez aussi les exclure.
AGGREGATE() : une alternative pour des données « sales »
Si vos données filtrées contiennent des erreurs, SUBTOTAL() renverra une erreur. AGGREGATE() gère mieux ces cas :
=AGGREGATE(3,7,D2:D11)
Le 3 est le numéro de fonction (COUNTA()), et 7 lui dit d’ignorer à la fois les lignes masquées et les erreurs. C’est l’option la plus sûre pour des données imparfaites, mais la plupart des utilisateurs n’en auront pas besoin.
Compter des cellules non vides dans des tableaux Excel
Si vos données sont dans un tableau Excel (Insertion > Table ou Ctrl+T), vous pouvez utiliser des références structurées plutôt que des adresses de cellules. Vos formules sont plus lisibles et se mettent à jour automatiquement quand le tableau s’agrandit.
Références structurées avec COUNTA()
Au lieu d’écrire =COUNTA(C2:C9), écrivez :
=COUNTA(TaskTracker[Assigned To])
Cette formule compte les cellules non vides de la colonne Assigned To du tableau TaskTracker. L’en‑tête est ignoré automatiquement et la plage s’étend quand j’ajoute des lignes.
Combiner COUNTIFS() et références structurées
COUNTIFS() fonctionne très bien avec les tableaux :
=COUNTIFS(TaskTracker[Status],"Done",TaskTracker[Completion Date],"<>")
Cette formule compte les tâches marquées « Done » qui ont une date d’achèvement. Dans mon suivi, j’obtiens 4 car toutes les tâches terminées ont une date.
Pourquoi les tableaux sont meilleurs pour compter
Deux raisons : d’abord, les références structurées ignorent automatiquement la ligne d’en‑tête, vous n’avez pas à commencer à la ligne 2. Ensuite, quand vous ajoutez une ligne au tableau, toutes les formules qui utilisent ces références intègrent les nouvelles données sans mise à jour manuelle.
C’est idéal pour des données qui évoluent dans le temps : journaux, trackers, ou données importées régulièrement.
Problèmes fréquents lors du comptage des cellules non vides
Le total est plus élevé que prévu
Ce qui se passe : COUNTA() indique 6, mais vous ne voyez que 4 cellules avec des données.
Pourquoi : deux cellules contiennent des formules qui renvoient "". Elles paraissent vides mais ne le sont pas.
Correctif : utilisez =SUMPRODUCT(--(LEN(range)>0)) au lieu de COUNTA(). Cette approche ne compte que les contenus visibles et ignore les vides générés par des formules.
Des espaces cachés faussent le total
Ce qui se passe : une cellule a l’air vide, mais COUNTA() la compte et ISBLANK() renvoie FALSE.
Pourquoi : la cellule contient des espaces, souvent issus d’un copier‑coller depuis un site web ou un autre fichier.
Correctif : vérifiez avec =LEN(A1). Si le résultat est > 0 alors que la cellule semble vide, il y a des caractères invisibles. Nettoyez vos données avec =TRIM(A1), ou utilisez la formule stricte vue plus haut : =SUMPRODUCT(--(LEN(TRIM(range))>0)).
Les valeurs d’erreur sont comptées à tort
Ce qui se passe : vous voulez compter les cellules non vides mais des erreurs comme #DIV/0! ou #N/A sont incluses.
Pourquoi : COUNTA() et COUNTIF(range,"<>") traitent les erreurs comme des non‑vides.
Correctif : si vos données sont filtrées, utilisez =AGGREGATE(3,7,range) comme indiqué plus haut. Le 7 ignore à la fois les lignes masquées et les erreurs. Sans filtres, utilisez =SUMPRODUCT(--(LEN(IFERROR(range,""))>0)).
Le décompte ne se met pas à jour après filtrage
Ce qui se passe : vous filtrez vos données et COUNTA() affiche toujours le total non filtré.
Pourquoi : COUNTA() ignore totalement les filtres.
Correctif : utilisez =SUBTOTAL(3,range) comme vu précédemment. Le résultat s’ajuste automatiquement à ce qui est visible.
Bonnes pratiques pour compter les cellules non vides
Après avoir géré ces cas plus souvent que je ne voudrais l’admettre, voici mon approche :
-
Commencez avec
COUNTA()pour des jeux de données propres et simples. C’est rapide et direct. -
Utilisez
COUNTIF(range,"<>")si vous pensez ajouter des conditions plus tard. Elle se prolonge naturellement avecCOUNTIFS()pour le multi‑critères. -
Testez les faux vides de formules avant de faire confiance au total. Vérifiez quelques « vides » avec
=LEN(cell). Si le résultat est différent de 0, passez à l’approcheSUMPRODUCT()+LEN(). -
Utilisez
SUBTOTAL(3,range)pour les données filtrées. C’est la seule fonction de comptage qui respecte les filtres. -
Nettoyez les données importées en amont. Appliquez
TRIM()et traquezCHAR(160)pour les données issues du web ou d’autres sources. -
Utilisez des tableaux Excel pour les jeux de données qui grandissent. Les références structurées se mettent à jour automatiquement à l’ajout de lignes.
-
Documentez les formules complexes. Si vous utilisez
SUMPRODUCT(--(LEN(TRIM(range))>0)), ajoutez un commentaire pour expliquer pourquoi. Votre « vous » futur vous remerciera.
Conclusion
Excel propose plusieurs façons de compter les cellules non vides, et la bonne dépend du contexte. COUNTA() convient à la plupart des cas. COUNTIF() et COUNTIFS() ajoutent des conditions. SUBTOTAL() respecte les filtres. Et SUMPRODUCT() avec LEN() prend le relais quand les formules créent des vides invisibles.
L’enjeu n’est pas de mémoriser les formules, mais de comprendre ce qu’Excel entend par « vide ». Une formule qui renvoie "" a l’air vide sans l’être. Un espace est invisible mais sera compté. Une fois ces nuances acquises, vous ne serez plus surpris par des totaux erronés.
Pour aller plus loin sur Excel, découvrez notre cours Data Analysis in Excel. Il couvre les formules, les tableaux croisés dynamiques et le nettoyage des données — parfaits en complément de ce que nous venons de voir.
Je suis ingénieur de données et créateur de communautés. Je travaille sur les pipelines de données, le cloud et les outils d'IA, tout en rédigeant des tutoriels pratiques et percutants pour DataCamp et les développeurs émergents.
FAQs
Quelle est la manière la plus rapide de compter les cellules non vides dans Excel ?
Sélectionnez votre plage et regardez la barre d’état en bas d’Excel. Le « Nombre » s’affiche automatiquement, sans formule. Idéal pour un contrôle rapide. Si vous avez besoin du total dans une cellule, utilisez =COUNTA(range).
Pourquoi COUNTA() compte‑t‑elle des cellules qui paraissent vides ?
Ces cellules contiennent probablement des formules qui renvoient "" ou des espaces cachés dus au copier‑coller. Vérifiez avec =LEN(A1). Si c’est > 0, la cellule n’est pas vraiment vide. Le correctif consiste à utiliser =SUMPRODUCT(--(LEN(range)>0)) qui ne compte que les cellules avec contenu visible.
Que se passe‑t‑il si j’utilise COUNTA() sur des données filtrées ?
COUNTA() ignore les filtres et compte tout, y compris les lignes masquées. Utilisez =SUBTOTAL(3,range) à la place. Cette fonction saute automatiquement les lignes filtrées. Particulièrement utile dans les rapports où les utilisateurs appliquent leurs propres filtres.
COUNTIF() peut‑elle compter les cellules non vides plus vite que COUNTA() ?
COUNTA() est plus simple pour des décomptes basiques. Utilisez COUNTIF(range,"<>") quand vous avez besoin de logique conditionnelle ou prévoyez d’étendre la formule avec COUNTIFS(). La différence de performance est négligeable pour des jeux de données courants.
Comment exclure les vides générés par des formules de mon décompte ?
Utilisez =SUMPRODUCT(--(LEN(TRIM(range))>0)). Cette formule ne compte que les cellules avec de vrais caractères visibles. TRIM() retire aussi les espaces cachés, ce qui en fait une méthode très robuste pour des données « sales » contenant des faux vides et des espaces superflus.

