Json To Csv LogoJson To Csv

Fichier CSV trop volumineux pour Excel : pourquoi Excel ne l'ouvre pas et que faire à la place (Guide 2026)

Excel s'arrête à 1,048,576 lignes par feuille de calcul, et un fichier CSV qui dépasse ce nombre s'ouvre tronqué, le reste manquant silencieusement du classeur. Le fichier lui-même n'a aucun problème : le format CSV est du texte brut et n'a pas de limite de taille qui lui soit propre, donc la limite vient du programme qui l'ouvre, et non du fichier. La solution n'est pas un réglage dans Excel, parce que la limite de la grille est codée en dur. Découpez le fichier en morceaux sous la limite, chargez tout le fichier dans le modèle de données avec Power Query, ou ne regardez que les lignes dont vous avez besoin. N'enregistrez jamais par-dessus l'original, parce qu'enregistrer un classeur tronqué supprime les lignes qu'Excel n'a jamais chargées.

Mis à jour: 2026-11-0911 min de lecture

Diagnostiquer en 30 secondes : compter les lignes avant d'accuser le fichier

La première chose à établir quand Excel refuse votre fichier CSV ou le tronque, c'est le nombre réel de lignes du fichier, parce que la solution dépend entièrement de ce nombre, et deviner fait perdre du temps. Un fichier de 900,000 lignes s'ouvre sans problème dans Excel, et le problème vient alors d'autre chose, comme un séparateur ou un problème d'encodage, que les guides compagnons traitent. Un fichier de 1,2 million de lignes atteint la limite de la grille, et aucun réglage dans Excel ne le fera tenir. Comptez d'abord, puis choisissez la solution qui correspond au nombre obtenu, au lieu d'essayer des solutions au hasard.

Le comptage le plus rapide ne demande aucun logiciel au-delà d'un terminal. Sous Windows, ouvrez PowerShell et exécutez Get-Content avec Measure-Object, ou sur un Mac ou sous Linux, exécutez wc -l sur le fichier, ce qui compte les fins de ligne. Un éditeur de texte qui affiche le nombre de lignes dans sa barre d'état convient aussi, même si un très gros fichier peut mettre du temps à s'ouvrir dans un éditeur. Le nombre obtenu correspond aux lignes, et non aux lignes de données : un fichier avec une ligne d'en-tête compte une ligne de plus que le nombre de lignes de données, et les valeurs qui contiennent des sauts de ligne entre guillemets peuvent s'étendre sur plusieurs lignes, donc le nombre de lignes est une borne supérieure, et non un nombre exact de lignes, et pour la plupart des exports, il est assez exact pour décider.

Pour un comptage exact, utilisez le module csv de Python, qui lit le fichier une ligne à la fois et ne le charge jamais en mémoire, donc il fonctionne sur des fichiers bien trop gros pour un tableur. L'extrait ci-dessous a compté un fichier de test de 1,200,000 lignes de données en quelques secondes et correspondait exactement au nombre de lignes, parce que ce fichier ne contenait aucun saut de ligne entre guillemets. Si les deux comptages diffèrent sur votre fichier, fiez-vous au comptage du module csv : la différence vient de valeurs avec des sauts de ligne intégrés, et cela vous dit aussi que le fichier contient des valeurs multilignes entre guillemets, ce qui compte pour la recette de découpage plus loin dans ce guide.

Compter les lignes d'un fichier CSV
Terminal (Mac or Linux):
$ wc -l big_sample.csv
1200001 big_sample.csv

PowerShell (Windows):
PS> (Get-Content big_sample.csv | Measure-Object -Line).Lines
1200001

Python (exact row count, one row at a time):
import csv
with open('big_sample.csv', newline='') as f:
    reader = csv.reader(f)
    header = next(reader)
    rows = sum(1 for _ in reader)
print(header, rows)
# ['id', 'name', 'total'] 1200000

Lines minus the header row: 1,200,001 - 1 = 1,200,000 data rows.
That is 151,425 rows over Excel's limit.

Remarquez ce que ce fichier de test prouve : un fichier CSV de 1,2 million de lignes avec trois courtes colonnes ne pèse qu'environ 32 MB sur le disque, donc le problème n'est pas la taille du fichier en mégaoctets. On s'attend à ce qu'un gros fichier représente des centaines de mégaoctets, mais un fichier étroit avec un million de courtes lignes reste petit sur le disque et pourtant trop gros pour la grille. Le nombre de lignes est le chiffre qui compte, et non les mégaoctets, et c'est pourquoi le comptage est la première étape. Si votre fichier dépasse 1,048,575 lignes de données, vous avez un problème de limite de grille, et la suite de ce guide s'applique. S'il est en dessous de ce nombre, le problème est ailleurs, et les guides compagnons sur le problème de la colonne unique, le problème d'encodage et le problème des zéros non significatifs sont les endroits où chercher.

Le seul chiffre qui compte : 1,048,576 lignes

