VBA Importer données CSV => Conflit saut de ligne et retour chariot

J'utilise le code ci dessous pour importer un CSV

    With Fe.QueryTables.Add("TEXT;" & mypath, Fe.Range("A1"))
        .TextFileSemicolonDelimiter = True
        .TextFilePlatform = 65001
        .Refresh 'exécute la requête
        .Delete 'supprime la connexion au fichier texte

    End With

le saut le ligne fait bugger le rapatriement des infos ca saute une ligne au lieu de continuer.

Mille merci pour votre aide , je sèche

Bonjour cepiat,

peux-tu joindre le fichier csv ?

Merci beaucoup par avance , je te met le CSV

Il y'a deux celle de réponse avec retours chariots, c'est au niveau de la première que query add pense que c'est une autre ligne et il saute.

46csvtest.csv (7.70 Ko)

Pour aider à la compréhension , ci joint le fichier CSV à traiter et en exemple le résultat que j'obtiens après le refresh , après la question 193 ça saute une ligne à chaque retours chariot contenu dans la cellule Question

Voici le code que j'utilise pour extraire mes données

 With Fe.QueryTables.Add("TEXT;" & mypath, Fe.Range("A1"))
        .TextFileSemicolonDelimiter = True
        .TextFilePlatform = 65001
        .Refresh 'exécute la requête
        .Delete 'supprime la connexion au fichier texte

    End With

et du coup celui que j'utilise pour patcher faute de mieux

    'Suppression des retours chariot qui foute le dawa

    Set wbCSV = Workbooks.Open(Filename:=mypath, Local:=True)
        nbLignes = Cells.SpecialCells(xlCellTypeLastCell).Row

        For I = 2 To nbLignes       
                    wbCSV.Worksheets(1).Range("GK" & I).Replace Chr(13) & Chr(10), "/"
                    wbCSV.Worksheets(1).Range("LA" & I).Replace Chr(13) & Chr(10), "/"
                       wbCSV.Worksheets(1).Range("LA" & I).Replace "- ", ""
        Next I

            Application.DisplayAlerts = False
            wbCSV.SaveAs Filename:=mypath, FileFormat:=xlCSV, Local:=True
            wbCSV.Close
            Application.DisplayAlerts = True

En espérant êtres clair et en vous remerciant par avance pour votre aide.

21csvtest.csv (7.69 Ko)
16exemple.xlsx (15.07 Ko)

re,

à tester,

22csvtest2.csv (7.08 Ko)
'ajouter la référence Microsoft Scripting Runtime
Sub test()
Dim oFSO As Scripting.FileSystemObject
Dim oFl As Scripting.file
Dim oTxt As Scripting.TextStream
Dim i As Long, rw As Long, fileName As String
Dim tbl()

fileName = "C:\Users\isabelle\Documents\Test11\CSVTEST.csv " '<--à adapter"
Set oFSO = New Scripting.FileSystemObject
Set oFl = oFSO.GetFile(fileName)
Set oTxt = oFl.OpenAsTextStream(ForReading)

    rw = 0
    While Not oTxt.AtEndOfStream
      rw = rw + 1
      ReDim Preserve tbl(rw)
      tbl(rw) = oTxt.ReadLine
      tbl(rw) = Application.Substitute(tbl(rw), Chr(32), "")
    Wend

    Set oTxt = oFSO.CreateTextFile("C:\Users\isabelle\Documents\Test11\CSVTEST2.csv")   '<--à adapter

    For i = LBound(tbl) To UBound(tbl)
        oTxt.WriteLine tbl(i)
    Next i
End Sub

Merci beaucoup pour cette aide .

Le fichier devant être exécuté sur de nombreux pc dont je n'ai aucune action possible dessus , je dois malheureusement me passer des référence Microsoft, à moins qu'il y ais une autre méthodes pour les activer sans action utilisateurs .

Je dois forcément utiliser une méthode standard

En tous cas merci beaucoup pour ce code , ça me permet d'apprendre en même temps

re,

une possibilité si tout les système sont en 32 bits,

Sub Auto_Open()
Ajout_réf_microsoft_scripting_runtime
End Sub

Sub Auto_Close()
Remove_réf_microsoft_scripting_runtime
End Sub

Sub Ajout_réf_microsoft_scripting_runtime()
    Dim ref As String
    ref = "C:\Windows\System32\scrrun.dll"
    ThisWorkbook.VBProject.References.AddFromFile ref
End Sub

Sub Remove_réf_microsoft_scripting_runtime()
For i = 1 To ThisWorkbook.VBProject.References.Count
If ThisWorkbook.VBProject.References(i).Name = "Scripting" Then ThisWorkbook.VBProject.References.remove ThisWorkbook.VBProject.References(i)
Next
End Sub

re,

un autre possibilité pour créer et enlever la référence,

Sub Créer_Reference()
'Microsoft Scripting Runtime
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid "{420B2830-E718-11CF-893D-00A0C9054228}", 1, 0
If Err.Number <> 32813 And Err.Number <> 0 Then
MsgBox Err.Number & Chr(10) & Err.Description & Chr(10) & Err.HelpFile & Chr(10) & Err.HelpContext & Chr(10) & "Microsoft Scripting Runtime"
End If
End Sub
Sub Remove_Reference()
Dim oReference As Object
Set oReference = Application.VBE.ActiveVBProject.References.Item("Scripting")
Application.VBE.ActiveVBProject.References.remove oReference
End Sub

Bonjour,

Evites les doublons si possible !

https://forum.excel-pratique.com/viewtopic.php?f=2&t=120421

Je t'ai donné une autre piste pour la lecture du .csv

Rechercher des sujets similaires à "vba importer donnees csv conflit saut ligne retour chariot"