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
| Sub test()
Dim C As Range, Plage As Range, Ligne As Long, Sh As Worksheet, Dico As Object
With Sheets("Feuil1")
Ligne = .[A:AA].Find("*", , , , xlByRows, xlPrevious).Row
Set Plage = .Range("A3:A" & Ligne)
.AutoFilterMode = False
.[A3] = "X"
Plage.AutoFilter 1, "S"
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "Ent"
.AutoFilter.Range.Resize(, 27).Copy Sheets("Ent").[A3]
.Range("1:2").Copy Sheets("Ent").[A1]
End With
With Sheets("Ent")
If .Cells(.Rows.Count, 1).End(xlUp).Row > 3 Then
Set Dico = CreateObject("Scripting.Dictionary")
.[J3] = "X"
For Each C In .Range(.[J4], .Cells(.Rows.Count, 10).End(xlUp))
If Not Dico.exists(C.Value) Then
Dico.Add C.Value, C.Value
Set Sh = Sheets.Add(after:=Sheets(Sheets.Count))
Sh.Name = C.Value
.[J3] = "X"
.AutoFilterMode = False
Ligne = .[A:AA].Find("*", , , , xlByRows, xlPrevious).Row
Set Plage = .Range("J3:J" & Ligne)
Plage.AutoFilter 1, C.Value
Var = .AutoFilter.Range.Offset(, -9).Resize(, 27).Address
.AutoFilter.Range.Offset(, -9).Resize(, 27).Copy Sh.[A3]
.Range("1:2").Copy Sh.[A1]
End If
Next C
End If
.AutoFilterMode = False
End With
End Sub |
Partager