Autres Concatenation de plusieurs fichiers Excel dans un seul fichier Excel

Bastou72

XLDnaute Nouveau
Bonjour a tous,

Dans le cadre de mon travail, je dois concaténer tous les jours, des fichiers excel dans un même fichier excel

Ils ont tous les mêmes noms de colonne, mais la nombre de lignes varient selon les fichiers et le nombre de fichiers n'est jamais le même

Comment puis je faire pour les concaténer tous dans un seul et même fichier ?



le contenu de mes fichiers, sont par exemple :

Colonne 1 Colonne 2Colonne 3Colonne 4Colonne 5Colonne 6Colonne 7Colonne 8Colonne 9Colonne 10Colonne 11Colonne 12Colonne 13Colonne 14Colonne 15Colonne 16Colonne 17

Avec un nombre de lignes variable

Le nom des fichiers doivent ils être "normés" a l'identique ?

Merci de votre aide

ps : J'ai consulté, plusieurs tutos et forums, mais je suis vraiment trop nul !!
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Dans la série "Je recycle"
Ci-dessous une code que j'ai posté récemment remanié et testé avec succès sur le fichier non joint par le demandeur ;)
(j'ai testé en prenant la plage de la colonne A à la colonne R)
VB:
Sub Test_OK_II()
Dim FolderName$, MyPath, wkbSource As Workbook, f As Worksheet
Dim dF As Worksheet, A_Copier As Range, Derl&
Set dF = ThisWorkbook.Sheets(1): dF.[A1:R1] = "X"

With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Show
    On Error Resume Next
    FolderName = .SelectedItems(1)
    Err.Clear
    On Error GoTo 0
End With
MyPath = FolderName
If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
'Boucle sur l'ensemble des fichiers du répertoire
MyFile = Dir(MyPath & "*.xl?")

Do While Len(MyFile) > 0
Derl = dF.Cells(Rows.Count, 1).End(3).Row
Set wkbSource = Workbooks.Open(MyPath & MyFile)
  'Avec le classeur ouvert ou qu'on vient d'ouvrir...
Application.DisplayAlerts = False
With wkbSource
  On Error Resume Next
  Set f = .Sheets(1)
  Set A_Copier = f.Cells(1, 1).Resize(f.Cells(Rows.Count, 1).End(3).Row, 18)
    With A_Copier
        dF.Cells(Derl + 1, 1).Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
  .Close savechanges:=False
End With
  Set wkbSource = Nothing
  Set CopyRng = Nothing
  'Et on passe au suivant
  MyFile = Dir()
Loop
End Sub
 

Bastou72

XLDnaute Nouveau
Bonsoir le fil

Dans la série "Je recycle"
Ci-dessous une code que j'ai posté récemment remanié et testé avec succès sur le fichier non joint par le demandeur ;)
(j'ai testé en prenant la plage de la colonne A à la colonne R)
VB:
Sub Test_OK_II()
Dim FolderName$, MyPath, wkbSource As Workbook, f As Worksheet
Dim dF As Worksheet, A_Copier As Range, Derl&
Set dF = ThisWorkbook.Sheets(1): dF.[A1:R1] = "X"

With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .Show
    On Error Resume Next
    FolderName = .SelectedItems(1)
    Err.Clear
    On Error GoTo 0
End With
MyPath = FolderName
If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
'Boucle sur l'ensemble des fichiers du répertoire
MyFile = Dir(MyPath & "*.xl?")

Do While Len(MyFile) > 0
Derl = dF.Cells(Rows.Count, 1).End(3).Row
Set wkbSource = Workbooks.Open(MyPath & MyFile)
  'Avec le classeur ouvert ou qu'on vient d'ouvrir...
Application.DisplayAlerts = False
With wkbSource
  On Error Resume Next
  Set f = .Sheets(1)
  Set A_Copier = f.Cells(1, 1).Resize(f.Cells(Rows.Count, 1).End(3).Row, 18)
    With A_Copier
        dF.Cells(Derl + 1, 1).Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
  .Close savechanges:=False
End With
  Set wkbSource = Nothing
  Set CopyRng = Nothing
  'Et on passe au suivant
  MyFile = Dir()
Loop
End Sub


Oui mais je mets cela où ??
 

merinos

XLDnaute Accro
Salut le Forum,

je recycle aussi ...

facilement réalisable avec power query... don't c'est le but

déjà explique ici

En gros je crée une fonction qui peut reprendre les info d'un fichier
puis je prends la liste des fichiers a partir d'une localisation
j'y applique un filtre
j'applique la fonction sur les fichiers restants
et mes données sont en mémoire

avec PowerPivot je peux assembler mes données.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Bastou72, merinos

Il faut copier la macro que je t'ai proposée dans un module standard
Faire ALT+F11 puis Insertion/Module et là copier/coller la macro
Pour retourner dans Excel: ALT+F11

Pour le reste, un peu de lecture ;)

Si les difficultés persistent, utilisez ces mots-clés : comment exécuter une macro
dans le moteur de recherche de votre choix.
 

Bastou72

XLDnaute Nouveau
Bonjour, je n'y arrive décidément pas ...
je vous joins les fichIers que je dois concaténer, dans un seul

J'ai réussi une fois a concaténer, mais il a concaténer des fichiers qui n'avaient aucun rapport avec ceux ci
 

Pièces jointes

  • TITUS.xlsm
    19.3 KB · Affichages: 4
  • mouvements_des_assets_test1.xlsx
    32.6 KB · Affichages: 3
  • mouvements_des_assets_test2.xlsx
    32.6 KB · Affichages: 3

Staple1600

XLDnaute Barbatruc
Re

???
Si tu testes la macro du message#3, c'est toi qui choisis le répertoire avec ta souris quand la boite de dialoague s'affiche...
Ta dernière question laisserait entendre que tu ne l'as pas point testée?
Si c'est le cas, j'en suis fort marri, et cela risque de me couper l'appétit.
Pire, je pourrai sortir une binouse du frigo pour compenser la tristesse qui commence à envahir mon petit être ;)
 

Staple1600

XLDnaute Barbatruc
Re

Normalement tu dois selectionner le répertoire contennant les classeurs.
Là, tu cliques sur OK, et la macro traite tous les classeurs dont l'extension commence par par *.xl

Pour faire un test simple, créés un dossier dans lequel tu copies 3,4 ou 5 classeurs
(Par contre dans ce dossier, il n'y aura pas le classeur à partir du quel tu lances la macro)
Normalement, tu dois avoir dans la feuille 1 du classeur avec la macro, la recopie des données des 5 classeurs.
 

Bastou72

XLDnaute Nouveau
Effectivement, je faisais le test sur les fichiers dans le meme repertoire ;-(
Par contre, j'aimerais qu'il ne me remonte pas la première ligne, car elle est la même dans tous les fichiers, donc il ne faudrait qu'elle apparaisse qu'une fois....
Je sais je suis chiant ;-)
ça fera deux bières pour mon compte
 

Discussions similaires

Réponses
9
Affichages
188

Statistiques des forums

Discussions
312 322
Messages
2 087 283
Membres
103 507
dernier inscrit
tapis23