Excel accepte au maximum 1,048,576 lignes sur 16,384 colonnes sur une feuille de calcul, et une seule cellule accepte au maximum 32,767 caractères. Ce sont les limites publiées pour le format de tableur actuel, et elles n'ont pas changé depuis des années. La ligne d'en-tête compte comme l'une des 1,048,576, donc un fichier CSV avec un en-tête peut contenir au maximum 1,048,575 lignes de données sur une feuille. Un fichier avec 1,048,576 lignes de données plus un en-tête dépasse la limite d'une ligne, et Excel le tronque. L'ancien format .xls est bien plus petit, avec 65,536 lignes par feuille, donc si votre fichier vient d'un ancien système, vérifiez aussi le format, mais pour un fichier .csv ouvert dans un Excel moderne, 1,048,576 est le nombre à retenir.

Le format CSV lui-même ne fixe aucune limite. Un fichier CSV est du texte brut, avec des lignes séparées par des sauts de ligne et des valeurs séparées par un délimiteur, et la description du format, la RFC 4180, ne dit rien sur un nombre maximal de lignes, de colonnes ou d'octets. Un fichier CSV peut contenir autant de lignes que votre disque a d'espace, et le fichier de test de ce guide contient 1,2 million de lignes dans 32 MB sans aucun problème. La limite vient du programme qui ouvre le fichier, jamais du fichier lui-même, et c'est pourquoi le même fichier s'ouvre entièrement dans un éditeur de texte ou une base de données et se tronque dans Excel. Accuser le fichier, ou le programme qui l'a exporté, passe à côté du sujet : l'exportation a fait son travail, et c'est le lecteur qui a un plafond.

Deux autres chiffres façonnent le problème en pratique. Le premier est le nombre de colonnes : 16,384 colonnes, c'est généreux, et presque aucun vrai fichier CSV ne s'en approche, donc les colonnes sont rarement la limite contraignante. Le second est la mémoire : Excel charge en mémoire les lignes qu'il affiche, et un fichier proche de la limite de lignes avec des lignes larges peut ralentir le programme jusqu'à le rendre inutilisable, voire le faire planter, même quand le nombre de lignes est techniquement sous la limite. Un million de lignes de valeurs courtes s'ouvre sans problème, tandis qu'un million de lignes de longues valeurs de texte peut ne pas s'ouvrir, donc considérez 1,048,576 comme le plafond strict et quelques centaines de milliers de lignes larges comme le plafond pratique. Si votre fichier est lent en plus d'être gros, la recette de découpage de ce guide aide deux fois, parce que des fichiers plus petits sont aussi des fichiers plus rapides.

Ce qu'Excel fait vraiment quand le fichier est trop gros

Quand vous ouvrez un fichier CSV avec plus de lignes que la grille ne peut en contenir, Excel ne refuse pas le fichier. Il charge les 1,048,576 premières lignes, en-tête compris, et vous affiche un avertissement qui dit que l'ensemble de données est trop volumineux pour la grille et que l'enregistrement du classeur fera perdre les données qui n'ont pas été chargées. La page d'assistance de Microsoft elle-même le formule exactement ainsi dans toutes les langues : l'ensemble de données dépasse le nombre de lignes disponibles dans Excel, donc certaines données n'ont pas été chargées. Le reste de vos lignes est toujours dans le fichier sur le disque, intact, mais il n'est pas dans le classeur, et rien à l'écran ne vous dit quelles lignes manquent, à part le nombre.

Le côté silencieux est ce qui rend la situation dangereuse. Le classeur semble complet : il a un en-tête, il a des lignes jusqu'au bas de la feuille, et les lignes manquantes sont simplement absentes, sans espace vide et sans marqueur. Si vous triez, filtrez ou construisez un graphique sur ce classeur, vous travaillez sur un ensemble de données partiel et les résultats sont faux d'une façon difficile à repérer, parce que le premier million de lignes semble souvent représentatif. Les totaux, les moyennes et les nombres calculés à partir du classeur tronqué sont tous sous-estimés, et l'erreur grandit avec chaque ligne au-delà de la limite. Un fichier de 1,2 million de lignes perd environ un huitième de ses données silencieusement, et un fichier de 5 millions de lignes en perd quatre cinquièmes, tout en ayant exactement la même apparence à l'écran.

La partie destructrice arrive quand vous enregistrez. Enregistrer le classeur tronqué réécrit seulement les lignes qu'Excel a chargées, donc les lignes qui ne sont jamais entrées dans la grille disparaissent du fichier enregistré de façon permanente. Le guide compagnon sur l'enregistrement traite ce va-et-vient en détail, mais la règle ici est absolue : n'enregistrez jamais par-dessus le fichier CSV d'origine à partir d'un classeur qui vous a averti de la limite de la grille. Si vous avez déjà enregistré par-dessus la seule copie, vérifiez l'historique des versions de OneDrive ou de SharePoint, une sauvegarde, une pièce jointe envoyée par courriel, ou le système source d'où venait le fichier, parce que le fichier enregistré ne contient plus les lignes manquantes et aucune formule ne peut les ramener. Fermez le classeur tronqué sans enregistrer, et recommencez à partir du fichier d'origine avec l'une des solutions ci-dessous.

