Table.RowCount : compter les lignes d’une table dans Power Query
La fonction la plus simple du langage, et le meilleur garde-fou qu’on puisse poser dans une requête.
Mis à jour le
Table.RowCount rend le nombre exact de lignes d’une table, sous forme de nombre.
Table.RowCount(table as table) as number
Table.RowCount(Ventes) // 1 284
Il n’y a pas de paramètre facultatif, pas de subtilité de syntaxe. L’intérêt de cette fonction n’est pas dans son écriture, il est dans l’usage qu’on en fait.
Faire échouer une requête plutôt que de la laisser mentir
Une requête qui casse se répare le jour même. Une requête qui perd silencieusement des lignes produit des chiffres faux pendant des mois. C’est contre le second cas que sert Table.RowCount.
Le principe : on compte avant et après une opération risquée, et on refuse de continuer si le compte ne tombe pas.
let
Avant = Table.RowCount(Commandes),
Jointure = Table.NestedJoin(Commandes, {"ClientID"}, Clients, {"ClientID"}, "Client", JoinKind.LeftOuter),
Apres = Table.RowCount(Jointure),
Controle = if Apres <> Avant
then error "La jointure a modifié le nombre de lignes : " & Text.From(Avant) & " avant, " & Text.From(Apres) & " après. Doublons côté Clients ?"
else Jointure
in
Controle
Une jointure à gauche ne doit jamais changer le nombre de lignes. Si elle le fait, c’est que la table de droite contient des doublons sur la clé, et que chaque commande vient d’être comptée deux fois. C’est l’une des causes les plus fréquentes de chiffre d’affaires artificiellement gonflé, et elle ne produit aucune erreur.
Le message porté par error compte autant que le contrôle : il doit dire ce qui s’est passé et où chercher, pas seulement qu’une vérification a échoué.
Vérifier un empilement, détecter une source vide
Après une consolidation de fichiers, la somme des lignes d’entrée doit égaler le nombre de lignes de sortie :
let
Attendu = List.Sum(List.Transform(Contenus[Table], Table.RowCount)),
Empile = Table.Combine(Contenus[Table]),
Verifie = if Table.RowCount(Empile) <> Attendu then error "Lignes perdues à l'empilement" else Empile
in
Verifie
Et sur une source qui alimente un rapport de direction, une table vide vaut mieux signalée que chargée :
if Table.RowCount(Source) = 0 then error "Source vide : export non déposé ?" else Source
Sans ce test, un export manquant produit un rapport à zéro. Avec, l’actualisation échoue et quelqu’un est prévenu. Un tableau de bord qui affiche zéro est plus dangereux qu’un tableau de bord qui refuse de s’actualiser, parce que personne ne met en doute un chiffre affiché.
Ce qu’on nous demande sur Table.RowCount
Compter en Power Query ou en DAX ?
Ce ne sont pas les mêmes besoins. Table.RowCount compte une fois, au chargement, pour contrôler la chaîne. COUNTROWS en DAX compte dans le contexte de filtre du visuel, à chaque interrogation. Un garde-fou de requête ne se remplace pas par une mesure.
Comment compter les lignes par catégorie ?
Ce n’est pas le rôle de cette fonction, qui ne prend qu’une table entière. Passez par Regrouper par, qui écrit Table.Group avec l’agrégation Table.RowCount pour chaque groupe.
Le contrôle ralentit-il l’actualisation ?
Il oblige à parcourir la table, donc il a un coût, mesurable surtout sur de gros volumes. Notre arbitrage : on garde le contrôle sur les étapes où une perte de lignes serait invisible, jointures et consolidations, et on s’en passe ailleurs. Quelques secondes d’actualisation valent mieux qu’un chiffre faux non détecté.
Quelle différence entre Table.RowCount et Table.ApproximateRowCount ?
Table.ApproximateRowCount rend une estimation et renvoie une erreur si la source de données ne sait pas l’estimer. Pour un contrôle de cohérence, prenez toujours Table.RowCount : une approximation ne prouve rien.
Les fonctions qu’on utilise avec
Table.Combine: empiler des tables, l’opération à contrôler en priorité.Table.AddKey: déclarer une clé, et savoir pourquoi elle ne garantit rien.- La référence complète Power Query et DAX.
Sources — documentation officielle de l’éditeur, consultée le 22 août 2026 : Table.RowCount, Table.Group.
Un chiffre d’affaires qui a doublé sans raison ?
Neuf fois sur dix, une jointure sur une clé en double. Nous auditons la chaîne de préparation et posons les garde-fous qui manquent.