Rechercher : dans
Par :

[EXCEL]Concatener plusieurs fichiers

Dernière réponse le 8 oct 2009 à 22:20:00 Paulo69, le 4 nov 2006 à 18:55:30 
 Signaler ce message aux modérateurs

Bonjour,
J'ai dans une directory plusieurs fichiers Excel avec un format identique (nb colonne, nom colonne, ...).

Comment faire pour concatener tous ces fichiers dans un seul ?

Merci pour votre aide

Paul

Meilleures réponses pour « [EXCEL]Concatener plusieurs fichiers » dans :
Transformer un fichier Microsoft Excel (.xls) en PDF VoirTransformer en fichier PDF un fichier Microsoft Excel (.xls) Rien de plus simple ! Ouvrez votre fichier *.xls avec OpenOffice.org Réglez éventuellement la mise en page par le menu Format / Page... Dès lors, 2 solutions pour transformer en...
Excel - Convertir fichier(s) CSV / XLS VoirComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...

1

JvDo, le 5 nov 2006 à 22:49:24

Bonsoir,

marche à suivre :

1) tu décris ton algorithme
ça te forcera à préciser ce que tu veux faire et comment tu veux le faire

2) tu enregistres la macro unitaire via l'enregistreur de macro d'excel
tu auras ainsi 80% de ton code

3) tu adaptes ce code pour qu'il gère les boucles et les variables.

si tu coinces, tu cries

A+

Répondre à JvDo

2

searancher, le 10 jan 2008 à 13:51:41

Bonjour,
pourquoi faire simple quand on peut faire complique, ou l'inverse!
Le plus simple,
1 - exporter les fichiers xls dans fichiers textes avec sepateur tabulation par exemple
2 - lancer le dos (y compris celui de windows XP)
3 - faire "copy "fichier 1"+"fichier 2" "fichier globale" "
4 - le reimporter sous excel...
et c'est tout.

exemple

fichier1.txt
fichier2.txt
fichierglobale.txt

copy fichier1+fichier2 fichierglobale.txt

cordialement

Répondre à searancher

3

Fxbrg, le 10 jan 2008 à 14:00:44

Searancher, j'espère qu'il n'y pas plusieurs feuilles dans les fichiers Excel... :-)

Comme dit JvDo, il faut savoir ce que tu veux faire...

Tu veux "juste" copier les colonnes du fichier2 à coté des colonnes du fichier1, ou importer les données du fichier2 et les ajouter en dessous (par exemple) des données du fichier1, ou ajouter les feuilles du fichier2 au classeur fichier1... Bref, plus de précisions s'imposent :-)

Répondre à Fxbrg

4

simipi, le 7 fév 2008 à 11:11:07

Ma foi, je pense qu'il a été assez clair, du moins pour moi. Il a plusieurs fichiers excels ayant la meme structure et veut donc ne plus en faire qu'un seul. j'ai tout faux ?

Répondre à simipi

5

ttjeremy, le 14 fév 2008 à 15:34:57

Bonjour, j'ai un soucis similaire mais encore plus fou.

Voila, j'ai Soixante fichiers excel de forme identique avec 5 à 6 onglets toujours de forme identique. (Ne demandez pas pourquoi c'est pour le TAF)

Ces fichiers ne se trouvent pas forcément dans le même dossier et ne sont pas en nombre identiques

Exemple:

DossierA : Dossier1,dossier2,dossier3,dossier4.....

Dossier1 : Exel1
Dossier2 : Excel2,Excel3
Dossier3 : Excel4,Excel5,Excel6
Dossier4 : Excel7,Excel8

Connaissez-vous une macro capable de tout me copier dans un Seul fichier Excel (Tout les fichiers les uns en dessous des autres) en indiquant le fichier dont l'info provient ainsi que l'onglet d'origine)

That is your challenge !!! Good Luck

Répondre à ttjeremy

6

tyty, le 12 déc 2008 à 19:11:29

Bonsoir ;

Le problème est-il résolu ou est-il tjs d'actualité, vu la date de demande?

Répondre à tyty

7

tyty, le 12 déc 2008 à 19:34:18
  • +1

Bonsoir ;

Résolu ou pas, ma question est bête, voici un programme qui permet de sélectionner 1 ou +sieurs fichier(s) dans n'importe quel(s) répertoire(s) d'un disque local ou réseau. Les fichiers excel doivent avoir la même structure et comporter la première ligne en commentaire sur chaque fichier excel(sinon, adapter la suppressionde ces lignes).