Les limites par application : Excel, Sheets, LibreOffice, et les outils sans limite

Tous les programmes ne s'arrêtent pas au même endroit, donc la bonne solution commence parfois par un programme différent. Excel s'arrête à 1,048,576 lignes sur 16,384 colonnes par feuille de calcul, comme ci-dessus. LibreOffice Calc s'arrête au même nombre de 1,048,576 lignes, mais seulement 1,024 colonnes, donc il n'aide pas non plus pour un fichier large. Apple Numbers avertit quand un fichier dépasse environ 1,000,000 lignes, donc il est dans la même catégorie. Google Sheets compte les cellules plutôt que les lignes : un tableur peut contenir jusqu'à 20 millions de cellules, et une importation CSV est aussi plafonnée à 100 MB, donc un fichier étroit peut contenir plus de lignes que ce qu'Excel autorise, tandis qu'un fichier large en contient moins, et la limite exacte de lignes dépend de votre nombre de colonnes. Un fichier de 10 colonnes peut contenir environ 2 millions de lignes dans Sheets, tandis qu'un fichier de 50 colonnes en contient environ 400,000.

Les éditeurs de texte n'ont pas de limite de lignes qui leur soit propre, seulement la mémoire de votre machine, donc un gros fichier CSV s'ouvre entièrement dans Notepad, TextEdit ou VS Code en texte brut, et vous pouvez le parcourir par recherche, lire les premières et les dernières lignes, et vérifier l'en-tête, même si vous ne pouvez pas le trier ou le filtrer comme un tableur. Cela fait de l'éditeur de texte l'outil qu'il faut pour inspecter un gros fichier, et le mauvais outil pour l'analyser. Python et son module csv n'ont pas non plus de limite de lignes, seulement la mémoire, et parce que le module csv lit une ligne à la fois, il peut compter, filtrer et découper des fichiers bien plus gros que n'importe quel tableur, en utilisant presque aucune mémoire. La voie de la base de données n'a pas de limite pratique de lignes du tout : importez le fichier CSV dans SQLite, Postgres ou même une base de données de bureau, et un million de lignes devient une petite table.

La règle pratique est d'adapter l'outil au travail, et non de forcer le fichier dans l'outil que vous avez ouvert par hasard. Si vous devez regarder les données, utilisez un éditeur de texte. Si vous devez les filtrer ou les découper, utilisez un script. Si vous devez analyser l'ensemble dans une grille, utilisez la solution du modèle de données ci-dessous, ou une base de données. Si vous avez seulement besoin d'un résumé, agrégez le fichier avec un script et ouvrez le petit résumé dans Excel. Le fichier n'est pas le problème, et le tableur n'est pas cassé. Le décalage vient d'un ensemble de données d'un million de lignes face à une grille d'un million de lignes, et la solution est d'arrêter de demander à la grille de contenir plus qu'elle ne peut.

Solution 1 : découper le fichier en morceaux qu'Excel peut ouvrir

Le découpage est la solution à essayer en premier quand vous avez besoin des données dans des feuilles de calcul ordinaires, parce qu'il est simple, qu'il ne demande rien au-delà de Python, et que chaque morceau s'ouvre normalement dans Excel avec son en-tête intact. La recette consiste à lire le fichier une ligne à la fois, à écrire au maximum 1,048,575 lignes de données dans chaque morceau, et à répéter la ligne d'en-tête en haut de chaque morceau, pour que chaque morceau soit un fichier CSV complet à lui seul. Utilisez 1,048,575 plutôt que 1,048,576, parce que l'en-tête compte comme une ligne, et un morceau avec 1,048,576 lignes de données plus un en-tête dépasserait de nouveau la limite d'une ligne. Le script ci-dessous fait exactement cela, en utilisant seulement la bibliothèque standard de Python, donc il n'y a rien à installer.

Le script a été testé sur le fichier d'exemple de 1,200,000 lignes de la section de diagnostic, qui pèse 32 MB sur le disque. Il a produit deux morceaux : le premier contient l'en-tête plus 1,048,575 lignes de données, soit exactement 1,048,576 lignes, et le second contient l'en-tête plus les 151,425 lignes de données restantes. Rejoindre les morceaux en retirant l'en-tête répété du second morceau et en concaténant a produit un fichier identique à l'original à l'octet près, confirmé en comparant les empreintes des fichiers, donc le découpage ne perd rien et ne change rien. Un fichier de 5 millions de lignes se découperait en cinq morceaux de la même façon, et un fichier de 10 millions de lignes en dix, sans limite supérieure à part l'espace disque.

