Enregistrer un fichier .txt dans exel [Résolu]

Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
- - Dernière réponse : 6xavier6
Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
- 6 févr. 2008 à 14:13
Bonjour a tous

Jai un peu farfouiller le site a la recherche d'une reponse a ma question j'ai trouver une ki repond partiellement a ma demande

J'ai un fichier .txt de cette forme la :
CPU                   MEM       TIME
0:00:00.062        3624        17:04:50.71
0:00:00.062        3624        17:04:52.14
0:00:00.062        3624        17:06:50.96
Je cherche a le mettre dans un fichier exel en concervant les colonnes.

Jai trouver ce code dans le forum le probleme cest kil me met toute les lignes dans une seule cellule donc comment le faire evoluer pour respecter mes trois colonnes :
  Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
  Dim waExcel: Set waExcel = CreateObject("Excel.Application") 'Ouverture d'Excel
  Dim StrPath As String, StrFich As String
  StrPath = "C:" 'Chemin d'accès du fichier
  If Right(StrPath, 1) <> "" Then StrPath = StrPath & "" 'Ajoute \ à la fin s'il y en a pas
  StrFich = "Test_Performance_Result_Xavier.txt" 'Nom du fichier
  If FSO.FileExists(StrPath & StrFich) Then 'Existance du fichier
    waExcel.Visible = False 'Rendre invisible Excel
    'Importe le fichier texte vers une feuille Excel de façon Largeur fixe avec délimiteur : Tabulation et Space
    waExcel.Workbooks.OpenText StrPath & StrFich, , , 2, , , True, , , True
    'Sauvegarde la feuiller importer vers le chemin d'accès de départ en motifiant l'extension et en mode partagé pour éviter des erreurs
    waExcel.Workbooks(StrFich).SaveAs StrPath & Left(StrFich, Len(StrFich) - 4) & ".xls", , , , , , 2
  End If
  'Fermeture d'Excel
  waExcel.Application.Quit

Si cest plus facile, jai aussi le contenu du fichier .txt dans un tableau dans mon programme

Merci a tous

6xavier6
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
3
Merci
Finalement je suis passer par une maccro, cette version marche

Merci de ton aide bigfish_le_vrai[auteur/BIGFISHLEVRAI/510670.aspx ]

Dim LFile As Long
    Dim OFile As String, Line As String, tableau() As String
    Dim i As Integer
    OFile = "C:\Test_Performance_Result_Xavier.txt"
    LFile = FreeFile
    i = 1
    Open OFile For Input As #LFile
        Do
            Input #LFile, Line
            tableau() = Split(Line, vbTab & vbTab, , vbBinaryCompare)
            Sheets("Sheet1").Select
            Range("A" & i & "").Value = tableau(0)
            Range("B" & i & "").Value = tableau(1)
            Range("C" & i & "").Value = tableau(2)
            i = i + 1
        Loop Until EOF(LFile)
    Close #LFile

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 6xavier6
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
Bonjour,

Sub OpenTextFile()
Dim MonFichier As String, LeChemin As String
MonFichier = "test.txt"
LeChemin = "C:\temp"
On Error Resume Next
    Workbooks.OpenText Filename:=LeChemin & MonFichier, Origin:=437, StartRow:=1 _
        , DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(14, 1), Array(28, _
        1)), TrailingMinusNumbers:=True
If Err.Number <> 0 Then MsgBox "le fichier ou le chemin specifier n'existe pas"
End Sub

A+
Commenter la réponse de bigfish_le vrai
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
...

Apparemment tu doit avoir une version d'exel differente de la mienne. Quelle version d'excel as-tu ?
ou bien encore, tu as un probleme de reference mais pour ce dernier on vera apres si le reste ne marche pas.

essaye toujours ça:

Sub OpenTextFile()
Dim MonFichier As String, LeChemin As String
MonFichier = "test.txt"
LeChemin = "C:\temp"
On Error Resume Next
    Workbooks.OpenText Filename:=LeChemin & MonFichier, Origin:=437, StartRow:=1 _
        , DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter:= _
        True, Tab:=False, Semicolon:=False, Comma:=False, Space:=True, Other _
        :=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2)), _
        TrailingMinusNumbers:=True
If Err.Number <> 0 Then
    MsgBox "le fichier ou le chemin specifier n'existe pas"
Else
    Cells.Columns.AutoFit
End If
End Sub

Si cela ne marche pas, dans l'editeur VBA tu vas dans l'aide et tu fais une recherche sur : OpenText Method et tu regarde les options disponible pour DataType

Courage

A+
Commenter la réponse de bigfish_le vrai
Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
0
Merci
Alors le premier ne separe pas les colonnes au bonne endroit

