Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel

Advertisement

Réponse
 
LinkBack Outils de la discussion
Vieux 03/02/2010, 22h15   #1 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Rassembler plusieur fichier txt en un seul.

Bonjour, je vais avoir besoin de votre aide.(Une fois de plus)
J'ai plusieurs fichiers dans le même répertoire au format texte, le nom du fichier correspond à la date.ils sont en fichier joint.
Voici ma problèmatique:
Ils ont tous le même format, mais il n'ont pas tous le même nombre de ligne.
L'entete est toujours la même.Il faudrait pouvoir ouvrir tout les fichiers, les importer sur une feuille excel en utilisant les séparateurs ",".La première ligne ne me sert à rien,elle doit etre eliminé.J'ai besoin de récupere sur chaque ligne le nom du fichier(qui correspond à la date) plus toutes les données de chaque ligne.J'ai besoin de traiter ces informations dans un tableau croisés dynamique.(cela je sais faire...) Ce qui fait que toutes les infos doivent etre sur la même feuille.

Voici mon idée.
- Créer un fichier "Total.xls" avec une feuille nomée "Récap".
- lancer une macro
- Compter le monbre de fichier dans le répertoire.
- créer une boucle avec le nombre de fichier
- ouvrir le premier fichier
- créer une feuille avec le nom du fichier comme nom de feuille.
- importer les données vers ce fichier.
- effacer la première ligne, je n'en a pas besoin.
- compter le nombre de ligne
- copier sur la feuille récap, dans la première colonne le nom de la feuille ( donc la date) et dans les cellules de la ligne le reste des données et ainsi de suite.
- effacer la feuille lorsque toutes les données ont été transféré.
- recommencer jusqu'au dernier fichier.

c'est trés certainement perfectible comme procedure...
J'ai environ 800 fichiers à traiter, ce qui explique mon envie d'automatiser cela...

Merci
Roger
Fichiers attachés
Type de fichier : zip fichier.ZIP.zip (375 octets, 14 affichages)
julbute est déconnecté   Réponse avec citation
ANNONCES
Vieux 03/02/2010, 22h43   #2 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonsoir


Une solution à la mode du temps jadis

1) copie ceci dans un fichier texte et enregistre sous compil.bat
Code:
copy /A *.pro compil_pro.xls
start compil_pro.xls
2)Dans ce classeur qui vient de s'ouvrir, exécute cette macro

Code:
Sub Macro1()
Dim c As Range, r As Range
Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Comma:=True
Cells.Columns.AutoFit
Rows("1:1").Delete Shift:=xlUp
Columns("C:C").Delete Shift:=xlToLeft
Set r = ActiveSheet.UsedRange
For Each c In r
c.Value = Replace(c.Text, Chr(26), "")
Next
End Sub
__________________
Cordialement,
__________________
JM


Addict


Staple1600 est déconnecté   Réponse avec citation
Vieux 03/02/2010, 23h09   #3 (permalink)
XLDnaute Accro
 
Avatar de Hulk
 
Date d'inscription: janvier 2008
Localisation: Genève
Messages: 1 491
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Hello,

Petite paranthèse :

Staple, je n'arrive pas à éditer mes fichiers bat ou cmd, tu as une idée ?




EDIT : C'est bon

Merci.
__________________
Cdt, Hulk.


Dernière modification par Hulk ; 03/02/2010 à 23h11.
Hulk est déconnecté   Réponse avec citation
Vieux 03/02/2010, 23h20   #4 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonsoir Hulk



Clic-droit -> Modifier non ?

EDITION: houps j'avais pas vu ton EDIT

EDITION2: je viens de me rendre qu'avec ma solution, tous les fichiers seront dans la même feuille, ce qui n'est pas le but recherché.
__________________
Cordialement,
__________________
JM


Addict



Dernière modification par Staple1600 ; 03/02/2010 à 23h23.
Staple1600 est déconnecté   Réponse avec citation
Vieux 03/02/2010, 23h48   #5 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Re


Avec ce code de Ron de Bruin, adapté à ta problématique

ca devrait le faire

Tu lances la macro IMPORT_FICHIERS_PRO

Code:
Option Explicit

Private Declare Function SetCurrentDirectoryA Lib _
        "kernel32" (ByVal lpPathName As String) As Long

