mygems

Comment filtrer un fichier CSV et ne garder que les lignes utiles

Filtrez un CSV par valeur, plage ou plusieurs conditions, puis enregistrez seulement ces lignes. Excel, Sheets, ligne de commande et téléphone, avec les pièges de chaque méthode.

Par mygems ·

Filtrer un CSV, ce sont deux tâches que l'on confond : voir uniquement les lignes qui correspondent, et enregistrer uniquement ces lignes dans un nouveau fichier. Tous les outils font bien la première. La seconde est pleine de pièges, parce qu'un tableur qui vous montre 40 lignes filtrées enregistrera sans broncher les 40 000.

La réponse rapide

  • Voir les lignes correspondantes : Excel ou Sheets, Données → Filtrer, choisissez les valeurs.
  • Enregistrer uniquement les lignes correspondantes : filtrez, sélectionnez les lignes visibles, copiez-les dans une nouvelle feuille, puis enregistrez celle-ci. Ou utilisez un outil qui écrit directement le résultat filtré.
  • Gros fichier, ou opération répétée : une seule commande, csvgrep, mlr ou DuckDB, plus bas.
  • Sur téléphone : une appli CSV avec un vrai panneau de filtre, pour ne pas passer par un tableur converti.

Dans Excel

  1. Cliquez sur n'importe quelle cellule des données et appuyez sur Ctrl+Maj+L (⌘+Maj+F sur Mac), ou sur Données → Filtrer.
  2. Utilisez la flèche d'un en-tête de colonne pour choisir des valeurs, ou Filtres numériques / Filtres textuels pour des conditions comme supérieur à ou contient.
  3. Combinez les filtres sur plusieurs colonnes : chacun réduit encore le résultat.

Pour enregistrer uniquement les lignes filtrées : sélectionnez la plage visible, copiez, collez dans une nouvelle feuille et enregistrez celle-ci au format CSV. Quand vous copiez une plage avec un filtre automatique, Excel ne copie que les lignes visibles.

Le piège : enregistrer la feuille filtrée elle-même en CSV écrit toutes les lignes, y compris les lignes masquées. Le filtre est une vue, pas une modification des données.

Un OU entre colonnes (les lignes où le pays est l'Allemagne ou le chiffre d'affaires dépasse 10 000) est impossible avec le filtre automatique, qui ne combine les colonnes qu'avec ET. Utilisez Données → Avancé avec une plage de critères, où les conditions placées sur des lignes séparées sont reliées par OU, et cochez Copier vers un autre emplacement pour écrire le résultat ailleurs en une seule étape.

Et comme il s'agit d'un CSV : s'il contient des identifiants, des codes postaux ou de longs nombres, ouvrez-le avec une importation plutôt qu'un double-clic, sinon les valeurs sur lesquelles vous filtrez ont peut-être déjà été modifiées. Voir comment empêcher Excel de modifier vos données CSV.

Dans Google Sheets

Données → Créer un filtre fonctionne comme dans Excel. Mais Sheets a mieux pour cette tâche, la fonction FILTER, qui écrit les lignes correspondantes ailleurs et les tient à jour :

=FILTER(A2:F, C2:C="Europe", E2:E<2000)

Chaque condition supplémentaire est reliée par ET. Pour un OU, additionnez-les : (C2:C="Europe")+(C2:C="Asia"). Mettez cette formule dans un nouvel onglet, et cet onglet est votre fichier filtré : Fichier → Télécharger → CSV pendant qu'il est actif.

En ligne de commande

Pour les fichiers trop gros pour un tableur, ou un filtre que vous lancerez chaque semaine, une commande est plus rapide que des clics et donne chaque fois le même résultat.

grep est tentant et faux. Il cherche le texte n'importe où dans la ligne, donc grep Europe trouve aussi une ligne dont les notes disent « not Europe ». Il supprime la ligne d'en-tête. Et awk -F, coupe à chaque virgule, y compris celles des champs entre guillemets. Utilisez un outil qui comprend le CSV.

csvkit, correspondance exacte ou motif sur une colonne :

csvgrep -c country -m "Germany" in.csv > germany.csv
csvgrep -c email -r "@example\.com$" in.csv > example.csv

Miller, pour les conditions :

mlr --csv filter '$country == "Germany" && $revenue > 10000' in.csv > out.csv

DuckDB, pour tout ce que SQL sait exprimer, et pour des fichiers de toute taille :

duckdb -c "COPY (SELECT * FROM 'in.csv' WHERE country = 'Germany' AND revenue > 10000) TO 'out.csv'"

Les trois conservent l'en-tête, respectent les guillemets et n'écrivent que les lignes correspondantes. Le guide SQL sur un CSV va plus loin avec DuckDB.

