VBA - Transfert de .txt à Excel

Bonjour,

Je recherche une macro afin de pouvoir exporter des données depuis des fichiers .txt vers Excel.

On pourrait imaginer que le fichier .txt à traiter serait ouvert à l'écran à ce moment-là, ou que son nom soit indiqué dans le fichier Excel contenant la macro, ou qu'il faille aller le chercher dans l'explorer ou toute autre solution proposée.

J'ai déjà un premier problème car les données de base qui ressemblent à ça 0020100378829080000000000201801111000080000002500111356243217111317111317111300000000000000000000000 se retrouvent, selon les options choisies, dans un format différent tel que 2.010037882908E+97

Je joins à ce message un modèle de fichier .txt ainsi que le résultat souhaité dans Excel.

Cordialement.

Bonjour yvouille,

Sub importTxt()
    Dim NomFichier As Variant, Filtre As String, cmpt As Long
    Filtre = "Tous les fichiers(*.txt),*.txt"
    NomFichier = Application.GetOpenFilename(Filtre, 1, "Ouvrir", , True)
    If IsArray(NomFichier) Then
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & NomFichier(1), Destination:=Range("$A$1"))
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(2)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End If
End Sub

eric

Salut Eriiic,

Merci beaucoup pour ta proposition.

Malheureusement j'avais moi-même tenté d'enregistrer un code comme tu l'as fait et mon problème restait que je ne savais pas comment le purifier. Mais à peine j'avais posté ma demande que j'ai vu apparaître en-dessous de mon message un choix de fils traitant du sujet. Et la réponse de Steelsonson à la question de MojitoDu75 répond en grande partie à ma question ; je dois juste y supprimer la deuxième partie de son code qui réalise quelque chose dont je n’ai pas besoin.

Encore un tout grand merci pour ton aide.

Bonne continuation.

Bonjour,

Une autre piste :

Sub Lire()

    Dim Tbl() As String 'oblige les valeurs typées en String
    Dim Fichier As String
    Dim I As Integer

    Fichier = "171117-01 - 2017.09.11-2017.11.15.txt"

    Open ThisWorkbook.Path & "\" & Fichier For Input As #1

        Do While Not EOF(1)

            I = I + 1
            ReDim Preserve Tbl(1 To I)
            Input #1, Tbl(I)

        Loop

    Close #1

    Range("A1:A" & UBound(Tbl)) = Application.WorksheetFunction.Transpose(Tbl)

End Sub

Merci à These pour sa solution. Ce sujet était indiqué comme résolu

Rechercher des sujets similaires à "vba transfert txt"