Copier des données d'un fichier TXT vers une feuille Excel

Rio

XLDnaute Nouveau
Bonjour,

ce sujet a déjà été traité pas mal de fois mais les fichiers TXT sont tours différents que je ne m'en sors pas. Et en plus il y a tellement de solutions pour le faire que je suis perdu.

Besoin :
Extraire les données d'un fichier .txt qui ont déjà été extraite de businessintelligence.
Première question : Peut on extraire directement de BO vers Excel ?
Si non : Comment faire pour extraire les données du fichier joint dans une feuille blanche Excel en VBA bien entendu ! :)

Mon plus gros problème est surtout le fait que les données ne sont pas séparées par des virgules. Sinon vous voyez bien apparaitre les colonnes dans le fichier txt.

Merci de votre aide !

PJ : Cijoint.fr - Service gratuit de dépôt de fichiers
 

tototiti2008

XLDnaute Barbatruc
Re : Copier des données d'un fichier TXT vers une feuille Excel

Bonjour Rio,

Première question : Peut on extraire directement de BO vers Excel ?

Je ne sais pas, je ne connais pas BO, peut-être poser la question sur un Forum BO ?

Si non : Comment faire pour extraire les données du fichier joint dans une feuille blanche Excel en VBA bien entendu ! :)

En VBA ça veut dire que tu sais le faire manuellement ? Si oui, il suffit d'enregistrer une macro pendant que tu ouvres ton ficher dans Excel
Si tu as besoin d'adapter le code généré, reviens nous voir
 

Rio

XLDnaute Nouveau
Re : Copier des données d'un fichier TXT vers une feuille Excel

Bonjour tototiti,

Merci beaucoup pour la réponse, finalement c'est pas forcement utile de chercher compliqué quand on peut le faire manuellement. J'étais tellement pris dans des fonctions hallucinantes données par des internautes que j'en avais oublié la facilité.
Néanmoins j'ai une un autre soucis pour la même macro.

Voilà ce que cela donne :
Sub ExportTXT()
Dim ls_adresse As String
Dim ls_fichier As String
Dim ls_nomFichier As String

ls_adresse = ActiveWorkbook.Path
ls_nomFichier = ActiveWorkbook.Name
ls_fichier = ls_adresse & "\" & FichierExtractionTemporaire_detail & ".txt"

Workbooks.OpenText Filename:= _
"C:\Documents and Settings\ps04160\Desktop\Taux emb. vides\Suivi emb vides\FichierExtractionTemporaire_detail.txt" _
, Origin:=-535, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma _
:=False, Space:=False, Other:=False, 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)), TrailingMinusNumbers:= _
True

Range("A2:M2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("FichierExtractionTemporaire_detail.txt").Activate
ActiveWindow.Close

Windows("Nveau fichier vierge suivi emb vides test BO.xls").Activate
Sheets("PVS_Ext").Select
Range("H2").Select
'Workbooks(ls_nomFichier).Sheets(PVS_Ext).Select
'Windows("Nveau fichier vierge suivi emb vides test BO.xls").Activate
Range("H2").Select
ActiveSheet.Paste
Range("F9").Select

AjoutCommentaire (RechercheMessage("Fin_extract"))

End Sub

Les lignes que j'ai mises en rouge sont des lignes que je souhaiterais modifier afin de pouvoir utiliser ce fichier sur n'importe quelle machine et dans n'importe qu'elle dossier.
J'ai créé des variables ls_fichier et ls_adresse pour les chemins mais quand je les utilise par exemple de cette facon :
Workbooks.OpenText Filename:=ls_fichier

et ben ca marche pas... la macro se perd je ne sais trop...

Si vous avez des solutions, j'ai surement fait une erreur de codage quelquepart.

Merci
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Copier des données d'un fichier TXT vers une feuille Excel

Bonjour Rio,

essaie comme ça

ls_fichier = ls_adresse & "\FichierExtractionTemporaire_detail.txt"
Workbooks.OpenText Filename:=ls_fichier _
, Origin:=-535, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlNone, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma _
:=False, Space:=False, Other:=False, 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)), TrailingMinusNumbers:= _
True
...
Windows(ls_nomfichier).Activate
 

