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