Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 suppression ligne fichier csv

Excelo92

XLDnaute Nouveau
Bonjour,
Je souhaiterai supprimer les lignes ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" d'un fichier csv
En cherchant sur les forums j'ai trouvé ce code que j'ai essayé d'adapter à mon fichier :

Public Sub ModifDonnees()
ReDim Tablo(0) As String
Dim NomDuFich As String, NoDuFich As Integer
Dim ChaineSource As String, ChaineDestin As String
Dim Ligne As String, TotLig As Long, I As Long
'init
NomDuFich = "C:\Import variable Talentia\IMPDV.csv" '<<< à remplir !!!!!!!!!
ChaineSource = ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
ChaineDestin = ""
' load
NoDuFich = FreeFile: TotLig = 0
Open NomDuFich For Input As #NoDuFich
Do While Not EOF(NoDuFich)
Line Input #NoDuFich, Ligne
If Ligne = ChaineSource Then
Ligne = ChaineDestin
Else
I = InStr(Ligne, ChaineSource)
If I Then Ligne = Left(Ligne, I - 1) & ChaineDestin & Mid(Ligne, I + Len(ChaineSource))
End If
TotLig = TotLig + 1: ReDim Preserve Tablo(TotLig): Tablo(NoLig) = Ligne
Loop
Close NoDuFich
'recopie
If TotLig > 0 Then
NoDuFich = FreeFile: Open NomDuFich For Output As #NoDuFich
For I = 1 To TotLig: Print #NoDuFich, Ligne: Next
Close NoDuFich
End If
End Sub

Le problème c'est qu'il me supprime tout le fichier
Auriez vous une solution à me proposer?
Merci pour vos retours
Bien à vous
 

patricktoulon

XLDnaute Barbatruc
bonjour
VB:
Sub noblankRow()
    Dim fichier$, vide$, x&, y&
    fichier = "C:\Import variable Talentia\IMPDV.csv"
    vide = ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" & vbCrLf
    'lecture
    x = FreeFile: Open fichier For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x
    'ecriture
    y = FreeFile: Open fichier For Output As #y: Print #y, Replace(laChaine, vide, ""): Close #y
End Sub
 

Excelo92

XLDnaute Nouveau

Merci pour ton retour,
Je viens de tester et j'ai une erreur mais je ne vois pas d'ou elle peut provenir, tu as une idée, voir copie écran
Merci pour votre aide
Cordialement,
 

Pièces jointes

  • message vba.png
    28.1 KB · Affichages: 35

cp4

XLDnaute Barbatruc
Merci pour ton retour,
Je viens de tester et j'ai une erreur mais je ne vois pas d'ou elle peut provenir, tu as une idée, voir copie écran
Merci pour votre aide
Cordialement,
Bonjour,
Voir juste avant le surlignage jaune. Je pense que c'est
laChaine = String(LOF(x), "") au lieu de laChaine = String(LOF(x), " ")

Bon week-end à tous et à toutes.
 

patricktoulon

XLDnaute Barbatruc
bonjour
non @cp4 laisse l'espace il fallait simplement dimer "lachaine" en string
VB:
Sub noblankRow()
    Dim fichier$, vide$, x&, y&, lachaine$
    fichier = "C:\Import variable Talentia\IMPDV.csv"
    vide = ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" & vbCrLf
    'lecture
    x = FreeFile:    Open fichier For Binary Access Read As #x:    lachaine = String(LOF(x), " "):    Get #x, , lachaine:    Close #x
    'ecriture
    y = FreeFile: Open fichier For Output As #y: Print #y, Replace(lachaine, vide, ""): Close #y
End Sub
j'ai testé chez moi tout fonctionne et ca fait le job

si ca fonctionne pas c'est que vous avez un soucis d’autorisation sur le fichier ou vos librairies en vrac
et comme la fonction open et propre a excel alors c'est votre excel qui a pris des coups de serpette
 

cp4

XLDnaute Barbatruc
Bonjour patrickToulon,
Etant donné que notre ami ne nous a pas communiqué le le message d'erreur renvoyer. En effet, tu as absolument raison la variable lachaine n'était pas déclarée.

Bon we
 

Excelo92

XLDnaute Nouveau

Merci, je viens de tester et c'est nickel
ça fait 4 ans que je n'ai pas travaillé sur du vba et de reprendre c'est difficile,
Un grand merci à vous
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…