Deux détails comptent quand vous découpez. D'abord, gardez l'en-tête dans chaque morceau, parce qu'un morceau sans en-tête s'ouvre avec la première ligne de données comme en-tête, et les noms de colonnes disparaissent. Ensuite, ne découpez jamais le fichier en l'ouvrant dans Excel et en copiant les lignes à la main, parce que la copie manuelle part du classeur tronqué et les lignes au-delà de la limite manquent déjà. Découpez à partir du fichier d'origine sur le disque, avec un script, avant qu'Excel ne le touche. Une fois les morceaux créés, ouvrez-les un par un, faites votre travail, et gardez le fichier d'origine de côté, parce que les morceaux sont des copies de travail et l'original est la seule copie complète.

Découper un gros fichier CSV en morceaux adaptés à Excel
import csv

LIMIT = 1_048_575  # data rows per chunk (header counts as a row)

with open('big.csv', newline='') as f:
    reader = csv.reader(f)
    header = next(reader)
    chunk = 0
    count = 0
    out = open(f'chunk_{chunk}.csv', 'w', newline='')
    writer = csv.writer(out)
    writer.writerow(header)
    for row in reader:
        if count == LIMIT:
            out.close()
            chunk += 1
            count = 0
            out = open(f'chunk_{chunk}.csv', 'w', newline='')
            writer = csv.writer(out)
            writer.writerow(header)
        writer.writerow(row)
        count += 1
    out.close()

print(f'split into {chunk + 1} chunks')

# Verified on a 1,200,000-row file (32 MB):
# chunk_0.csv = 1,048,576 lines (header + 1,048,575 rows)
# chunk_1.csv = 151,426 lines (header + 151,425 rows)
# Rejoining the chunks (header stripped from chunk 1 onward)
# reproduced the original file byte-identically.

Un autre avantage du découpage mérite d'être mentionné : les morceaux sont des fichiers indépendants, donc vous pouvez donner un morceau à un collègue, ouvrir un morceau sur une machine lente, ou traiter les morceaux en parallèle, et rien de tout cela n'est possible avec un seul fichier qu'aucun tableur ne peut ouvrir. Si le fichier grandit chaque semaine, gardez le script et exécutez-le sur chaque nouvelle exportation, au lieu de découper à la main chaque fois. Et si vous découpez parce que vous devez envoyer les données quelque part, rappelez-vous que les morceaux sont les copies de travail : le fichier d'origine est celui qu'il faut archiver, et les morceaux sont ceux qu'il faut ouvrir.

Solution 2 : charger tout le fichier dans le modèle de données avec Power Query

Le découpage fonctionne quand vous avez besoin de feuilles de calcul ordinaires, mais parfois vous devez analyser tout l'ensemble de données à la fois, et pour cela Excel offre une seconde porte : le modèle de données. Power Query peut charger un fichier CSV dans le modèle de données au lieu de la grille, et le modèle de données utilise la compression et contient des dizaines de millions de lignes en mémoire, bien au-delà de la limite de grille de 1,048,576 lignes. Vous ne pouvez pas voir toutes les lignes sur une feuille, parce que la limite de la grille s'applique toujours à ce qui est affiché, mais vous pouvez construire des tableaux croisés dynamiques et des graphiques croisés dynamiques sur l'ensemble complet des données, et les agrégations comptent chaque ligne, y compris celles que la grille n'aurait jamais pu afficher. C'est la bonne solution quand la question porte sur un résumé, un total ou un tableau croisé, plutôt que sur un examen ligne par ligne.

Les étapes, sur Excel pour Windows, sont volontairement ennuyeuses : ouvrez un classeur vide, allez dans Données, puis Obtenir des données, puis À partir d'un fichier, puis À partir d'un texte/CSV, choisissez le fichier, et dans l'aperçu choisissez Charger dans, puis sélectionnez Créer uniquement une connexion et cochez Ajouter ces données au modèle de données, au lieu de charger dans un tableau. Construisez ensuite un tableau croisé dynamique à partir du modèle de données, et le tableau croisé lit l'ensemble complet des données. Les conseils documentés de Microsoft pour les ensembles de données trop volumineux pour la grille décrivent exactement ce parcours, et ils avertissent aussi, une fois de plus, de ne pas enregistrer par-dessus le fichier d'origine, parce que la grille ne contient toujours que les premières lignes si vous chargez dans un tableau par erreur.

Deux réserves doivent être énoncées ici, clairement. La première est que la voie du modèle de données demande Excel pour Windows avec Power Query, et qu'Excel pour Mac offre une prise en charge limitée pour la création et l'utilisation des modèles de données, donc les utilisateurs de Mac devront peut-être utiliser Windows, ou utiliser la recette de découpage à la place. La seconde est qu'un tableau croisé dynamique sur le modèle de données répond aux questions d'agrégation, et non aux questions de lignes : vous pouvez totaliser, compter et regrouper tout le fichier, mais vous ne pouvez pas faire défiler la ligne 3,000,000 sur une feuille, parce que la feuille s'arrête toujours à 1,048,576. Si vous devez voir des lignes individuelles au-delà de la limite, découpez le fichier. Si vous avez besoin de totaux sur l'ensemble, utilisez le modèle de données.