Ce VB concatène chacun des fichiers excel sélectionnés jusqu'à l'abandon et effectue une destruction de cellules non utiles puis constitue un fichier croisé dynamique en automatique. Il demande peut-être aussi une variable, je ne sais plus.

Bonne analyse. Supprimer les lignes inutiles. Si besoin, je peux envoyer le fichier excel en exemple.

--------------------------------VBA-------------------------­-----------------------------------:

'La variable est de type Variant car elle peut prendre les valeurs:
'Booleenne: (Vrai/Faux) quand l'utilisateur ne sélectionne rien, ou annule l'opération.
'String: pour renvoyer le nom du fichier sélectionné.
Dim file As Variant
Dim fileTemplate As Variant
Dim WorkBookData As Workbook
Dim nbFichiers As Variant
Dim L1 As Variant
Dim LData As Variant
Dim CL As Range
Dim Navire As Variant
Dim Nbl As Integer
Dim Nbf As Integer
Dim f As Integer
Dim nom As String

Private Sub RazMiseEnFormeDatas()
Sheets("Feuil1").Activate
Range("A1").Select
Selection.End(xlDown).Select
Selection.End(xlToRight).Select
Range(Selection, Selection.End(xlToLeft)).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.ClearContents
Selection.Interior.ColorIndex = xlNone
Selection.ClearComments
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlNone
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlNone
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlNone
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlNone
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlNone
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlNone
End With
Selection.Rows.AutoFit
Selection.Columns.AutoFit
End Sub

Private Sub SelectionFichierSimple()

'Affiche la boîte de dialogue "Ouvrir"
file = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
Nbf = WorksheetFunction.CountA(Columns("a:a"))
nom = file
MsgBox ("nom " & Nbf)
End Sub
Private Sub CopieDatasToTemplate()
' Ouverture du fichier de donnees
Workbooks.Open file
Set WorkBookData = Application.Workbooks.Open(file)
WorkBookData.Sheets(1).Select
Range("A1").Select
' MsgBox ("nombre lignes " & nom)
NbData = 0
NbData = WorksheetFunction.CountA(Columns("a:a"))
Range("A1:O" & NbData).Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, Selection.End(xlToLeft)).Select
Selection.Copy
Windows(fileTemplate).Activate
Range("" & L1).Select
ActiveSheet.Paste
Range("" & L1).Select
fichier:
If f < Nbf Then
f = f + 1
Range("S" & f) = nom
GoTo fichier
End If
Application.CutCopyMode = False
WorkBookData.Close
End Sub
Sub Croise()
'
' tyty Macro
' Macro enregistrée le 07/11/2008
'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R" & Nbl & "C4").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique4", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True

ActiveSheet.PivotTables("Tableau croisé dynamique4").AddFields RowFields:= _
Array("Stade_Montage", "Référence"), ColumnFields:=Array("Bloc", "Panneau")
ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("Référence"). _
Orientation = xlDataField
End Sub
Sub ImportData()
Nb = 0
Line = 1
f = 1
fileTemplate = ThisWorkbook.name
RazMiseEnFormeDatas
suite:
Nf = Nf + 1
SelectionFichierSimple
If file = "Faux" Then
Nbl = WorksheetFunction.CountA(Columns("a:a"))
Columns("A:B").Select
Selection.Delete Shift:=xlToLeft
Columns("E:O").Select
Selection.Delete Shift:=xlToLeft
' Sheets("Feuil1").Activate
Recommence:
Line = Line + 1
Col = Range("A" & Line)
If Col = "Panneau" Then
Rows(Line).Delete
End If
If Line < Nbl Then
GoTo Recommence
Else
Nbl = WorksheetFunction.CountA(Columns("a:a"))
Navire = InputBox("Code du navire")
Line = 1
Range("E1") = "Navire"
nav:
If Line < Nbl Then
Line = Line + 1
Range("E" & Line) = Navire
GoTo nav
End If

Range("A1:G" & Nbl).Select
Set mafeuille = ActiveWorkbook.ActiveSheet
mafeuille.Copy
ActiveWorkbook.SaveAs Filename:=mafeuille.name, FileFormat:=xlText, CreateBackup:=False
mafeuille.Activate
transf
End If
Else
Nb = WorksheetFunction.CountA(Columns("a:a"))
Nb = Nb + 1
If Nb = 3 Then
Nb = 1
End If
L1 = ("A" & Nb)
'MsgBox ("L1 " & L1)
CopieDatasToTemplate
GoTo suite
End If
End Sub

Répondre à tyty

8

