1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| Sub Assemble()
Dim CL1 As Workbook, CL2 As Workbook 'classeur
Dim FL1 As Worksheet, FL2 As Worksheet 'feuille de calcul
Dim Fich As Variant, i As Byte, j$, Rep$, k As Long
'Répertoire des fichiers à copier
Rep = "C:\Documents and Settings\Bureau\test\"
j = "fich1.xls"
Set CL1 = ThisWorkbook
'Ajoute une feuille au classeur destiné à recevoir les données des autres classeurs
CL1.Sheets.Add
CL1.ActiveSheet.Name = "Cumul_Budget"
Set FL1 = CL1.ActiveSheet 'Instance le la feuille
'Crée le tableau des fichiers du répertoire
Set Fich = application.FileSearch
'Ouverture des fichiers du répertoire
With Fich
.LookIn = Rep
.FileType = msoFileTypeExcelWorkbooks
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
Set CL2 = Workbooks.Open(.FoundFiles(i))
DoEvents
'Parcours des feuilles de chaque classeur
For Each FL2 In CL2.Worksheets
'Dernière ligne où coller les données copiées dans FL2
NoLigne = FL1.Range("A65535").End(xlUp).Row + 1
If j = "fich1.xls" Then
FL2.Range("A1:" & Split(FL2.UsedRange.Address(0, 0), ":")(1)).Copy _
FL1.Range("A" & NoLigne)
j = ""
Else
FL2.Range("A5:" & Split(FL2.UsedRange.Address(0, 0), ":")(1)).Copy _
FL1.Range("A" & NoLigne)
End If
'Affichage du nom de fichier
FL1.Range("A6") = CL2.Name
DoEvents
Set FL2 = Nothing
Next
'fermeture du classeur copié
CL2.Close False
DoEvents
Set CL2 = Nothing
'suppression des blancs en ligne et en colonne
Range(Cells(Cells.Find("*", , , , xlByColumns, xlPrevious).Column + 1), Cells(1, 254)).EntireColumn.Delete
Range(Cells(Cells.Find("*", , , , xlByRows, xlPrevious).Row + 1, 1), Cells(65536, 1)).EntireRow.Delete
ActiveSheet.UsedRange.Select
Next i
Else
MsgBox "Aucun fichier dans le répertoire " & Rep
End If
End With
End Sub |
Partager