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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| Sub Ventillation()
' On vérifie l'existance du répertoire C:\TEST\Ventillation sinon on le crée
If Dir("C:\TEST", vbDirectory) = "" Then MkDir ("C:\TEST")
If Dir("C:\TEST\Ventillation", vbDirectory) = "" Then MkDir ("C:\TEST\Ventillation")
' On vérifie l'existance des feuilles intermédiaires
Dim Ws As Worksheet
Application.DisplayAlerts = False
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name = "Base1" Then
Ws.Delete
Exit For
End If
Next
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name = "Base2" Then
Ws.Delete
Exit For
End If
Next
Sheets("Base").Select
Sheets("Base").Copy After:=Sheets(Sheets.Count)
Sheets("Base (2)").Select
Sheets("Base (2)").Name = "Base1"
'On supprime les modalités <> "oui" de la colonne "Courrier"
Sheets("Base1").Select
derniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For r = derniereLigne To 5 Step -1
If Cells(r, 11) <> "oui" Then Rows(r).Delete
Next r
Sheets("Base1").Select
Sheets("Base1").Copy After:=Sheets(Sheets.Count)
Sheets("Base1 (2)").Select
Sheets("Base1 (2)").Name = "Base2"
Sheets("Base2").Select
'On trie selon les Dept dans l'ordre décroissant
NbEnreg = Range("A5").End(xlDown).Row
Range(Cells(4, 1), Cells(NbEnreg, 11)).Select
Selection.Sort Key1:=Range("F5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
'On récupère les Dept sans doublons
Cells(4, 12).Value = "SansDoublons"
Cells(5, 12).Value = Cells(5, 6).Value
Cells(6, 12).Value = "=IF(RC[-6]<>R[-1]C[-6],RC[-6],"""")"
Cells(6, 12).Select
Selection.AutoFill Destination:=Range(Cells(6, 12), Cells(NbEnreg, 12)), Type:=xlFillDefault
ActiveWorkbook.Save
'On enlève les formules
Range(Cells(5, 12), Cells(NbEnreg, 12)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
'On ventille
Dim plage As Range
Dim cell As Range
Dim i As Integer
Set plage = Sheets("Base2").Range(Cells(5, 12), Cells(NbEnreg, 12))
For Each cell In plage
If cell <> "" Then
Sheets("Base1").Select
Range("A4:K4").Select
Selection.AutoFilter
Selection.AutoFilter Field:=6, Criteria1:=cell
Cells.Select
Cells.Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:="C:\TEST\Ventillation" & cell & ".xls"
ActiveWorkbook.Close
Application.CutCopyMode = False
End If
Next cell
Selection.AutoFilter
End Sub |
Partager