Transformation fichier TXT en fichier xls

Résolu/Fermé
emiliem - 7 févr. 2011 à 13:45
 emiliem - 7 févr. 2011 à 17:29
Bonjour,

Je souhaiterai effectuer une macro permettant :
1/ de choisir un fichier .txt dans mes documents
2/ d'importer se fichier .txt sous Excel de telle sorte à le mettre en .xls mais sachant que ce fichier Texte utilise des ";" comme séparateurs.

J'ai actuellement une macro (cf. ci dessous) permettant de faire cela pour des fichiers .dat mais je n'arrive pas à l'étendre à des fichiers .txt pour lesquels les séparateurs dont des points virgules.
Qulequ'un aurait il une idée?

Macro pour fichier .dat=>

Sub ouvertdonnées()
'
' cpt Macro
'
' Touche de raccourci du clavier: Ctrl+c
'
'ouverture du fichierde travail
filetoopen = Application.GetOpenFilename("Fichiers (*.txt), *.txt")
If filetoopen = False Then End

NomFichier = filetoopen

Workbooks.OpenText Filename:= _
NomFichier _
, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
, Comma:=True, Space:=False, Other:=True, OtherChar:="=", FieldInfo:= _
Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7 _
, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array _
(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _
Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array( _
27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), _
Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array( _
40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1)), TrailingMinusNumbers _
:=True
ActiveWindow.WindowState = xlNormal
End Sub
A voir également:

3 réponses

Dans un fichier txt, le séparateur est une tabulation. Dans ton cas, (le ;), il faudrait que le fichier soit en .csv.
Voila le lien qui pourrait logiquement répondre à tes besoins
https://support.microsoft.com/fr-fr/office/importer-ou-exporter-des-fichiers-texte-txt-ou-csv-5250ac4c-663c-47ce-937b-339e391393ba?ocmsassetid=hp010099725&correlationid=83b76d3a-6299-4b1f-8a9c-a2723223f358&ui=fr-fr&rs=fr-fr&ad=fr
0
Bonjour,

Voici votre exemple adaptée :

Option Explicit 

Sub OuvertDonnees() 
    
   Dim FileToOpen As Variant 
   Dim NomFichier As String 
   Dim FichierSortie As String 
   Dim Position As Long 
    
    FileToOpen = Application.GetOpenFilename("Fichiers (*.txt), *.txt") 
     
    If (FileToOpen <> False) Then 
     
        NomFichier = FileToOpen 
         
        Workbooks.OpenText Filename:= _ 
        NomFichier _ 
        , Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True _ 
        , Comma:=False, Space:=False, Other:=True, OtherChar:="=", FieldInfo:= _ 
        Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7 _ 
        , 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array _ 
        (14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), _ 
        Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array( _ 
        27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), _ 
        Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array( _ 
        40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1)), TrailingMinusNumbers _ 
        :=True 
        ActiveWindow.WindowState = xlNormal 
         
        Position = InStr(1, UCase(NomFichier), "TXT", vbTextCompare) 
         
        FichierSortie = Mid(NomFichier, 1, (Position - 1) ) & "xls" 
         
        Application.DisplayAlerts = False 
        ActiveWorkbook.SaveAs FichierSortie 
        Application.DisplayAlerts = True 
        'ActiveWorkbook.Close 
         
    End If 
     
End Sub 



N.B. L'erreur initial était au niveau des paramètres :
Semicolon:=False , Comma:=True 
' doit se lire : 
Semicolon:=True , Comma:=False 


Info
0
Ok merci beaucoup.

Emilie
0