Rio

XLDnaute Nouveau
Re : Copier des données d'un fichier TXT vers une feuille Excel

Ok ben ca marche très bien, merci beaucoup.
Une dernière chose concernant cette extraction du txt vers excel.
Il y a dans ce fichier txt une colonne de date :

Quand je fais l'extraction tout va bien mais ensuite quand j'utilise les données de cette colonne je me suis rendu compte que 2 types apparaissent. Le format de cellule est pourtant le même.

En effet pour illustrer ce que je dis, quand j'utilise cette colonne "date" pour la concatener avec d'autres colonnes, je me retrouve avec une partie des dates qui se transforment en nombre : 40553 par exemple. Et une autre partie de ces dates qui conservent leur format 01/01/2011...
Quand je clique sur les cellules de ces dernières (01/01/2011) cellules et que je tappe entrée, elles prennent le format des autres (40553).
Je comprend pas pourquoi l'extraction donne 2 formats... je souhaiterais n'avoir que des dates qui se transforment en 40553 lorsque je les concatene.

Merci
 

Rio

XLDnaute Nouveau
Re : Copier des données d'un fichier TXT vers une feuille Excel

Non c'est encore pire, les recherchesV qui suivent ne trouvent plus leur références !
J'ai essáyé de changer les formats mais rien n'y fait...
En fait c'est pire car les dates 10/01/2011 sont devenues 01/11/2011 ! :)

Voici le fichier de données. l'extraction se fait dans un onglet ou les cellules sont vides.

Les données :
Cijoint.fr - Service gratuit de dépôt de fichiers
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Copier des données d'un fichier TXT vers une feuille Excel

Re,

Réenregistre une macro en ouvrant ton fichier texte, puis dans l'assistant de conversion du fichier texte, tu peux préciser le type des champs.
Pour la 3ème colonne, précise que c'est un type Date dans l'ordre JMA

Puis regarde le code généré par l'enregistrement
 

Rio

XLDnaute Nouveau
Re : Copier des données d'un fichier TXT vers une feuille Excel

Cela revient au meme que de mettre (3, 4) au dessus et c'est pire que tou car ca met des dates qui n'existe pas comme 11/12/2011 ou 01/11/2011 alors que je n'ai que des dates entre le 10/01/2011 et le 14/01/2011...
J'ai essayé de passer par une feuille intermédiaire vierge puis de recopier les données dans ma feuille qui fait les calculs mais cela ne change rien. Dur dur !
 

MJ13

XLDnaute Barbatruc
Re : Copier des données d'un fichier TXT vers une feuille Excel

Bonjour Rio, tototiti

Macro à tester avec chemin à adapter (J'ai rajouté , local:=True à la fin pour avoir les bonnes dates après avoir utilisé Henry) :

Code:
Sub Macro1()
'
' Macro1 Macro
'

'
    Workbooks.OpenText Filename:= _
        "C:\Chemin\donnees.txt", Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=False, 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)), TrailingMinusNumbers:=True, local:=True
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : Copier des données d'un fichier TXT vers une feuille Excel

Re,

Je ne comprend pas bien, chez moi avec Array(3,4) ça fonctionne bien

Peut-être des différences de paramètres régionaux ?
D'où l'idée de Michel avec Local:=True qui aurait pu porter ses fruits....
Pas trop d'idée
 

MJ13

XLDnaute Barbatruc
Re : Copier des données d'un fichier TXT vers une feuille Excel

Re


Peut-être des différences de paramètres régionaux ?
D'où l'idée de Michel avec Local:=True qui aurait pu porter ses fruits....
Pas trop d'idée

Idem tototiti

Sinon pour Henry, recherche sur le net "Henry Gistrair"
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 967
Membres
103 070
dernier inscrit
jujulop