Guides

Ouvrir un fichier CSV trop volumineux pour Excel

Par l’équipe Opener7 min de lecture

Une feuille Excel contient au maximum 1 048 576 lignes et 16 384 colonnes : un export de 3 millions de lignes n’y tient tout simplement pas. Excel charge le début, vous avertit et laisse le reste de côté. Pour voir le fichier entier, ouvrez-le dans un outil sans cette limite, comme la visionneuse CSV, chargez-le dans le modèle de données d’Excel plutôt que dans une feuille, découpez-le, ou analysez-le avec Python ou une base de données.

Pourquoi Excel coupe le fichier

Un fichier CSV n’a pas de limite de taille en soi. C’est du texte brut : une ligne par enregistrement, des valeurs séparées par des virgules ou des points-virgules (si c’est nouveau pour vous, lisez ce qu’est un fichier CSV). Excel, en revanche, place tout ce que vous ouvrez dans une feuille de calcul, et une feuille a une grille fixe : 1 048 576 lignes sur 16 384 colonnes (colonne XFD).

Quand le fichier dépasse cette grille, Excel affiche un avertissement indiquant que le fichier n’a pas été chargé entièrement et ne garde que les lignes qui tiennent. L’en-tête et 1 048 575 lignes de données passent ; à partir de la ligne 1 048 577, tout disparaît de ce que vous voyez à l’écran.

Google Sheets n’est pas une échappatoire. Il est limité à 10 millions de cellules par feuille de calcul, toutes feuilles confondues. Un fichier de 3 millions de lignes sur 10 colonnes représente déjà 30 millions de cellules : il ne s’importera pas non plus.

Le vrai risque : perdre des données en enregistrant

L’avertissement se ferme d’un clic, et ce qui reste à l’écran ressemble à un tableau parfaitement normal. Le danger vient après :

Si Excel a déjà affiché l’avertissement, fermez le fichier sans enregistrer et gardez l’export d’origine intact. Vérifiez ensuite sa taille réelle avant de décider quoi faire.

Option 1 : ouvrir le fichier entier dans votre navigateur

Si vous avez surtout besoin de consulter les données (vérifier quelques enregistrements, retrouver un client, voir ce que contient une colonne), une visionneuse sans limite de grille est la solution la plus rapide.

La visionneuse CSV d’Opener lit le fichier dans votre navigateur et ne l’envoie jamais, ce qui compte quand l’export contient des données clients ou financières. L’analyse tourne en arrière-plan et seules les lignes visibles à l’écran sont dessinées : un fichier de 200 000 lignes s’ouvre en une seconde environ, et les fichiers de plusieurs millions de lignes fonctionnent sur un ordinateur portable ordinaire. La limite pratique, c’est la mémoire de votre appareil, pas un nombre de lignes fixe.

Une fois le fichier ouvert, vous pouvez :

Ce dernier point est une astuce pratique : filtrez 3 millions de lignes pour ne garder que les 40 000 qui concernent une région, exportez-les, et ce fichier plus petit s’ouvre dans Excel sans aucun avertissement. La visionneuse ne calcule ni formules, ni tableaux croisés, ni graphiques ; pour cela, lisez la suite.

Option 2 : le charger dans le modèle de données d’Excel

Les versions récentes d’Excel pour ordinateur peuvent importer un CSV via Power Query (le chemin « Obtenir des données » / import à partir d’un fichier texte/CSV, dans l’onglet Données) au lieu de l’ouvrir directement. La différence tient à l’endroit où arrivent les données.

Au lieu de charger le résultat dans une feuille, choisissez de ne créer qu’une connexion et de l’ajouter au modèle de données. Le modèle de données stocke les données sous forme compressée, en dehors de la grille : il n’est donc pas soumis à la limite de 1 048 576 lignes. Vous pouvez ensuite construire un tableau croisé dynamique dessus et résumer les 3 millions de lignes : totaux par mois, nombre par catégorie, etc.

La contrepartie : vous ne pouvez pas faire défiler les lignes comme dans une feuille normale, et les intitulés exacts des menus varient selon les versions d’Excel. C’est la meilleure option quand vous devez rester dans Excel et que le résultat attendu est une synthèse plutôt qu’une vue ligne par ligne.

