Macro complexe, import de plusieurs fichier sur une feuille

schlorfy

XLDnaute Nouveau
Bonjour,

je suis un peu perdu concernant la création d'une macro dont j'ai besoin. Je vous expose le problème.

Mon but : Importer les données de 500 fichiers dans une feuille excel.

Les fichier à importer sont sous format txt avec comme séparateur des virgules. Ils seraient, après conversion en colonnes, composé de 2 colonnes et 4000 lignes. Seule la première colonne m’intéresse.

Le fichier destination devrait comprendre une colonne par fichier (correspondant donc à la colonne A du fichier à importer) avec comme titre de colonne : le nom du fichier importé.

Est ce que cela vous parait faisable? si oui, auriez vous des départs de macro dont je pourrai m'inspirer?

Merci beaucoup,

Schlordy
 

Pierrot93

XLDnaute Barbatruc
Re : Macro complexe, import de plusieurs fichier sur une feuille

Re,

un essai, mais bon sans plus de détails ni de fichier, à toi d'adapter...

Code:
Option Explicit
Sub test()
Dim r As String, f As String
r = ThisWorkbook.Path & "\"
f = Dir(r & "*.txt")
Do While f <> ""
    With Cells(1, Columns.Count).End(xlToLeft)
        .Offset(0, IIf(.Column = 1 And .Value = "", 0, 1)).Value = f
    End With
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & r & f, Destination:=Cells(1, Columns.Count).End(xlToLeft).Offset(1, 0))
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 2 'commence l'importation à la 2ème ligne
        .TextFileParseType = xlDelimited
        .TextFileTabDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileColumnDataTypes = Array(1, 9)
        '.TextFileDecimalSeparator = ","
        .Refresh BackgroundQuery:=False
        .Delete
    End With
    f = Dir
Loop
End Sub
 

schlorfy

XLDnaute Nouveau
Re : Macro complexe, import de plusieurs fichier sur une feuille

Bonjour,

Merci beaucoup pour votre aide. La macro fonctionne, ca importe tout, mais les titres ne suivent pas... Je ne comprends pas tout à fait la macro que vous m'avez donnée.

J'ai sans doute pas été précis, je vais reformuler et peut etre faciliter : Est ce qu'on pourrait adapter votre macro pour obtenir un fichier destination avec 3 colonnes par fichier source (je pense que ca peut etre plus simple):

les fichiers sources sont comme ceci :

ax,ay,0=simple appui 1
0.135371396,-0.215323586,0,,,,
0.135404524,-0.217532225,0,,,,
0.134926026,-0.213082552,0,,,,
0.134628003,-0.214306593,0,,,,
0.134410331,-0.212531093,0,,,,
0.134459164,-0.214092612,0,,,,
0.133932958,-0.211390439,0,,,,
0.133442998,-0.212648606,0,,,,
0.133165158,-0.210618401,0,,,,
0.133472823,-0.211814077,0,,,,
0.133717476,-0.209962248,0,,,,
0.134084487,-0.21017122,0,,,,

Et j'aimerai un fichier destination comme ceci :

Sans titre.jpg


Merci beaucoup pour votre aide
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    36.2 KB · Affichages: 21
  • Sans titre.jpg
    Sans titre.jpg
    36.2 KB · Affichages: 21
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro complexe, import de plusieurs fichier sur une feuille

Re,

comme tu disais :
Code:
Le fichier destination devrait comprendre une colonne par fichier (correspondant donc à la colonne A du fichier à importer) avec comme titre de colonne : le nom du fichier importé.

c'est ce que le code proposé doit faire.... non...
 

schlorfy

XLDnaute Nouveau
Re : Macro complexe, import de plusieurs fichier sur une feuille

héhé oui en effet, mais au final, importer toutes les données parait aussi simple.

Etant donné que la cellule A1 source comprend les intitulés des 3 colonnes du fichier destination, et que les cellules dessous comprennent aussi 3 données.

Si c'est faisable ca m'aiderait beaucoup :)
 

schlorfy

XLDnaute Nouveau
Re : Macro complexe, import de plusieurs fichier sur une feuille

ha mince..désolé, je suis vraiment novice..

ce que j'aimerai faire c'est importer mes 500 fichiers qui sont identiquement formatés :

ax,ay,0=simple appui 1
0.135371396,-0.215323586,0,,,,
0.135404524,-0.217532225,0,,,,
0.134926026,-0.213082552,0,,,,
0.134628003,-0.214306593,0,,,,
0.134410331,-0.212531093,0,,,,
0.134459164,-0.214092612,0,,,,
0.133932958,-0.211390439,0,,,,
0.133442998,-0.212648606,0,,,,
0.133165158,-0.210618401,0,,,,
0.133472823,-0.211814077,0,,,,

dans un seul fichier, avec une forme comme ceci :

Sans titre.jpg


Est ce que je peux modifier facilement ton code pour obtenir ca ?

Encore merci, et encore désolé

Schlorfy
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    36.2 KB · Affichages: 20
  • Sans titre.jpg
    Sans titre.jpg
    36.2 KB · Affichages: 19

Pierrot93

XLDnaute Barbatruc
Re : Macro complexe, import de plusieurs fichier sur une feuille

Re,

modifie peut être comme suit:
Code:
Option Explicit
Sub ImportFichiersTxt()
Dim r As String, f As String
r = ThisWorkbook.Path & "\"
f = Dir(r & "*.txt")
Do While f <> ""
    With Cells(1, Columns.Count).End(xlToLeft)
        .Offset(0, IIf(.Column = 1 And .Value = "", 0, 3)).Value = f
    End With
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & r & f, Destination:=Cells(1, Columns.Count).End(xlToLeft).Offset(1, 0))
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTabDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileColumnDataTypes = Array(1, 9)
        '.TextFileDecimalSeparator = ","
        .Refresh BackgroundQuery:=False
        .Delete
    End With
    f = Dir
Loop
End Sub
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16