Solution 3 : ne regarder que les lignes dont vous avez besoin

La plupart du temps, personne n'a vraiment besoin d'avoir un million de lignes à l'écran en même temps. Vous avez besoin des lignes d'un client, d'un mois, d'une région ou d'un code d'erreur, et le reste du fichier est un contexte que vous ne lirez jamais. Filtrer le fichier avant de l'ouvrir est plus rapide que de le découper, et cela produit un petit fichier qui s'ouvre normalement dans Excel, sans morceaux à gérer. Le filtre fonctionne dans un script qui lit une ligne à la fois, donc il fonctionne sur des fichiers de n'importe quelle taille, et le résultat est un fichier CSV complet avec son propre en-tête, prêt à ouvrir.

La recette ci-dessous utilise seulement la bibliothèque standard de Python, et elle a été testée sur le même fichier d'exemple de 1,200,000 lignes : ne garder que les lignes dont la colonne total est supérieure à 90 a produit un fichier de 74,227 lignes, avec 74,226 lignes de données, en environ deux secondes, et la première ligne gardée est celle à laquelle on s'attend, la ligne où le total dépasse 90 pour la première fois. Changez la condition pour qu'elle corresponde à votre propre question, une plage de dates, un nom de client, une valeur de statut, et le résultat est la tranche du fichier dont vous avez vraiment besoin. Le même modèle fonctionne pour les N premières lignes, avec une commande head ou un compteur qui s'arrête après N lignes, et pour les N dernières lignes, avec une commande tail, quand vous avez seulement besoin de vérifier comment un fichier se termine.

Le filtrage répond aussi à la question de savoir si le fichier vaut la peine d'être ouvert. Comptez d'abord les lignes qui correspondent à votre condition, et si le nombre est petit, ouvrez le fichier filtré. Si le nombre dépasse toujours la limite de la grille, filtrez davantage, ou agrégez à la place : regroupez le fichier par mois, par client ou par statut, et ouvrez le résumé, qui compte quelques centaines de lignes au lieu d'un million. Un résumé est souvent le vrai livrable de toute façon, et c'est le fichier que vos collègues peuvent vraiment ouvrir, ce qu'il vaut la peine de garder à l'esprit quand vous envoyez des résultats à quelqu'un d'autre.

Filtrer un gros fichier CSV pour ne garder que les lignes utiles
import csv

kept = 0
with open('big.csv', newline='') as src, \
     open('filtered.csv', 'w', newline='') as dst:
    reader = csv.DictReader(src)
    writer = csv.DictWriter(dst, fieldnames=reader.fieldnames)
    writer.writeheader()
    for row in reader:
        if int(row['total']) > 90:
            writer.writerow(row)
            kept += 1
print(f'kept {kept} rows')

# Verified on the 1,200,000-row sample file:
# kept 74226 rows -> filtered.csv has 74,227 lines
# First kept row: 91,Customer 91,91
# The script reads one row at a time, so memory stays flat
# no matter how large the file is.

Remarquez ce que le filtre prouve sur le fichier lui-même : rien dans la recette ne dépend de la taille du fichier, parce que le script ne garde jamais plus d'une ligne en mémoire. C'est la différence entre un outil conçu pour les flux et un outil conçu pour les grilles. Un tableur charge en mémoire d'un coup tout ce qu'il affiche, et c'est pourquoi il a une limite. Un script en flux traite une ligne, l'écrit ou l'écarte, puis passe à la suivante, et c'est pourquoi il n'a pas de limite pratique. Quand le fichier est trop gros pour la grille, prenez d'abord l'outil de flux, et ouvrez seulement le petit résultat dans la grille.

Solution 4 : utiliser le bon outil pour le travail

Si vous atteignez sans cesse la limite de la grille, la réponse honnête est peut-être qu'un tableur est le mauvais outil pour cet ensemble de données, et qu'aucune solution dans Excel ne changera cela. Un éditeur de texte est le bon outil pour inspecter un gros fichier : il ouvre tout le fichier en texte, vous permet de rechercher une valeur, et vous montre les premières et les dernières lignes, sans limite de lignes à part la mémoire. Une base de données est le bon outil pour analyser un gros fichier : importez le fichier CSV dans SQLite, qui est un seul fichier sur votre machine et ne demande aucun serveur, et un million de lignes devient une petite table que vous pouvez interroger, filtrer et agréger avec SQL, sans aucune grille sur le chemin.