Option 3 : compter, prévisualiser et découper en ligne de commande

Sous macOS, Linux ou Windows avec WSL, quelques commandes standard répondent en quelques secondes à « quelle taille fait-il ? » et « qu’y a-t-il dedans ? », sans charger le fichier nulle part :

wc -l export.csv              # nombre de lignes
head -n 20 export.csv         # 20 premières lignes
head -n 100000 export.csv > sample.csv   # un échantillon plus petit pour faire des essais

Notez que wc -l compte les lignes du fichier, pas les enregistrements. Si certaines valeurs contiennent des retours à la ligne entre guillemets (c’est souvent le cas des adresses et des commentaires), le nombre de lignes sera supérieur au nombre d’enregistrements.

Pour découper le fichier en morceaux qu’Excel peut ouvrir, chacun avec sa propre ligne d’en-tête :

tail -n +2 export.csv | split -l 1000000 - part_
for f in part_*; do
  { head -n 1 export.csv; cat "$f"; } > "$f.csv" && rm "$f"
done

Le découpage suffit pour des vérifications rapides, mais attention au même problème de retours à la ligne entre guillemets : split coupe par lignes et peut casser en deux une valeur sur plusieurs lignes. Et travailler sur quatre classeurs séparés devient laborieux si vous avez besoin de totaux sur l’ensemble.

Option 4 : l’analyser avec pandas, SQLite ou DuckDB

Si vous devez calculer, croiser ou agréger, un vrai outil de données est la réponse honnête. Tous ceux-ci gèrent des dizaines de millions de lignes sur un ordinateur portable ordinaire.

Python avec pandas lit le fichier entier en mémoire :

import pandas as pd

df = pd.read_csv("export.csv")
print(len(df))
print(df.groupby("region")["amount"].sum())

Si le fichier dépasse la mémoire vive de votre machine, lisez-le par morceaux :

total = 0
for chunk in pd.read_csv("export.csv", chunksize=500_000):
    total += chunk["amount"].sum()

DuckDB peut interroger un fichier CSV directement en SQL, sans l’importer au préalable :

SELECT region, COUNT(*) AS orders, SUM(amount) AS revenue
FROM 'export.csv'
GROUP BY region
ORDER BY revenue DESC;

SQLite est installé sur de nombreux systèmes et convient bien quand vous voulez garder les données dans un seul fichier interrogeable :

sqlite3 sales.db
sqlite> .mode csv
sqlite> .import export.csv sales
sqlite> SELECT COUNT(*) FROM sales;

Une bonne méthode consiste à faire le gros du travail ici, puis à écrire un petit résultat (quelques milliers de lignes de synthèse) dans un CSV pour Excel ou pour un rapport.

Questions fréquentes

Peut-on augmenter la limite de lignes d’Excel ?

Non. La limite de 1 048 576 lignes est fixe pour toutes les feuilles. On peut seulement la contourner : charger les données dans le modèle de données, découper le fichier ou utiliser un autre outil.

Comment savoir si mon fichier a été tronqué ?

Excel vous avertit à l’ouverture, et une feuille dont les données s’arrêtent pile à la ligne 1 048 576 est un signe qui ne trompe pas. Pour en être sûr, vérifiez la taille du fichier d’origine avec wc -l ou ouvrez-le dans la visionneuse CSV, qui affiche le nombre total de lignes.

Google Sheets ou LibreOffice peuvent-ils l’ouvrir à la place ?

En général, non. Google Sheets est plafonné à 10 millions de cellules par feuille de calcul, et LibreOffice Calc a lui aussi un nombre maximal de lignes fixe par feuille. Les deux conviennent aux fichiers plus petits, mais un export de plusieurs millions de lignes demande une visionneuse, une base de données ou un script.

Est-ce sans risque d’ouvrir un gros export clients dans un outil en ligne ?

Tout dépend de l’outil. Beaucoup de convertisseurs en ligne envoient votre fichier sur un serveur. Opener lit le fichier localement dans votre navigateur et n’envoie rien nulle part : les données restent sur votre appareil.