Supprimer une ligne dans un fichier Csv

JORDAN

XLDnaute Impliqué
Bonsoir tout le monde, le Forum,

J'ai un fichier Csv d'environ 60000 lignes et je dois supprimer certaines lignes tous les jours selon un critère de recherche. j'ai fait une boucle pour trouver la ligne mais je ne sais pas comment la supprimer

voici mon code pour trouver la bonne ligne
Code:
While Not StoCsv.AtEndOfStream
     CsvLine = StoCsv.ReadLine
     If Left(Split(CsvLine, ";")(0), 9) = CodeRecherche Then
          "supprimer la ligne"
     End If
Wend

Merci pour votre aide
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Supprimer une ligne dans un fichier Csv

Bonsoir

Pour supprimer une ligne le plus simple est de lire les lignes du fichier (accès séquentiel ) avec Line Input # de vérifier si la ligne doit être conservée, si c'est le cas écrire dans un nouveau fichier avec l'instruction Print #.

On retrouve les instructions dans l'aide de VBA dans le chapitre instructions.
Un exemple
https://www.excel-downloads.com/threads/vba-modifier-txt.103382/

JP
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Supprimer une ligne dans un fichier Csv

Bonsoir,


Code:
Sub essai()
  code = "xxx"        ' lignes commençant par xxx
  rep = ThisWorkbook.Path
  Open rep & "\essai.txt" For Input As #1
  Open rep & "\sortie.txt" For Output As #2
  Do While Not EOF(1)
    Line Input #1, ligne
    If Left(ligne, Len(code)) <> code Then
      Print #2, ligne
    End If
  Loop
  Close #1, #2
End Sub

JB
 

JORDAN

XLDnaute Impliqué
Re : Supprimer une ligne dans un fichier Csv

Bonjour JP14, JB, le Forum,

Donc on ne peut pas supprimer des lignes dans un fichier Csv
c'est pour ça que je n'avais rien trouvé dans mes recherches
Comme je dois garder le nom de mon fichier, je vais devoir le renommer
puis créer un nouveau fichier pour stocker les données

Merci pour votre aide et bon week end
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Supprimer une ligne dans un fichier Csv

Bonjour,

Code:
Sub essai()
  code = "xxx"        ' lignes commençant par xxx
  rep = ThisWorkbook.Path
  Open rep & "\essai.txt" For Input As #1
  Open rep & "\sortie.txt" For Output As #2
  Do While Not EOF(1)
    Line Input #1, ligne
    If Left(ligne, Len(code)) <> code Then
      Print #2, ligne
    End If
  Loop
  Close #1, #2
  Kill rep & "\essai.txt"
  Name rep & "\sortie.txt" As rep & "\essai.txt"
End Sub

JB
 

PMO2

XLDnaute Accro
Re : Supprimer une ligne dans un fichier Csv

Bonjour,

Une piste avec l'exemple en pièce jointe (utilisant Windows Script Host comme dans votre message)

1) mettez le fichier test.csv dans C:\
2) copiez le code suivant dans un module standard
Code:
'////////////////////////////////////////////////
'/// Eventuellement faire référence à         ///
'/// Library Windows Script Host Object Model ///
'/// C:\WINDOWS\system32\wshom.ocx            ///
'////////////////////////////////////////////////

'### Constantes à adapter ###
Const SOURCE As String = "C:\test.csv"
Const CODE_RECHERCHE As String = "janvier"
'############################

Sub SuppLignesCSV()
Dim Fso As Object     'IWshRuntimeLibrary.FileSystemObject
Dim myFile As Object  'IWshRuntimeLibrary.TextStream
Dim ligne()
Dim numLig&
Dim i&
Dim A$
Set Fso = CreateObject("Scripting.FileSystemObject")
Set myFile = Fso.OpenTextFile(SOURCE)
Do Until myFile.AtEndOfStream
  A$ = myFile.ReadLine
  If Left(Split(A$, ";")(0), Len(CODE_RECHERCHE)) <> CODE_RECHERCHE Then
    numLig& = numLig& + 1
    ReDim Preserve ligne(1 To numLig&)
    ligne(numLig&) = A$
  End If
Loop
Set myFile = Fso.CreateTextFile(SOURCE & "_résultat.csv", True)
For i& = 1 To UBound(ligne)
  myFile.WriteLine ligne(i&)
Next i&
myFile.Close
Set myFile = Nothing
Set Fso = Nothing
End Sub

Lancez la macro SuppLignesCSV et un nouveau fichier "test.csv_résultat.csv" sera visible et consultable dans C:\
Les lignes non désirées y ont été écartées.

Cordialement.

PMO
Patrick Morange
 

lcalio

XLDnaute Nouveau
Re : Supprimer une ligne dans un fichier Csv

Bonjour,

Une piste avec l'exemple en pièce jointe (utilisant Windows Script Host comme dans votre message)

1) mettez le fichier test.csv dans C:\
2) copiez le code suivant dans un module standard
Code:
'////////////////////////////////////////////////
'/// Eventuellement faire référence à         ///
'/// Library Windows Script Host Object Model ///
'/// C:\WINDOWS\system32\wshom.ocx            ///
'////////////////////////////////////////////////

'### Constantes à adapter ###
Const SOURCE As String = "C:\test.csv"
Const CODE_RECHERCHE As String = "janvier"
'############################

Sub SuppLignesCSV()
Dim Fso As Object     'IWshRuntimeLibrary.FileSystemObject
Dim myFile As Object  'IWshRuntimeLibrary.TextStream
Dim ligne()
Dim numLig&
Dim i&
Dim A$
Set Fso = CreateObject("Scripting.FileSystemObject")
Set myFile = Fso.OpenTextFile(SOURCE)
Do Until myFile.AtEndOfStream
  A$ = myFile.ReadLine
  If Left(Split(A$, ";")(0), Len(CODE_RECHERCHE)) <> CODE_RECHERCHE Then
    numLig& = numLig& + 1
    ReDim Preserve ligne(1 To numLig&)
    ligne(numLig&) = A$
  End If
Loop
Set myFile = Fso.CreateTextFile(SOURCE & "_résultat.csv", True)
For i& = 1 To UBound(ligne)
  myFile.WriteLine ligne(i&)
Next i&
myFile.Close
Set myFile = Nothing
Set Fso = Nothing
End Sub

Lancez la macro SuppLignesCSV et un nouveau fichier "test.csv_résultat.csv" sera visible et consultable dans C:\
Les lignes non désirées y ont été écartées.

Cordialement.

PMO
Patrick Morange

Bonjour,
Je suis à la recherche d un problème similaire à la différence que m'a recherche ce fait à partir d une colonne spécifique.
Pourriez-vous m aider sur le sujet ?
Merci à vous
 

lcalio

XLDnaute Nouveau
Ppur compléter ma demande d information, je souhaite supprimer toutes les lignes qui correspondent à des critères d une seconde fichier.csv.
Exemple je chercher à supprimer les lignes les de n critères dans une même colonne.
Merci de votre aide
 

Discussions similaires

Réponses
6
Affichages
176

Membres actuellement en ligne

Statistiques des forums

Discussions
312 571
Messages
2 089 805
Membres
104 276
dernier inscrit
helenevellocet