Public Function ChDirNet(szPath As String) As Boolean
'based on Rob Bovey's code
    Dim lReturn As Long
    lReturn = SetCurrentDirectoryA(szPath)
    ChDirNet = CBool(lReturn <> 0)
End Function
Code:
Sub IMPORT_FICHIERS_PRO()
'For Excel 2000 and higher
    Dim Fnum As Long, f As Worksheet, a As Workbook, NMF
    Dim QTable As QueryTable, SaveDriveDir$, ExistFolder As Boolean

    SaveDriveDir = CurDir

    ExistFolder = ChDirNet(Application.DefaultFilePath)
    If ExistFolder = False Then
        MsgBox "Error changing folder"
        Exit Sub
    End If

    NMF = Application.GetOpenFilename _
    (filefilter:="Fichiers PRO (*.pro), *.pro", MultiSelect:=True)

    If IsArray(NMF) Then
        On Error GoTo CleanUp
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
        End With
        'Add workbook with one sheet
        Set a = Workbooks.Add(xlWorksheet)
        'Loop through the array with txt files
        For Fnum = LBound(NMF) To UBound(NMF)
            'Add a new worksheet for the name of the txt file
            Set f = Worksheets.Add(After:=a.Sheets(a.Sheets.Count))
            On Error Resume Next
            f.Name = Split(NMF(Fnum), "\")(UBound(Split(NMF(Fnum), "\")))
            On Error GoTo 0
            With ActiveSheet.QueryTables.Add(Connection:= _
                        "TEXT;" & NMF(Fnum), Destination:=Range("A1"))
                .TextFilePlatform = xlWindows
                .TextFileStartRow = 2
                .TextFileParseType = xlDelimited
                'Set your Delimiter to true
                .TextFileTabDelimiter = False
                .TextFileSemicolonDelimiter = False
                .TextFileCommaDelimiter = True
                .TextFileSpaceDelimiter = False
                .Refresh BackgroundQuery:=False
            End With
        ActiveSheet.QueryTables(1).Delete
        Next Fnum
        'Delete the first sheet of a
        On Error Resume Next
        Application.DisplayAlerts = False
        a.Worksheets(1).Delete
        Application.DisplayAlerts = True
        On Error GoTo 0
CleanUp:
        ChDirNet SaveDriveDir
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End If
End Sub
__________________
Cordialement,
__________________
JM


Addict


Staple1600 est déconnecté   Réponse avec citation
Vieux 05/02/2010, 21h02   #6 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonjour, merci pour les infos.
Je vais essayer tout cela,je connaisais deja cela:
copy /A *.pro compil_pro.xls
Mais le problème c'est que je n'ai pas la date et que tout les fichiers sont complilés les un derrière les autres.Et cela ne convient pas pour le trie des infos..
Je regarde le reste, et je reviens vers vous.
Je vais etudier le code de staple...
J'ai un peu de mal à le comprendre de suite.
Merci
Roger
julbute est déconnecté   Réponse avec citation
Vieux 06/02/2010, 23h53   #7 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Parfait...
Tout les fichiers sont importés dans le même classeur.
Mais j'aimerai qu'il soient tous rassemblé sur une même feuille, en retrouvant dans la colonne A le nom de l'onglet(la date), sur chaque ligne.
C'est un peut trop demandé peut etre mais je ne sais pas trop comment faire.
à la suite de la macro,j'ai créé une nouvelle feuille "récap".

Sub IMPORT_FICHIERS_PRO()
'For Excel 2000 and higher
Dim Fnum As Long, f As Worksheet, a As Workbook, NMF
Dim QTable As QueryTable, SaveDriveDir$, ExistFolder As Boolean
Dim nb_onglets As Long ' Roger
Dim plage As Range ' Roger

SaveDriveDir = CurDir

ExistFolder = ChDirNet(Application.DefaultFilePath)
If ExistFolder = False Then
MsgBox "Error changing folder"
Exit Sub
End If

NMF = Application.GetOpenFilename _
(filefilter:="Fichiers PRO (*.pro), *.pro", MultiSelect:=True)

If IsArray(NMF) Then
On Error GoTo CleanUp
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Add workbook with one sheet
Set a = Workbooks.Add(xlWorksheet)
'Loop through the array with txt files
For Fnum = LBound(NMF) To UBound(NMF)
'Add a new worksheet for the name of the txt file
Set f = Worksheets.Add(After:=a.Sheets(a.Sheets.Count))
On Error Resume Next
f.Name = Split(NMF(Fnum), "\")(UBound(Split(NMF(Fnum), "\")))
On Error GoTo 0
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & NMF(Fnum), Destination:=Range("A1"))
.TextFilePlatform = xlWindows
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
'Set your Delimiter to true
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.Refresh BackgroundQuery:=False
End With
ActiveSheet.QueryTables(1).Delete
Next Fnum
'Delete the first sheet of a
On Error Resume Next
Application.DisplayAlerts = False
a.Worksheets(1).Delete
Application.DisplayAlerts = True
On Error GoTo 0
CleanUp:
ChDirNet SaveDriveDir
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End If

Sheets.Add.Name = "Récap" 'Roger
nb_onglets = Sheets.Count 'Roger
For n = 1 To nb_onglets 'Roger
ThisWorkbook.Worksheets (n) 'Roger
plage = Range("A1").CurrentRegion 'Roger
ThisWorkbook.Worksheets("recap").Activate 'Roger
Range("A1").End(xlDown).Row = plage 'Roger
Next n 'Roger


End Sub


Mais je n'arrive pas à tous rassembler dessus, il y a des erreurs.
Je ne suis vraiment pas trés fort en vba.Tous les instructions simples cela va .
Mais là cela me dépasse...
Merci de votre aide.
Roger
julbute est déconnecté   Réponse avec citation
Vieux 07/02/2010, 14h07   #8 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonjour julbute, le fil, le forum


Un autre approche (avec un mix d'une de mes réponses dans un autre fil )

Code:
Sub import_pro()
Dim i As Long, a As Workbook, donnees As Range
With Application.FileSearch
    .NewSearch
    .Filename = "*.pro"
    .LookIn = "C:\testoo\"
    .Execute
    For i = 1 To .FoundFiles.Count
                    Workbooks.OpenText .FoundFiles(i), _
                    Origin:=xlWindows, StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
                        ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False
                        Set a = ActiveWorkbook
                        Set donnees = a.Sheets(1).[A1].CurrentRegion
                        ThisWorkbook.Sheets("IMPORTATION").[A65536].End(xlUp)(2) = Split(.FoundFiles(i), "\")(UBound(Split(.FoundFiles(i), "\")))
                        donnees.Copy ThisWorkbook.Sheets("IMPORTATION").[A65536].End(xlUp)(2)
                        a.Close False
                        Set a = Nothing
                        Set donnees = Nothing
                        Application.CutCopyMode = False
        Next i
End With
ThisWorkbook.Worksheets("IMPORTATION").Rows(1).Delete
End Sub
__________________
Cordialement,
__________________
JM


Addict



Dernière modification par Staple1600 ; 07/02/2010 à 14h10.
Staple1600 est déconnecté   Réponse avec citation
Vieux 07/02/2010, 21h30   #9 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonjour à tous
merci Staple1600 de te pencher sur mon cas.
Cela fonctionne mais cela n'enregistre que le nom du fichier et les deux première données entre les virgules.Les reste n'est pas pris en compte.
Ce ne serait pas à cause de cette ligne?

Set donnees = a.Sheets(1).[A1].CurrentRegion

Etant donné que dans mon fichier source la troisième données et toujours vide, donc la cellule dans la colonne "C" est vide.


Merci
Roger
julbute est déconnecté   Réponse avec citation
Vieux 08/02/2010, 00h36   #10 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonsoir


J'ai testé avec les fichiers *.pro qui étaient dans ta pièce jointe.
Ces fichiers contenaient deux lignes.

Donc cela fonctionne avec ces fichiers de test

Essaie ainsi

Set donnees = a.Sheets(1).UsedRange
__________________
Cordialement,
__________________
JM


Addict



Dernière modification par Staple1600 ; 08/02/2010 à 00h40.
Staple1600 est déconnecté   Réponse avec citation
Vieux 08/02/2010, 22h12   #11 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Parfait, cela fonctionne trés bien.Je n'ai plus qu'a formater tout cela pour l'annalyser.
Merci beaucoup.
quelle est la différence entre :

Set donnees = a.Sheets(1).[A1].CurrentRegion

et

Set donnees = a.Sheets(1).UsedRange
julbute est déconnecté   Réponse avec citation
Vieux 08/02/2010, 22h17   #12 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonsoir


Issue de l'aide en ligne de VBA
Citation:
CurrentRegion, propriété
Renvoie un objet Range qui représente la zone en cours. Celle-ci est une plage limitée par toute combinaison de lignes et de colonnes vides. En lecture seule.
Remarque
Cette propriété est utile pour de nombreuses opérations qui étendent automatiquement la sélection de façon à y inclure toute la zone en cours, à l'exemple de la méthode AutoFormat.
Cette propriété ne peut pas être utilisée dans une feuille de calcul protégée.
je te laisse chercher pour UsedRange
(ALT+F11 -> F1)
__________________
Cordialement,
__________________
JM


Addict


Staple1600 est déconnecté   Réponse avec citation
Vieux 08/02/2010, 22h38   #13 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Ok c'était un peu facile de poser des questions sans faire de demarche de recherche.
Je te l'accorde... ;-)
Merci encore.
Roger
julbute est déconnecté   Réponse avec citation
Vieux 10/02/2010, 02h11   #14 (permalink)
XLDnaute Junior
 
Date d'inscription: juin 2009
Messages: 50
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonjour staple1600,
j'ai ajouté tout "mon traitement" à ta macro.
Elle est surement loin d'être parfaite.
Peux tu me donner ton avis et me corriger, si tu veux bien?
Car il y a trés certainement plus simple à faire.
Merci.
Roger
Fichiers attachés
Type de fichier : zip Concat pro.zip (16,5 Ko, 4 affichages)
julbute est déconnecté   Réponse avec citation
Vieux 10/02/2010, 02h48   #15 (permalink)
XLDnaute Barbatruc
 
Avatar de Staple1600
 
Date d'inscription: juin 2005
Localisation: RENNES || Excel 2000-2010 BETA
Messages: 8 306
Par défaut Re : Rassembler plusieur fichier txt en un seul.

Bonsoir


Une première modif (pour la mise en forme des dates)

Code:
Sub import_pro2()
Dim i As Long, a As Workbook, donnees As Range
Application.ScreenUpdating = False
With Application.FileSearch
    .NewSearch
    .Filename = "*.pro"
    .LookIn = ThisWorkbook.Path
    .Execute
    For i = 1 To .FoundFiles.Count
        Workbooks.OpenText .FoundFiles(i), _
        Origin:=xlWindows, StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False
        Set a = ActiveWorkbook
        Set donnees = a.Sheets(1).[A1].UsedRange
        ThisWorkbook.Sheets("IMPORTATION").[A65536].End(xlUp)(2) = Split(.FoundFiles(i), "\")(UBound(Split(.FoundFiles(i), "\")))
        donnees.Copy ThisWorkbook.Sheets("IMPORTATION").[A65536].End(xlUp)(2)
        a.Close False
        Set a = Nothing
        Set donnees = Nothing
        Application.CutCopyMode = False
    Next i
End With
With ThisWorkbook.Worksheets("IMPORTATION")
.Range([A1], [A65536].End(xlUp)).TextToColumns Range("A1"), xlDelimited, xlDoubleQuote, , , , , , True, ".", FieldInfo:=Array(Array(1, 5), Array(2, 9))
.Rows(1).Delete
End With
Application.ScreenUpdating = True
End Sub
__________________
Cordialement,
__________________
JM


Addict


Staple1600 est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Macro : Rassembler plusieurs fichiers Excel 2007 dans un autre fichier roidurif Forum spécial EXCEL 2007 8 09/10/2009 19h29
Macro : Rassembler plusieurs fichiers Excel 2007 dans un autre fichier roidurif Forum Excel 3 28/09/2009 11h59
Plusieur liste déroulante pour un seul prix antwane Forum Excel 10 08/01/2009 01h03
Transfert feuille de plusieurs fichier vers 1 seul fichier VBA_DEAD Forum Excel Downloads - Archives 2 04/12/2004 20h26
une seul commande pour plusieur macro denis Forum Excel Downloads - Archives 1 11/02/2003 14h33


Fuseau horaire GMT +2. Il est actuellement 22h19.


(C) 2006 Excel Downloads