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
| Option Explicit
Sub Creer_extract()
Dim wbRecap As Workbook 'fichier recap
Dim Etatcomptable As Worksheet 'feuille où on écrit les données
Dim wbSource As Workbook 'fichier à ouvrir
Dim wsSource As Worksheet 'feuille où on cherche les données
Dim DernLign As Integer 'ligne où on écrit les données
Dim vFichiers As Variant 'noms des fichiers
Dim i As Integer, k As Integer
Dim rgRecap As Range 'plage où on copie les données
Set wbRecap = ThisWorkbook("essai") 'Fichier récapitulatif
Set wsRecap = wbRecap.Sheets("Feuil1") 'on écrit dans la feuille 1 du fichier récapitulatif
' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
On Error Resume Next
Set vFichiers = Application.FileSearch
With vFichiers
.LookIn = "D:\Reporting" 'Dossier dans lequel chercher les fichiers
.Filename = "*.xlsm" 'Extension des fichiers a trouver
End With
' --- Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
Debug.Print "Aucun fichier sélectionné."
MsgBox "Erreur! Aucun fichier sélectionné."
Exit Sub
End If
On Error Resume Next
Application.ScreenUpdating = False
' --- Boucle à travers les fichiers
For k = 1 To UBound(vFichiers)
Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
' C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
Set wsSource = wbSource.Sheets("Rapport") 'on copie les données de la feuille 1 des fichiers présent dans le dossier
DernLign = wbRecap.Sheets("Feuil1").Range("A1000").End(xlUp).Row + 1 'ligne pour écrire le log des fichiers compilés
' - On copie les données vers le fichier Recapitulatif
Set rgRecap = wsRecap.Range("A1000").End(xlUp).Offset(1, 0)
rgRecap = Time
With wsSource
.Cells(NumeroLigne, 1) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H7")
.Cells(NumeroLigne, 2) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H8")
.Cells(NumeroLigne, 3) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H9")
.Cells(NumeroLigne, 4) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H10")
.Cells(NumeroLigne, 5) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H11")
.Cells(NumeroLigne, 6) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H12")
End With
wbSource.Close 'fermer fichier
Set wbSource = Nothing
Next k
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
Private Sub CommandButton1_Click()
Creer_extract
End Sub |
Partager