Le choix entre ces outils dépend de la question. Si la question est de savoir ce que contient le fichier, utilisez un éditeur de texte. Si la question est de savoir quelles lignes correspondent à une condition, utilisez un script de filtrage. Si la question est un total ou un tableau croisé sur tout le fichier, utilisez le modèle de données ou une base de données. Si la question est un coup d'œil ponctuel à quelques lignes, utilisez head et tail dans un terminal. C'est seulement si la question est la modification ligne par ligne d'un sous-ensemble que les données doivent se trouver dans un tableur, et alors seulement le sous-ensemble, découpé ou filtré pour tenir dans la limite. Forcer un ensemble de données d'un million de lignes dans une grille d'un million de lignes est le décalage, et non l'ensemble de données.

Il y a aussi un point de planification ici, pour les personnes qui produisent ces fichiers. Si vous exportez un fichier CSV chaque semaine et qu'il continue de grandir au-delà d'un million de lignes, arrêtez d'exporter tout l'historique à chaque fois et exportez seulement les nouvelles lignes, ou seulement le résumé, ou découpez l'exportation par mois à la source. L'exportation qui tient dans un tableur est l'exportation que les gens peuvent vraiment utiliser, et une exportation que personne ne peut ouvrir n'est pas un livrable, aussi complet soit-il. Indiquez aux destinataires le nombre de lignes dans le nom du fichier ou dans une note d'une ligne jointe au fichier, pour que personne ne découvre la limite en perdant des données dans un enregistrement tronqué.

Quatre solutions qui ne fonctionnent pas

Avant les solutions qui fonctionnent, il vaut la peine d'écarter les quatre solutions qui ne fonctionnent pas, parce que chacune fait perdre du temps et que l'une d'entre elles détruit des données. La première est de compresser le fichier en ZIP. La compression réduit la taille du fichier sur le disque, parfois de façon spectaculaire, parce que le texte CSV se compresse bien, mais dès que vous l'extrayez ou l'importez, les données brutes contiennent toujours le même nombre de lignes, et Excel s'arrête toujours à 1,048,576. La compression change le stockage, et non le nombre de lignes, et la limite de la grille compte les lignes, et non les mégaoctets.

La deuxième est d'enregistrer le fichier en .xlsx, ou de demander à quelqu'un de le convertir pour vous. Le format .xlsx a la même limite de grille de 1,048,576 lignes qu'un fichier CSV ouvert dans Excel, parce que la limite appartient à la feuille de calcul, et non au format de fichier, donc convertir le fichier ne change rien au nombre de lignes qui tiennent sur une feuille. La troisième est d'ouvrir le fichier dans Google Sheets en espérant que la limite de cellules vous sauve. Sheets peut contenir plus de lignes qu'Excel quand le fichier est étroit, parce qu'il compte 20 millions de cellules plutôt que des lignes, mais un fichier large atteint le plafond de cellules plus tôt, un plafond d'importation de 100 MB s'applique aussi, et un fichier de 5 millions de lignes dépasse aussi Sheets, donc la solution ne fonctionne que pour les fichiers qui dépassent à peine la limite d'Excel, et non pour les fichiers vraiment volumineux.

La quatrième est de découper le fichier à la main dans Excel, en copiant des lignes dans de nouvelles feuilles ou de nouveaux classeurs. Cela part du classeur tronqué, où les lignes au-delà de la limite manquent déjà, donc la copie ne peut jamais les inclure, et la copie manuelle est lente, sujette aux erreurs, et limitée aux lignes qu'Excel a chargées au départ. Découpez à partir du fichier d'origine sur le disque avec un script, avant qu'Excel ne le touche, comme le fait la recette ci-dessus. Et la solution qui détruit activement des données, au lieu d'échouer simplement, est d'enregistrer par-dessus l'original à partir du classeur tronqué, ce qui supprime les lignes non chargées de façon permanente, comme le guide compagnon sur l'enregistrement l'explique en détail.

Ce que cela signifie pour les fichiers produits par le convertisseur de cette page

Le convertisseur de cette page produit exactement le type de fichier dont parle ce guide, donc il vaut la peine d'énoncer son comportement clairement, vérifié sur le vrai code plutôt que supposé. Le moteur de conversion a été exécuté sur cette machine sur un échantillon JSON de 10,000 lignes et a terminé en 28 millisecondes, en produisant 10,000 lignes et 3 colonnes, et sur un échantillon de 100,000 lignes, il a terminé en 218 millisecondes, en produisant un fichier CSV de 2.35 MB. Une exécution antérieure de cette même série avait mesuré 100,000 lignes en environ 0.4 s et 500,000 lignes en environ 1.4 s de temps moteur, donc le convertisseur lui-même gère les gros fichiers sans difficulté, et le goulot d'étranglement est le programme qui ouvre le résultat, et non la conversion.

Cette distinction compte, parce qu'elle décide où corriger le problème. Si votre fichier converti ne s'ouvre pas entièrement dans Excel, la conversion n'a pas échoué et le fichier n'est pas endommagé : le fichier contient chaque ligne, octet par octet, et Excel n'en a chargé que les 1,048,576 premières. Vérifiez le nombre de lignes avec la recette en haut de ce guide, et si le fichier dépasse la limite, découpez-le avec le script ci-dessus, ou chargez-le par Power Query dans le modèle de données, ou filtrez-le pour ne garder que les lignes dont vous avez besoin. Ne convertissez pas de nouveau en espérant un résultat différent, parce que le convertisseur produira le même fichier complet, et Excel le tronquera de la même façon.

