Regrouper plusieurs fichiers sur une feuille

Y compris Power BI, Power Query et toute autre question en lien avec Excel
F
Francois22
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 6 avril 2011
Version d'Excel : 2010 FR

Message par Francois22 » 19 décembre 2016, 11:58

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
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'793
Appréciations reçues : 114
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 19 décembre 2016, 13:42

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!
F
Francois22
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 6 avril 2011
Version d'Excel : 2010 FR

Message par Francois22 » 19 décembre 2016, 14:28

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.
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'793
Appréciations reçues : 114
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 19 décembre 2016, 14:54

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?
F
Francois22
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 6 avril 2011
Version d'Excel : 2010 FR

Message par Francois22 » 19 décembre 2016, 16:51

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.
Consolidation.zip
(58.16 Kio) Téléchargé 26 fois
U
U. Milité
Membre impliqué
Membre impliqué
Messages : 1'793
Appréciations reçues : 114
Inscrit le : 30 novembre 2016
Version d'Excel : Office 365

Message par U. Milité » 19 décembre 2016, 20:02

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).
F
Francois22
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 6 avril 2011
Version d'Excel : 2010 FR

Message par Francois22 » 22 décembre 2016, 18:25

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 :-)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message