Macro Compilation Fichiers

WaxistSelecta

XLDnaute Junior
Bonjour à tous,

je suis à la recherche d'un code (ou d'assistance pour l'écrire) afin de pouvoir compiler un certains nombre de fichier dans un unique classeur cible.

J'ai un dossier 'Requêtes Data' qui contient X fichiers excel contenant chacun un onglet unique. Ces fichiers sont en fait des extractions de tables d'un SI.

Je voudrais pouvoir compiler ces fichiers dans un classeur cible, contenant les différents fichiers sources, organisés en onglet (un onglet par fichier sources). En gros il suffirait de faire un Copier / Coller entre le fichier source et le fichier cible, simplement vu le nombre de fichiers à compiler c'est assez long à faire à la mano.

Je pense qu'une boucle devrait faire l'affaire.

Merci d'avance pour vos réponses!

Waxist
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Macro Compilation Fichiers

Bonjour WaxistSelecta
Salut TotoTiti2008 ;)

Sinon de manière "simple"
Code:
Sub CompileFic()
  Dim FSO  'As Scripting.FileSystemObject
  Dim SourceFolder  'As Scripting.Folder
  Dim FileItem  'As Scripting.File
  Set FSO = CreateObject("Scripting.FileSystemObject")
  ' Indiquer ici le bon répertoire
  Set SourceFolder = FSO.GetFolder("C:\")
  On Error Resume Next
  ' Pour chaque fichier trouvé dans le dossier
  For Each FileItem In SourceFolder.Files
    Workbooks.Open FileItem.Name
    ActiveWorkbook.Sheets(1).Move after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  Next FileItem
  On Error GoTo 0
  ' Effacer les variables objet
  Set FileItem = Nothing
  Set SourceFolder = Nothing
  Set FSO = Nothing
End Sub

A+
 
Dernière modification par un modérateur:

tototiti2008

XLDnaute Barbatruc
Re : Macro Compilation Fichiers

Bonjour Bruno,
Re,

Bon, Bruno a répondu ;)
J'ai encore appris quelque chose :
je ne savais pas que si on déplaçait l'unique feuille d'un classeur1 vers un autre classeur2, Excel fermait le classeur1 automatiquement sans l'enregistrer :)
 
C

Compte Supprimé 979

Guest
Re : Macro Compilation Fichiers

Re,

je ne savais pas que si on déplaçait l'unique feuille d'un classeur1 vers un autre classeur2, Excel fermait le classeur1 automatiquement sans l'enregistrer
Et bien OUI ;):p:D
Tu es comme moi ... j'en apprend tous les jours
mouarf2.gif


A+
 
Dernière modification par un modérateur:

WaxistSelecta

XLDnaute Junior
Re : Macro Compilation Fichiers

Re bonjour !

Je viens de faire un premier test. Alors ca fonctionne sur le principe, le truc c'est que j'ai une 20aine de fichiers et le code sembre s'arrêter au bout de 2 fichiers...Sans messages d'erreur côté VBA...

Si vous avec une idée, elle est la bienvenue.

Merci d'avance!
 

WaxistSelecta

XLDnaute Junior
Re : Macro Compilation Fichiers

J'introduis maintenant une difficulté supplémentaire:

j'aurais besoin de nommer chacun des onglets introduits par la compilation par le nom du fichiers source.

Exemple:

fichier source : Fichier Source.xls
fichier cible : je veux remplacer le nom générique de l'onglet crée par "Fichier Source"

Est-ce que cela vous parle?

Merci d'avance pour votre aide, je ne suis pas vraiment calé en VBA
 

tototiti2008

XLDnaute Barbatruc
Re : Macro Compilation Fichiers

Re,

peut-être comme ça :

Code:
  For Each FileItem In SourceFolder.Files
    Workbooks.Open FileItem.Name
    ActiveWorkbook.Sheets(1).Move after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
[COLOR=red]Thisworkbook.activesheet.name = replace(FileItem.Name,".xls","")[/COLOR]
  Next FileItem
 

WaxistSelecta

XLDnaute Junior
Re : Macro Compilation Fichiers

Re Tototiti,

J'ai réussi à exécuter la macro avec surccès une fois mais lorsque j'ai essayé de la retester, elle ne réagit pas.

Ta proposition pour le nom est à apriori OK mais je ne peux pas la tester en masse car je n'arrive plus à exécuter la macro. Ci dessous mon code:

Sub CompileFic()

Dim FSO 'As Scripting.FileSystemObject
Dim SourceFolder 'As Scripting.Folder
Dim FileItem 'As Scripting.File
Set FSO = CreateObject("Scripting.FileSystemObject")
' Indiquer ici le bon répertoire
Set SourceFolder = FSO.GetFolder("C:\Data Requêtes")
Set FSO = New Scripting.FileSystemObject
On Error Resume Next
' Pour chaque fichier trouvé dans le dossier
For Each FileItem In SourceFolder.Files
Workbooks.Open FileItem.Name
ActiveWorkbook.Sheets(1).Move after:=ThisWorkbook.Sheets("Consolidation")
ThisWorkbook.ActiveSheet.Name = Replace(FileItem.Name, ".xls", "")
Next FileItem
On Error GoTo 0
' Effacer les variables objet
Set FileItem = Nothing
Set SourceFolder = Nothing
Set FSO = Nothing

End Sub

Merci pour ton aide
 

WaxistSelecta

XLDnaute Junior
Re : Macro Compilation Fichiers

Ok, en fait le code fonctionne lorsque l'on change le nom du fichier, en V2 par exemple...

Par contre, j'ai un souci sur le nommage, ayant un onglet "Consolidation", la ligne de code du nommage commence sur ce même onglet et du coup rend le code complet inopérant...

Je ne sais pas si c'est clair ;)
 

Discussions similaires

Réponses
6
Affichages
374

Statistiques des forums

Discussions
312 432
Messages
2 088 368
Membres
103 835
dernier inscrit
Jaco24