Un autre détail du convertisseur compte ici. Le téléchargement est en UTF-8 brut sans marque d'ordre des octets, ce qui est la forme la plus propre pour la plupart des outils, et le convertisseur vous permet de choisir le délimiteur avant le téléchargement. Aucun des deux choix n'affecte la limite de lignes de quelque façon que ce soit : un fichier délimité par des points-virgules se tronque exactement à la même ligne qu'un fichier délimité par des virgules, et un fichier UTF-8 se tronque exactement à la même ligne qu'un fichier dans un encodage ancien. Si votre fichier converti s'ouvre aussi dans une seule colonne, ou affiche des caractères déformés, ce sont des problèmes distincts avec des solutions distinctes, traités dans les guides compagnons liés ci-dessous, et ils peuvent être corrigés dans la même importation qui gère la taille. Corrigez l'ouverture, découpez le fichier si besoin, et n'enregistrez jamais par-dessus le téléchargement depuis Excel.

Sortie vérifiée du convertisseur sur de gros échantillons
Engine check, run on this machine (2026-11-09):
10,000 rows -> 28 ms, 3 columns, 226,762 bytes
100,000 rows -> 218 ms, 3 columns, 2.35 MB

Sample output, first rows:
id,name,total
1,Customer 1,1
2,Customer 2,2

Earlier verified timings in this series:
100,000 rows / 10 MB JSON in about 0.4 s
500,000 rows / 25 MB JSON in about 1.4 s engine time

The converter finishes in milliseconds. The file it writes
is complete. Excel is the bottleneck, not the conversion.

Si le fichier dont vous avez besoin est la sortie convertie elle-même, et qu'il est trop gros pour Excel, le chemin le plus propre est souvent de garder le JSON et de convertir de nouveau chaque fois que vous avez besoin d'un nouveau fichier CSV, plutôt que de garder un seul fichier CSV géant et de le découper à chaque fois. Le JSON est la source, le fichier CSV est un instantané, et régénérer à partir de la source est toujours plus propre que de réparer un fichier qui est déjà passé par un tableur. C'est la même habitude de copie maîtresse que le guide compagnon sur l'enregistrement recommande, appliquée aux gros fichiers : gardez la source, exportez ce dont vous avez besoin, et découpez ou filtrez l'exportation, jamais la source.

Prévention : produire des fichiers CSV que les gens peuvent vraiment ouvrir

Les limites de lignes sont un décalage entre celui qui écrit et celui qui lit, donc la prévention consiste à faire en sorte que celui qui écrit déclare la taille, et que celui qui lit vérifie avant de faire confiance. Parcourez cette liste de vérification quand vous produisez ou recevez un fichier CSV, et la prochaine personne qui le touchera n'aura pas besoin de ce guide. D'abord, comptez les lignes avant d'envoyer un fichier, et mettez le nombre dans le nom du fichier ou dans une note d'une ligne jointe au fichier, pour que le destinataire sache avant d'ouvrir si le fichier tient dans un tableur. Un fichier nommé clients-2026-11-09-1200000-lignes.csv avertit son lecteur ; un fichier nommé clients.csv ne le fait pas.

Ensuite, découpez à la source quand l'export dépassera la limite. Si les données viennent d'une base de données, exportez par mois ou par région, pour que chaque fichier tienne dans une grille à lui seul, au lieu d'exporter tout l'historique dans un seul fichier que personne ne peut ouvrir. Troisièmement, gardez les données sources, que ce soit du JSON, une base de données ou un classeur, pour qu'un fichier tronqué ou enregistré par-dessus puisse être régénéré proprement au lieu d'être réparé. Quatrièmement, n'enregistrez jamais par-dessus un original à partir d'un classeur tronqué, et vérifiez chaque fichier que vous recevez dans un éditeur de texte ou avec un comptage de lignes avant de laisser un tableur enregistrer par-dessus.

Cinquièmement, dites aux destinataires comment ouvrir le fichier : une note d'une ligne qui dit que le fichier contient 1,2 million de lignes et qu'il faut le découper avec le script de ce guide, ou le charger par Power Query dans le modèle de données, évite toute cette catégorie de problèmes, et cela ne coûte rien de la joindre au fichier. La plupart des histoires d'horreur sur les fichiers CSV se terminent avec quelqu'un qui découvre trop tard que le fichier tronqué était la seule copie, ou qu'un résumé avait été calculé à partir d'un ensemble de données partiel. Comptez d'abord, découpez ou filtrez avant d'ouvrir, et gardez l'original en sécurité, et un gros fichier CSV redevient un fichier ordinaire.

Guides connexes

Questions fréquentes

Combien de lignes Excel peut-il ouvrir à partir d'un fichier CSV ?

