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
| Option Explicit
Dim shFR As Worksheet, sLink As String
Sub CompilRecettes()
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set shFR = Sheets("FICHE RECETTE") ' feuille que l'on veut copier
sLink = "[" & ThisWorkbook.Name & "]" ' partie du lien à supprimer dans la copie
Set wB = ThisWorkbook
Scan fs.GetFolder(ThisWorkbook.Path)
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Sub Scan(Dossier)
Dim Fichier As Object, SousDossier As Object, Classeur As Workbook
For Each Fichier In Dossier.Files
Select Case Right(Fichier.Path, 3)
Case "xls", "lsx", "lsm", "lsb"
If Left(Fichier.Name, 1) <> "~" And Not (Fichier.Name Like "*Recette standard*") Then
Debug.Print Fichier.Path
Set Classeur = Workbooks.Open(Fichier)
'--- recopie la feuille choisie en 4e place des feuilles du classeur cible
shFR.Copy Before:=Classeur.Sheets(4)
'--- supprime les liens au fichier de départ
Cells.Replace What:=sLink, Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
'--- ferme en sauvant
Classeur.Close SaveChanges:=True
End If
End Select
Next Fichier
For Each SousDossier In Dossier.SubFolders
Scan SousDossier
Next
End Sub |
Partager