Option Explicit
Public Const MonRepert = "C:\MesDocuments\DocXLS\"
Sub Test()
Dim MaPlage As Range, MesLignes As Integer, l As Integer
Dim NVclasseur As Workbook, ClasMacro As String, NouvClas As String
Application.ScreenUpdating = False
ChDir MonRepert
Sheets("repartition").Select
Set MaPlage = Range("A1").CurrentRegion
MesLignes = MaPlage.Rows.Count
ClasMacro = ActiveWorkbook.Name
Set NVclasseur = Workbooks.Add
NVclasseur.SaveAs Filename:=MaPlage(2, 2).Value
NouvClas = NVclasseur.Name
Workbooks(ClasMacro).Sheets("modele").Copy Before:=Workbooks(NouvClas).Sheets(1)
NVclasseur.Worksheets(1).Name = MaPlage(2, 1).Value
If MaPlage(2, 2).Value <> MaPlage(3, 2).Value Then _
NVclasseur.Close SaveChanges:=True
For l = 3 To MesLignes
If MaPlage(l, 2).Value = MaPlage(l - 1, 2).Value Then
Workbooks(ClasMacro).Sheets("modele").Copy Before:=Workbooks(NouvClas).Sheets(1)
NVclasseur.Worksheets(1).Name = MaPlage(l, 1).Value
If MaPlage(l, 2).Value <> MaPlage(l + 1, 2).Value Then _
NVclasseur.Close SaveChanges:=True
Else
Set NVclasseur = Workbooks.Add
NVclasseur.SaveAs Filename:=MaPlage(l, 2).Value
NouvClas = NVclasseur.Name
Workbooks(ClasMacro).Sheets("modele").Copy Before:=Workbooks(NouvClas).Sheets(1)
NVclasseur.Worksheets(1).Name = MaPlage(l, 1).Value
If MaPlage(l, 2).Value <> MaPlage(l + 1, 2).Value Then _
NVclasseur.Close SaveChanges:=True
End If
Next l
Application.ScreenUpdating = True
End Sub