Compiler des données en provenance de plusieurs fichiers xls dans un seul fichier

titia

XLDnaute Nouveau
Bonjour,

j'aimerais effectuer une action qui parait pourtant très simple et dont je n'arrive pas à trouver l'astuce :
compiler des données qui proviennent de différents fichiers excel (environ 10 fichiers tous avec le même squelette) dans un seul et même fichier.
Pour résumé, je reçois de plusieurs agences, des fichiers identiques dans lesquels ces agences m'exprime leurs besoins sur des produits.
Je dois compiler ces données pour ensuite les analyser dans leur globalité tout en conservant le demandeur.
En gros actuellement j'enchaine les copier coller ... ce qui me fait perdre un temps fou !

je ne suis vraiment pas très forte en ce qui concerne la construction de macro !
Pouvez-vous m'aidez SVP ?

Pour information, je connais la notion de "consolider" dans excel 2010 mais celle-ci m'aditionne les données, moi je veux les voir toutes apparaître dans le fichier pour ensuite éventuellement créer un sous total.

merci d'avance pour votre aide.
 

titia

XLDnaute Nouveau
Re : Compiler des données en provenance de plusieurs fichiers xls dans un seul fichie

voici un fichier joint qui pourra peut être mieux vous éclairer .. sachant que les données viendront de plusieurs FICHIERS et non feuilles dans un même classeur comme ci joint.

Mderci d'avance
 

Pièces jointes

  • test pr forum xls.xlsx
    14.6 KB · Affichages: 783

Modeste

XLDnaute Barbatruc
Re : Compiler des données en provenance de plusieurs fichiers xls dans un seul fichie

Bonjour titia, le forum,

En annexe, ton fichier avec la seule feuille Compil, ainsi qu'une petite macro basique: pour autant que tous tes fichiers d'agences aient bien la même structure (des données de A3 à AAx), que ces fichiers soient tous enregistrés dans le même répertoire que le présent fichier, au format ".xlsx" et qu'il n'y ait pas dans ce répertoire, d'autres fichiers avec la même extension, mais qui ne devraient pas être "compilés".

La macro reprend toutes les infos des fichiers d'agences (si j'ai bien compris! :confused:) et ajoute, en première colonne, le nom du fichier d'où les infos sont extraites!

Jette un oeil, fais des tests, ... et dis-nous ensuite ce qu'il en est.
 

Pièces jointes

  • Compil.xlsm
    17 KB · Affichages: 1 245
  • Compil.xlsm
    17 KB · Affichages: 1 167
  • Compil.xlsm
    17 KB · Affichages: 1 115

titia

XLDnaute Nouveau
Re : Compiler des données en provenance de plusieurs fichiers xls dans un seul fichie

Bonjour Modeste,

Tout d'abord merci pour ton aide, cette macro est géniale ! c'est exactement ce qu'il me faut !!
Par contre si je ne veux pas que la colonne A récupère le titre du fichier, comment faire ?

En effet, à l'avenir les fichiers à compiler auront une colonne "agence" en A dans laquelle les agences y inscriveront leur "nom" ; de ce fait je n'aurais vraiment qu'à compiler les données.

Merci infiniment pour ton aide
 

Modeste

XLDnaute Barbatruc
Re : Compiler des données en provenance de plusieurs fichiers xls dans un seul fichie

Bonjour titia,

Le code proposé n'est jamais qu'une compilation (aussi!) de tout ce que j'ai pu trouver à droite et à gauche sur ce forum. Tu noteras que j'ai qualifié la macro de "basique" (elle copie, sans vérifier quoi que ce soit!) ... En fonction de ta situation réelle, il y aura peut-être d'autres adaptations à faire.

