Référence Power Query · 4 min de lecture

Table.FromRows : créer une table à partir de lignes dans Power Query

Écrire une petite table ligne par ligne, directement en M. Avec le piège des colonnes laissées sans type.

Table.FromRows crée une table à partir d’une liste de lignes. Chaque ligne est elle-même une liste qui contient les valeurs des colonnes, dans l’ordre. Le second paramètre décrit les colonnes : leurs noms, leur type, ou simplement leur nombre. C’est la façon la plus compacte d’écrire une petite table à la main : une table de correspondance entre codes et libellés, une liste de paramètres, ou un jeu de quelques factures pour tester une formule.

Il n’y a pas de bouton qui porte son nom, mais on la croise souvent : le code généré par la commande Entrer des données de l’onglet Accueil reconstruit les valeurs saisies avec Table.FromRows.

Syntaxe

Une liste de listes, puis les colonnes

Table.FromRows(rows as list, optional columns as any) as table
ParamètreRôle
rowsLa liste des lignes. Chaque élément est une liste de valeurs, une par colonne.
columnsFacultatif. Une liste de noms de colonnes, un type de table, ou un nombre de colonnes.

D’où les doubles accolades : les accolades extérieures délimitent la liste des lignes, les accolades intérieures délimitent chaque ligne.

Exemples

Trois façons de décrire les colonnes

Avec des noms de colonnes

Table.FromRows(
    {
        {"Bob", "Janvier", 1200},
        {"Jim", "Février", 850}
    },
    {"Client", "Mois", "Montant"}
)

Deux lignes, trois colonnes nommées Client, Mois et Montant. Les valeurs sont lues dans l’ordre des noms.

Avec un type de table

Table.FromRows(
    {
        {"Bob", "Janvier", 1200},
        {"Jim", "Février", 850}
    },
    type table [Client = text, Mois = text, Montant = number]
)

Même table, mais chaque colonne porte maintenant son type : texte pour le client et le mois, nombre pour le montant.

Avec un simple nombre de colonnes

Table.FromRows({{"Janvier", 1}, {"Février", 2}}, 2)

Deux colonnes aux noms génériques, qu’il faudra renommer dans une étape suivante. Pratique pour un essai rapide, moins lisible dans une requête qui dure.

En pratique

Le piège des colonnes sans type

Avec une simple liste de noms, la table est correcte à l’écran, mais ses colonnes n’ont pas de type : elles sont de type any. La colonne Montant contient bien des nombres, sans être déclarée comme numérique. Une fusion, un regroupement ou un chargement dans le modèle peut alors se comporter autrement que prévu, et l’écart ne saute pas aux yeux tant que les chiffres s’affichent.

La parade : donner un type de table dès la création, au lieu d’une liste de noms. Les noms et les types sont posés en une seule fois.

let
    Correspondance = Table.FromRows(
        {
            {1, "Janvier"},
            {2, "Février"},
            {3, "Mars"}
        },
        type table [NumMois = Int64.Type, Mois = text]
    )
in
    Correspondance

Cette table de correspondance peut ensuite être fusionnée avec une table de factures sur le numéro de mois, avec des clés de même type des deux côtés.

Questions fréquentes

Ce qu’on nous demande sur Table.FromRows

Pourquoi faut-il des doubles accolades ?

Parce que rows est une liste de lignes et que chaque ligne est elle-même une liste. Pour transformer une liste simple, dont chaque élément est une valeur, la bonne fonction est Table.FromList.

Comment typer les colonnes ?

En passant un type de table en second paramètre, par exemple type table [Client = text, Montant = number], au lieu d’une liste de noms.

Peut-on indiquer seulement le nombre de colonnes ?

Oui, le paramètre columns accepte un nombre. Les colonnes reçoivent alors des noms génériques, à renommer ensuite.

Quelle différence avec Table.FromRecords ?

Table.FromRows lit les valeurs par position et reçoit les noms de colonnes une seule fois. Table.FromRecords reçoit des records, dont chacun porte ses propres noms de champs.

Sources. Documentation officielle de l’éditeur, consultée le 13 octobre 2026 : Table.FromRows.

Des tables écrites à la main qui faussent vos fusions ?

Nous relisons vos tables de correspondance et de paramètres pour que leurs colonnes aient le bon type et que les fusions trouvent leurs lignes.

Réserver un appelou 01 83 64 60 25
01 83 64 60 25 Réserver un appel