Ouvrir un fichier texte et le modifier avec une maccro
Bonjour tout le monde,
Le titre parle de lui-même. Etant débutant dans les maccro Excel je requiert votre aide.
Je souhaite par le biais d'une maccro :
- Ouvrir un fichier texte (forcèment un fichier *.txt) avec un nom différent et un chemin différent.
- L'afficher dans ma feuille de calcul existante 'Fichier à importer' en $A$1.
- Remplacer les "." par des "," et convertir les données texte en décimales.
J'ai déjà bien cherché et testé pleins de choses (GetOpenFilename par exemple) malheureusement le nom du fichier me bloque toujours et c'est bien le problème.
Je précise j'arrive à l'afficher dans ma feuille de calcul et faire la conversion en "." et ",".
Mais, j'aimerais pouvoir le faire en choisissant le fichier (avec le nom différent et un chemin différent) que je veux afficher et changer.
Je vous remercie d'avance de votre réponse.
Je vous montre ce que j'ai pu faire avec l'enregistreur de maccros. Partir avec c'est mieux que de partir sans rien.
Sub Bouton_Take_and_replace()
'
' Bouton_Take_and_replace Macro
'
'
Range("A1").Select
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveWorkbook.Queries.Add Name:="Enceinte 2-1 (2)", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(""C:\Users\Theo\Documents\Stage\AS-8\Réponses en fréquences\Export\02-05-2019\Enceinte 2-1.txt""),null,{0, 16, 32},null,1252)," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Type modifié"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Enceinte 2-1 (2)"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Enceinte 2-1 (2)]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Enceinte_2_1__2"
.Refresh BackgroundQuery:=False
End With
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.CommandBars("Queries and Connections").Visible = False
Range("Enceinte_2_1__2[[#All],[Column1]]").Select
Selection.TextToColumns Destination:=Range( _
"Enceinte_2_1__2[[#Headers],[Column1]]"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("Enceinte_2_1__2[[#All],[Column2]]").Select
Selection.TextToColumns Destination:=Range( _
"Enceinte_2_1__2[[#Headers],[Column2]]"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("Enceinte_2_1__2[[#All],[Column3]]").Select
Selection.TextToColumns Destination:=Range( _
"Enceinte_2_1__2[[#Headers],[Column3]]"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("Enceinte_2_1__2[[#Headers],[Column1]]").Select
End Sub
Bonjour,
Je te propose une version plus simple (à tester) :
Sub OuvrirTxt()
Dim Fichier As String, NomSave As String
Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If Fichier <> False Then
Workbooks.OpenText Filename:=Fichier, DataType:=xlDelimited, Tab:=True 'Délimiteur tabulation
NomSave = Application.GetSaveAsFilename 'Choix du nom de fichier à sauvegarder
ActiveWorkbook.SaveAs Filename:=NomSave
End If
End Sub
Selon le format de ton fichier, il y aura peut être des ajustements à faire (choix du délimiteur, du séparateur décimal...). Si besoin, je t'invite à consulter cette page : https://docs.microsoft.com/fr-fr/office/vba/api/excel.workbooks.opentext
PS : l'enregistreur de macro ne produit pas un code propre et utilisable en l'état, le mieux reste de ne pas l'utiliser sauf pour apprendre des syntaxes spécifiques...
Bonjour Pedro,
grâce à toi j'ai pu résoudre mon problème. Un grand merci !!
Bonjour,
J'ai du faire pas mal d'adaptation. Car ce problème m'ennuie depuis bien un mois et j'ai posé mon sujet sur plusieurs forums. Une personne sur un autre forum m'a passer une maccro pour mon sujet et j'ai pu en modifier le contenu grâce à la tienne.