Pour ta question, il me semble qu'en supprimant la colonne "Agence" (que j'avais ajoutée), puis en modifiant les deux choses suivantes dans le code, ça devrait être bon:
- supprimer (ou mettre en commentaire, en la faisant précéder d'une apostrophe) la ligne 11:
Compil.Sheets(1).Range("A65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 1).Value = monFichier

- remplacer le 'B' en rouge ci-dessous, par un 'A' à la ligne 13:
Compil.Sheets(1).Range("B65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 27)
 

titia

XLDnaute Nouveau
Re : Compiler des données en provenance de plusieurs fichiers xls dans un seul fichie

Bonjour Modeste,

Super je te remercie.
Le process qui utilise cette macro doit être mis en place le 15/02 donc dès le 15/02 j'utiliserai cette macro de manière régulière.
Je te tiens au courant et je risque de revenir vers toi peut être.

merci beaucoup pour ton aide !
 

titia

XLDnaute Nouveau
Re : Compiler des données en provenance de plusieurs fichiers xls dans un seul fichie

Bonjour Modeste,

Comme convenu je reviens vers toi !
ça y est j'ai reçu le fichier officiel que je vais devoir compiler !

j'ai essayé de modifier ton code en conséquence des quelques changements mais je vois que quelques anomalies remontent.
En effet, l'ensemble des données du classeur 3 par exemple ne remontent pas.
De plus, la colonne A "agence" sera déjà remplie par les agences, j'aimerais donc que celle-ci n'aille pas récuperer le nom du classeur mais remonte à l'identique les fichiers reçus.

Est-ce possible ?
Je te mets en pièce jointe mon test.

Merci d'avance pour ton aide précieuse !

PS le fichier contenant le code ne passe pas, je t'envoie donc les trois classeurs test.
Avec ton dans lequel j'ai modifié les les plages de données, quand je lance la macro cela me décale tout d'une ligne et je n'obtiens pas la totalité des lignes de mon classeur 3

Merci beaucoup !
 

Pièces jointes

  • Classeur3.xlsx
    390 KB · Affichages: 228
  • Classeur3.xlsx
    390 KB · Affichages: 211
  • Classeur3.xlsx
    390 KB · Affichages: 213
  • Classeur2.xlsx
    390 KB · Affichages: 149
  • Classeur1.xlsx
    390.2 KB · Affichages: 163
  • Classeur2.xlsx
    390 KB · Affichages: 159
  • Classeur1.xlsx
    390.2 KB · Affichages: 185
  • Classeur2.xlsx
    390 KB · Affichages: 160
  • Classeur1.xlsx
    390.2 KB · Affichages: 208

Excel_Dynamo

XLDnaute Nouveau
Bonjour,


auriez vous idée réutilisé en réutilisant le même code la possibilité d'avoir une feuille (onglet) nommé par exemple Data et que cela face un copier valeur ?

_______________________________________________________________________
Sub Compilation()
Application.ScreenUpdating = False

Set Compil = ThisWorkbook
Compil.Sheets(1).Range("A3:AA50000").Clear
chemin = Compil.Path & "\"
monFichier = Dir(chemin & "*.xlsx")

Do While monFichier <> ""
If monFichier <> Compil.Name Then

Set f = Workbooks.Open(chemin & monFichier)
derligne = f.Sheets(1).Range("A65000").End(xlUp).Row
'******************************************************************
'Compil.Sheets(1).Range("A65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 1).Value = monFichier 'Récupération du nom du fichier
'******************************************************************
f.Sheets(1).Range("A3:AA" & derligne).Copy _
Compil.Sheets(1).Range("B65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 27)
f.Close
End If

monFichier = Dir

Loop
Application.ScreenUpdating = True

End Sub
_______________________________________________________________________

Je n'arrive pas a y inclure le code ci dessous pour avoir un onglet "Data" :

Worksheets("Data").Activate

de même pour la copie en valeur

.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Merci
 
Dernière édition:

Excel_Dynamo

XLDnaute Nouveau
j'ai résolut mon problème :

1- Pour un onglet nomé ici "Data" : => on replace :
derligne = f.Sheets(1).Range("A65000").End(xlUp).Row
par
derligne = f.Sheets("Data").Range("A65000").End(xlUp).Row


2- Pour faire un copier valeur : => on replace :
Compil.Sheets(1).Range("A65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 27)
Par
Compil.Sheets(2).Range("A65000").End(xlUp).Offset(1, 0).Resize(derligne - 2, 27).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 644
Messages
2 111 530
Membres
111 189
dernier inscrit
Laurent.