djedkare
Nouveau membre
Bonjour à tous,
Voila mon pb:
j'ai un gros fichier excel contenant plusieurs sheets (+ou- 140 ) , le nom de chaque sheet se termine soit par ".1" , ".2" , ".3" ou ".4".
j'aimeras donc spliter mon fichier excel selon ces caractères donc avoir 4 fichiers: Book.1 (contenant tout les sheets dont les noms se termine par ".1" ) Book.2 ainsi de suite
Au préalable j'ai déja creer 4 fichiers excel .
Voici mon code ( il splite uniquement le fichier excel en autant de sheet présente dans le document donc j'obtient 140 nouveau Workbook)
Merci d'avance !!
Voila mon pb:
j'ai un gros fichier excel contenant plusieurs sheets (+ou- 140 ) , le nom de chaque sheet se termine soit par ".1" , ".2" , ".3" ou ".4".
j'aimeras donc spliter mon fichier excel selon ces caractères donc avoir 4 fichiers: Book.1 (contenant tout les sheets dont les noms se termine par ".1" ) Book.2 ainsi de suite
Au préalable j'ai déja creer 4 fichiers excel .
Voici mon code ( il splite uniquement le fichier excel en autant de sheet présente dans le document donc j'obtient 140 nouveau Workbook)
Merci d'avance !!
Code:
Option Explicit
Sub SplitSheets()
Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook, wb4 As Workbook, wb5 As Workbook
Dim ws As Worksheet
Dim myString As String
Dim sPath1 As String, sPath2 As String, sPath3 As String, sPath4 As String, sPath5 As String
Set wb1 = ThisWorkbook
sPath1 = wb1.Path
Application.ScreenUpdating = False
For Each ws In wb1.Worksheets
If ws.Visible Then
myString = ws.Name
If InStr(myString, ".1") > 0 Then
ws.Copy
Set wb2 = ActiveWorkbook
sPath2 = sPath1 & Application.PathSeparator & ws.Name
On Error Resume Next
Kill sPath2 & ".xlsx"
On Error GoTo 0
Call wb2.SaveAs(sPath2, xlOpenXMLWorkbook)
Call wb2.Close(False)
End If
If InStr(myString, ".2") > 0 Then
ws.Copy
Set wb3 = ActiveWorkbook
sPath3 = sPath1 & Application.PathSeparator & ws.Name
On Error Resume Next
Kill sPath3 & ".xlsx"
On Error GoTo 0
Call wb3.SaveAs(sPath3, xlOpenXMLWorkbook)
Call wb3.Close(False)
End If
If InStr(myString, ".3") > 0 Then
ws.Copy
Set wb4 = ActiveWorkbook
sPath4 = sPath1 & Application.PathSeparator & ws.Name
On Error Resume Next
Kill sPath4 & ".xlsx"
On Error GoTo 0
Call wb4.SaveAs(sPath4, xlOpenXMLWorkbook)
Call wb4.Close(False)
End If
If InStr(myString, ".4") > 0 Then
ws.Copy
Set wb5 = ActiveWorkbook
sPath5 = sPath1 & Application.PathSeparator & ws.Name
On Error Resume Next
Kill sPath5 & ".xlsx"
On Error GoTo 0
Call wb5.SaveAs(sPath5, xlOpenXMLWorkbook)
Call wb5.Close(False)
End If
End If
Next
wb1.Activate
Application.ScreenUpdating = False
End Sub