Regrouper plusieurs fichiers sur une feuille

Bonjour le forum,

Je ne retrouve plus une macro qu'on m'avait donnée ici, ni sur mon ordi, ni sur le forum. Le problème est le suivant: Je dois consolider les fichiers ventes de plusieurs collaborateurs de ma boite en un fichier maître pour l'analyser.

Feuil1/Corinne.xls

Feuil1/Vincent.xls

...

sont tous à importer à la suite les uns des autres dans Feuil1/Ventes.xls. Tous les fichiers ont la même structure, tous n'ont qu'une seule feuille, tous sont dans le même répertoire, mais les noms peuvent changer en fonction des embauches et/ou départs.

Quelqu'un-e aurait la solution?.

Merci

François

Bonjour,

Si tous les fichiers ont la même structure, il faudrait mettre au moins un exemple pour illustrer cette structure (combien de colonnes, par exemple, ...)

Il vaut mieux aussi préciser le volume des données: on ne s'y prendra sans doute pas de la même manière avec une dizaine de fichiers de 50 lignes ou avec 50 classeurs de 10.000 lignes!

Bonjour,

Il s'agit d'une dizaine de classeur d'environ 1'000 lignes chacun, pour une dizaine de colonnes avec des entêtes standards du type Produit / Prix de vente / Nb d'unités vendues / date / secteur, etc. La consolidation sera effectuée tous les jours, d'où l'idée de l'automatiser.

Amicalement.

Merci pour ces premières précisions ... Et qu'en est-il de

U. Milité a écrit :

Si tous les fichiers ont la même structure, il faudrait mettre au moins un exemple pour illustrer cette structure (combien de colonnes, par exemple, ...)

... parce que "une dizaine de colonnes" ça manque un peu de précision (et ça ne dit pas si les en-têtes sont en ligne 1 ou 5, s'il y a une colonne -et laquelle- qui pourra servir à déterminer la longueur de chaque tableau, etc...)

En plus, si on veut tester le code qu'on propose, il faut qu'on fasse nous-même le travail de constituer un jeu de données test?

Non, je peux fournir les données de test

L'exemple ci-joint convient-il?

Il faudrait pouvoir déterminer la longueur de chaque tableau (rangée 1 à rangée n) et ajouter les données à la fin du tableau consolidé que j'effacerai à chaque fois.

Merci.

29consolidation.zip (58.16 Ko)
Francois22 a écrit :

L'exemple ci-joint convient-il?

Pour autant qu'il soit représentatif de la situation réelle, ça devrait aller

Dans le classeur nommé "consolidé" (qui devra donc devenir un fichier avec une extension .xlsm), insérer un module standard et y coller les lignes suivantes:

Sub consolider()
chemin = ThisWorkbook.Path
Application.ScreenUpdating = False
ThisWorkbook.Sheets(1).[A2].Resize(ThisWorkbook.Sheets(1).[A2].CurrentRegion.Rows.Count, 11).ClearContents
fich = Dir(chemin & "\" & "*.xlsx")
Do While fich <> ""
    lig = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
    Workbooks.Open chemin & "\" & fich
    ActiveWorkbook.Sheets(1).[A2].Resize(ActiveWorkbook.Sheets(1).[A2].CurrentRegion.Rows.Count, 11).Copy ThisWorkbook.Sheets(1).Cells(lig, 1)
    ActiveWorkbook.Close savechanges:=False
    fich = Dir
Loop
Application.ScreenUpdating = True
End Sub

Attention: les fichiers à consolider doivent être enregistrés dans le même répertoire que le fichier de consolidation. Il doivent être d'extension .xlsx et le même répertoire ne peut contenir d'autres fichiers que ceux évoqués supra.

À tester d'abord sur des fichiers exemples ... Ensuite seulement sur des volumes plus conséquents. Si des problèmes de lenteur devaient survenir, on peut s'y prendre de manière un peu différente (utilisation de tableaux en mémoire).

Merci pour ton support. Je suis déjà en vacances (d'où ma réponse tardive, désolé) et je tâcherai de tester ça en live la semaine du 9.

Meilleurs voeux pour les fêtes

Rechercher des sujets similaires à "regrouper fichiers feuille"