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,mlrou 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
- Cliquez sur n'importe quelle cellule des données et appuyez sur Ctrl+Maj+L (⌘+Maj+F sur Mac), ou sur Données → Filtrer.
- 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.
- 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,germanyetGermany(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 > 10000compare 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/2026est 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.


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.
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 faitCombiner des conditions avec des groupes match any ou match none est une fonction Pro ; les conditions ET simples sont gratuites.