le second fait la meme chose que initialement cad il met tout dans les premiere cellule
Commenter la réponse de 6xavier6
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
?!?
Est-ce que entre les colonnes de ton fichier text, tu as un separateur autre que des espaces ? si oui quoi ?
Ou bien, as-tu, dans ton fichier text, autre chose que les colonnes que tu nous montrées, une phrase ou autre ? si oui donne moi la structure exact de ton fichier
Commenter la réponse de bigfish_le vrai
Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
0
Merci
oui jai des tabulation pour separer dans mon fichier .txt

CPU tab tab tab MEM tab tab TIME
0:00:00.062 tab tab 3624 tab tab 17:04:50.71
0:00:00.062 tab tab 3624 tab tab 17:04:52.14
0:00:00.062 tab tab 3624 tab tab 17:06:50.96

voila
Commenter la réponse de 6xavier6
Messages postés
2
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
1 février 2008
0
Merci
Salut à tous,

Mon problème est exactement l'inverse de celui exposé.
Je souhaite enregistrer des données de feuilles excel sous word au format text strict sans mise en forme. 

Voici le bout de code que j'ai, malheureusement il recopie le tableau: comment empécher le collage en mise en forme de tableau mais uniquement en données + tabulation ?

Sub ImportDonneesExcelVersWord()
'
' ImportDonneesExcelVersWord Macro
' Macro enregistrée le 31/01/2008 par Siaap
'
' Touche de raccourci du clavier: Ctrl+Maj+I
'
    Range("A1:B17").Copy
     Set WW = CreateObject("word.application")
     WW.Visible = True
     WW.Documents.Add
     WW.Selection.PasteSpecial Link:=False, DataType:=wdPasteNumber, Placement:= _
               wdInLine, DisplayAsIcon:=False
     WW.Application.ActiveDocument.Save



End Sub

Merci

leswebi
Commenter la réponse de leswebi
Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
0
Merci
juste pour etre clair

tu as un fichier exel et tu veut recuperer les information pour les mettre dans un fichier .txt, c'est bien ca ??

si oui, peut tu donner plus dinformation sur ton fichier exel :

- connait tu le nb de collonne ou cela est il varialbe ??
- meme question pour les lignes ???

avec cest information je pense pouvoir taider
Commenter la réponse de 6xavier6
Messages postés
2
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
1 février 2008
0
Merci
C'est exactement ça : Exporter des feuilles Excel à mettre sous word sans mise en forme, copier uniquement le texte.
 
Voila typiquement, le type de tableau que je souhaite exporter:



<colgroup>
<col style=\"WIDTH: 60pt\" span=\"2\" width=\"80\" />
</colgroup>

----

MAV,

,

----

T en jours,
Q en m3/s,

----

-0.166667,
0.682870,

----

0.000000,
0.854398,

----

0.166667,
0.887335,

----

0.333333,
0.887335,

----

0.500000,
1.182405,

----

0.666667,
1.674190,

----

0.833333,
1.674190,

----

1.000000,
1.492940,

----

1.166667,
1.590856,

----

1.333333,
1.313773,

----

1.500000,
1.057176,

----

1.666667,
0.695486,

----

1.833333,
0.695486,

----

2.000000,
0.695486,

----

2.166667,
0.682870



et je souhaite l'exporter comme ça dans un fichier MAV.txt :



-0.166667       0.682870<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


0.000000         0.854398


0.166667         0.887335


0.333333         0.887335


0.500000         1.182405


0.666667         1.674190


0.833333         1.674190


1.000000         1.492940


1.166667         1.590856


1.333333         1.313773


1.500000         1.057176


1.666667         0.695486


1.833333         0.695486


2.000000         0.695486


2.166667         0.682870




Il y a donc 2 colonnes et il y a ici 15 lignes à exporter mais le nombre de lignes est variable en fonction du pas de temps. De plus, je souhaiterai nommer mon fichier avec la chaine de caractère de la première cellule (ici MAV). 

Merci

leswebi
Commenter la réponse de leswebi
Messages postés
50
Date d'inscription
jeudi 29 mars 2007
Statut
Membre
Dernière intervention
2 juillet 2009
0
Merci
Je te garanti rien mais un code dans le style devrait se rapprocher de ta demande



je lai pas tester je te laisse le faire



desoler davoir mit tant de temps a repondre



il est optimiser pour ce ke tu mas donner mais jen convient cest pas du code hyper propre



tien moi au courant de ton avancement




******************************************************




Dim i As Integer, intFileNimber As Integer




Din Content As String, Path As String





Sheets("nom de la feuille").Select




Path = "C:" &


Range("A1").Value & ".txt"







i=3
While Not Range("A"& i &"").Value = ""





    Content =




Range("A"& i &"").Value & vbTab &




Range("B"& i &"").Value & vbNewLine







    i = i+1




Wend








Open Path For Append As #intFileNumber



    Print #intFileNumber, Content






Close #intFileNumber
Commenter la réponse de 6xavier6