Enregistrer un fichier .txt dans exel

Résolu
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020 - 24 janv. 2008 à 11:09
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020 - 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

10 réponses

6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
25 janv. 2008 à 11:16
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
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
24 janv. 2008 à 15:46
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+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
24 janv. 2008 à 16:56
...

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+
0
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
24 janv. 2008 à 17:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
24 janv. 2008 à 18:00
?!?
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
0
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
25 janv. 2008 à 09:17
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
0
leswebi Messages postés 2 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 1 février 2008
1 févr. 2008 à 11:50
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
0
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
1 févr. 2008 à 14:18
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
0
leswebi Messages postés 2 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 1 février 2008
1 févr. 2008 à 16:25
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
0
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
6 févr. 2008 à 14:13
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
0
Rejoignez-nous