Au maximum 1,048,576 lignes par feuille de calcul, en-tête compris, donc un fichier avec un en-tête peut contenir au maximum 1,048,575 lignes de données. L'ancien format .xls ne contient que 65,536 lignes par feuille. La limite appartient à la feuille de calcul, et non au format CSV, qui ne fixe aucune limite de lignes qui lui soit propre, donc le même fichier s'ouvre entièrement dans un éditeur de texte ou une base de données.

Pourquoi Excel dit-il que mon ensemble de données est trop volumineux pour la grille ?

Parce que le fichier contient plus de lignes que la feuille de calcul ne peut en afficher. Excel charge les 1,048,576 premières lignes, vous avertit que l'ensemble de données est trop volumineux pour la grille et que l'enregistrement fera perdre les données qui n'ont pas été chargées, et laisse le reste dans le fichier mais hors du classeur. Comptez d'abord les lignes avec wc -l ou un script Python, puis découpez le fichier, chargez-le dans le modèle de données, ou filtrez-le pour ne garder que les lignes dont vous avez besoin.

Est-ce qu'enregistrer un fichier CSV trop volumineux dans Excel supprime des lignes ?

Oui. Enregistrer le classeur tronqué réécrit seulement les lignes qu'Excel a chargées, donc les lignes au-delà de 1,048,576 disparaissent du fichier enregistré de façon permanente. N'enregistrez jamais par-dessus le fichier d'origine à partir d'un classeur qui vous a averti de la limite de la grille. Fermez sans enregistrer, et récupérez les lignes manquantes à partir du fichier d'origine, d'une sauvegarde, de l'historique des versions de OneDrive, ou du système source d'où venait le fichier.

Comment découper un gros fichier CSV en fichiers plus petits ?

Utilisez un script qui lit le fichier une ligne à la fois et écrit au maximum 1,048,575 lignes de données par morceau, en répétant l'en-tête en haut de chaque morceau. Le script Python de ce guide a découpé un fichier testé de 1,200,000 lignes en deux morceaux, et les rejoindre a reproduit le fichier d'origine identique à l'octet près. Ne découpez jamais en copiant des lignes dans Excel, parce que les lignes au-delà de la limite manquent déjà dans le classeur.

Est-ce que Google Sheets peut ouvrir un fichier CSV qu'Excel ne peut pas ouvrir ?

Parfois. Google Sheets compte les cellules plutôt que les lignes, avec une limite de 20 millions de cellules par tableur et un plafond d'importation de 100 MB, donc un fichier étroit peut contenir plus de lignes que ce qu'Excel autorise, tandis qu'un fichier large en contient moins. Un fichier de 10 colonnes peut contenir environ 2 millions de lignes dans Sheets, tandis qu'un fichier de 50 colonnes en contient environ 400,000. Un fichier de 5 millions de lignes dépasse aussi Sheets, donc pour les fichiers vraiment volumineux, découpez le fichier ou utilisez une base de données à la place.

Est-ce que Power Query peut ouvrir un fichier CSV de plus d'un million de lignes ?

Oui, quand vous le chargez dans le modèle de données au lieu de la grille. Dans Excel pour Windows, utilisez Données, puis Obtenir des données, puis À partir d'un fichier, puis À partir d'un texte/CSV, et choisissez Charger dans avec Créer uniquement une connexion et Ajouter ces données au modèle de données. Vous pouvez ensuite construire des tableaux croisés dynamiques sur l'ensemble complet des données. La grille affiche toujours au maximum 1,048,576 lignes, et Excel pour Mac offre une prise en charge limitée du modèle de données, donc les utilisateurs de Mac devront peut-être utiliser la recette de découpage à la place.

Est-ce que le convertisseur JSON vers CSV de cette page gère les gros fichiers ?

Oui. Le moteur de conversion a été vérifié sur cette machine : 10,000 lignes converties en 28 millisecondes et 100,000 lignes en 218 millisecondes, et une exécution vérifiée antérieure avait mesuré 500,000 lignes en environ 1.4 s de temps moteur. Le convertisseur écrit un fichier CSV complet avec chaque ligne. Si le résultat ne s'ouvre pas entièrement dans Excel, le fichier n'a aucun problème et Excel est le goulot d'étranglement, donc découpez le fichier, chargez-le dans le modèle de données, ou filtrez-le pour ne garder que les lignes dont vous avez besoin.

Convertissez à nouveau, puis découpez si Excel ne peut pas tout contenir

Collez votre JSON dans le convertisseur de cette page et téléchargez un fichier CSV propre avec chaque ligne exactement comme écrite. Si le fichier contient plus de 1,048,575 lignes de données, Excel ne peut pas tout afficher sur une seule feuille, donc découpez-le avec le script de ce guide, ou chargez-le dans le modèle de données. Aucun envoi, aucune inscription, rien ne quitte votre onglet de navigateur.

Ouvrir le convertisseur JSON vers CSV
Tous les guides