XL 2016 suppression ligne fichier csv

  • Initiateur de la discussion Initiateur de la discussion Excelo92
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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

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
    message vba.png
    28.1 KB · Affichages: 39
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
 
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
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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
267
Réponses
5
Affichages
69
Réponses
2
Affichages
59
Réponses
4
Affichages
68
Retour