tyty, le 12 déc 2008 à 19:44:49

Je me répond à moi-même ;

Il faut mettre en commentaire transf, car il sert à envoyer via outlook le résultat sous forme Ascii de l'export de la concaténation des données.

Il faut aussi se positionner par défault sur la sheetZ, le résultat sera disposé sur la sheet1.

C'est fini.

Merci de votre attention.

Répondre à tyty

9

Fluff, le 16 déc 2008 à 15:38:09

Tyty, pourrais-tu m'envoyer ton fichier Excel. Je ne connais pas bien encore VBA et je vais en avoir besoin pour faire le même type de traitement de fichiers. Typiquement je dois concaténer plus de 1000 fichiers en un seul (fichiers PRN comportant une vingtaine de lignes de commentaires utiles suivies de colonnes comprenant des données). Le but étant ensuite de traiter ce fichier avec Mathcad pour faire de l'analyse de données. Il faudrait que ce script VBA aille chercher les fichiers tout seul dans un répertoire. Les commentaires présents en en-tête de chacun des fichiers originaux devraient me permettre ensuite dans Mathcad de traiter les bonnes données entre elles.
Merci pour ton aide.

Répondre à Fluff

10

tyty, le 17 déc 2008 à 18:48:57

Pas de problème, je l'ai simplifier.

Répondre à tyty

11

tyty, le 17 déc 2008 à 18:52:23

Pas de problème, je l'ai simplifié, il me faut ton adresse mail.

Répondre à tyty

13

mimivba, le 17 déc 2008 à 21:54:59

Tyty voici mon mail : mimi_7690@hotmail.fr car je suis très très intéréssé par ton programme c'est ce que je cherche depuis un petit moment ! Merci d'avance

Répondre à mimivba

14

smix13, le 22 jan 2009 à 10:38:34

Bonjour, tu m'envoyer ton fichier excel stp.
merci

Répondre à smix13

17

fdemange, le 18 jun 2009 à 18:00:52

Pourrais je bénéficier du fichier permettant de concaténer plusieurs fichiers excel en un seul ?
Merci

Répondre à fdemange

15

tyty44, le 28 jan 2009 à 19:05:44

Pas de problème, envoi moi ton adresse mail

Répondre à tyty44

16

ShaM, le 12 mar 2009 à 05:36:41

Bonjour,

Je t ecris par rapport au fichier excel que tu as cree pour concatener plusieurs fichiers excel de meme format en un seul. serait-il possible de l envoyer a cette adresse : sham_hieu@msn.com

Répondre à ShaM

18

phoenyx, le 22 jun 2009 à 15:40:06

Je serais vraiment contente d'avoir ce fichier aussi, ça me dépannerait. merci beaucoup ! phoenyx2006@free.fr

Répondre à phoenyx

19

Kelte, le 21 jui 2009 à 13:48:13

J'ai opté pour la solution de searancher (janvier 2008 plus haut) sous DOS. Rien à modifer. Effectivement cela marche impec, 51 fichiers concaténés en quelques secondes ! total pres de 30 meg!
Pourquoi faire compliqué
Surprenant que Microsoft ne nous ait pas prévu une fonction sous excell.

Répondre à Kelte

20

x_mania, le 10 aoû 2009 à 11:40:55

Bonjour

Serait il possible d avoir le fichier qui permet de tout concaténer sous Dos, Cela me sera d une grande utilité
Merci d avance

je laisse mon mail : x_mania@live.fr

Répondre à x_mania

21

el_aaroubi, le 10 aoû 2009 à 13:39:30

Bonjour tlm,
En cherchant sur google, j'ai trouvé ça: http://www.fobec.com/protec/logiciels2/encadre.php3?id_log=176&cat=VBureautique

j'espère que ça vous aidera.
Pour moi ça était très pratique.

Répondre à el_aaroubi

22

 Papé, le 8 oct 2009 à 22:20:00

Salut,

il y a un truc que je viens de trouver, bien pratique...
Clic droit sur un des onglets du fichier excel à copier (après l'avoir copié sous un autre nom pour être sur de ne pas paumer les données), utiliser la fonction sélectionner toutes les feuilles, puis la fonction copier ou déplacer vers un autre fichier, sélectionner le fichier où on veut envoyer les données, l'emplacement à l'intérieur de ce fichier, et le tour est joué...
Attention, les feuilles disparaissent du fichier source, Excel ne copie pas les feuilles, il les déplace, d'où l'interêt de copier les données avant toute manipulation...

Voilà voilà, bien le bonjour

Répondre à Papé