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

grâce à toi j'ai pu résoudre mon problème. Un grand merci !!

Pas de quoi, n'hésite pas à revenir vers nous si tu as d'autres questions.

Juste par curiosité, le code fonctionnait ainsi ou tu as du faire des adaptations (not. séparateur décimal) ?

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.

Rechercher des sujets similaires à "ouvrir fichier texte modifier maccro"