Les erreurs de filtrage qui donnent de mauvaises lignes

Chacune renvoie un résultat d'apparence plausible, et c'est ce qui les rend dangereuses.

  • Casse et espaces. Germany, germany et Germany (espace final) sont trois valeurs différentes pour la plupart des filtres. Regardez les valeurs distinctes de la colonne avant de filtrer sur l'une d'elles.
  • Nombres stockés en texte. revenue > 10000 compare du texte quand la colonne est du texte, et "9000" > "10000" est vrai dans l'ordre alphabétique. Vérifiez que l'outil voit la colonne comme des nombres.
  • Dates en formats mélangés. 03/04/2026 est mars dans un export et avril dans un autre. Ne filtrez sur une colonne de dates qu'après avoir vérifié lequel.
  • Cellules vides. Une cellule vide, est-ce zéro, inconnu ou sans objet ? Les filtres excluent généralement les vides des conditions « inférieur à », sans rien dire.

Sur téléphone

Convertir un CSV en tableur sur un téléphone pour le filtrer cumule tous les problèmes ci-dessus avec un petit écran. Une appli CSV dotée de son propre filtre travaille sur le fichier tel quel.

Dans Smart CSV Viewer, Filter ouvre un panneau au-dessus du tableau. Ajoutez des conditions par colonne ; les opérateurs suivent le type de la colonne : une colonne de nombres compare des nombres, une colonne de dates compare des dates. Le bouton vous indique combien de lignes resteront, Apply · 4 rows, avant de valider. Pour aller vite, maintenez une cellule et choisissez Filter by this value.

Le panneau de filtre avec deux conditions, Continent est égal à Europe et Budget est inférieur à 2000, et un bouton indiquant Apply, 4 rows
Les conditions, avec le nombre de lignes avant d'appliquer
Le tableau filtré sur 9 lignes sur 30, toutes en Europe, avec la barre de filtre affichée sous la barre du haut
Le résultat : 9 lignes sur 30

Edit as SQL transforme les conditions en une requête que vous pouvez modifier à la main. Pour emporter le résultat ailleurs, sélectionnez les lignes et copiez : la copie suit votre filtre et se colle dans un tableur sous forme de vraies cellules. Vous pouvez aussi demander des lignes en langage courant à l'assistant IA, qui n'envoie que les noms de vos colonnes.

CSV File Viewer - Smart CSViPhone et iPad · Android

Un panneau de filtre conçu pour le CSV sur iPhone et Android : conditions typées, nombre de lignes correspondantes avant d'appliquer, SQL si vous le voulez, et rien n'est envoyé en ligne.

Ce que ça fait

Combiner des conditions avec des groupes match any ou match none est une fonction Pro ; les conditions ET simples sont gratuites.

Questions

Comment filtrer un fichier CSV et n'enregistrer que les lignes filtrées ?
Dans Excel ou Google Sheets, appliquez le filtre, sélectionnez et copiez les lignes visibles, collez-les dans une nouvelle feuille et enregistrez celle-ci au format CSV. Enregistrer directement la feuille filtrée écrit toutes les lignes, y compris les lignes masquées. En ligne de commande, csvgrep, Miller ou DuckDB n'écrivent que les lignes correspondantes en une seule étape.
Peut-on filtrer un CSV sans Excel ?
Oui. Google Sheets filtre un CSV gratuitement, les outils en ligne de commande comme csvkit, Miller et DuckDB filtrent des fichiers de toute taille, et les applis CSV sur téléphone filtrent le fichier directement, sans le convertir.
Pourquoi grep donne-t-il de mauvaises lignes quand on filtre un CSV ?
grep cherche le texte n'importe où dans la ligne, pas dans une colonne précise, et ramène donc des lignes où le mot apparaît dans un autre champ. Il supprime aussi l'en-tête. awk avec une virgule comme séparateur se trompe sur les champs entre guillemets qui contiennent des virgules. Utilisez plutôt un outil qui comprend le CSV.
Comment filtrer un CSV avec des conditions OU dans Excel ?
Le filtre automatique ne combine les colonnes qu'avec ET. Pour un OU entre colonnes, utilisez Données → Avancé avec une plage de critères, en mettant chaque alternative sur sa propre ligne, et choisissez Copier vers un autre emplacement pour écrire le résultat ailleurs.
Pourquoi mon filtre numérique renvoie-t-il de mauvaises lignes ?
La colonne est probablement stockée en texte, donc les valeurs sont comparées dans l'ordre alphabétique : '9000' est classé après '10000'. Convertissez la colonne en nombres, ou utilisez un outil qui la traite comme numérique.

mygems — Développe CSV Editor et Smart CSV Viewer, deux applis nées du fait que les tableurs abandonnent face aux gros fichiers.