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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
| Sub mise_enforme_clefs()
Dim PlageSource As Range
Dim FeuilleResultat As Worksheet
Dim NumColonneResultat As Integer
Dim NumLigneResultat As Integer
Dim Cell As Range
Dim Un As Collection
Dim Un1 As Collection
Dim Un2 As Collection
Dim i As Long
Dim j As Long
Dim ValeurD As String
Sheets("table").Select
Cells.Select
Range("E1").Activate
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("H1").Select
Sheets("table").Select
Cells.Find(What:="Scn", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet1").Select
Range("E1").Select
ActiveSheet.Paste
' nommer tous les endroits sur lesquels on travaille
Set PlageSource = Worksheets("table").Range("B:B")
Set FeuilleResultat = Worksheets("sheet1")
NumLigneResultat = 2
' creer une liste sans doublons
Set Un = New Collection
On Error Resume Next
'Boucle sur la plage de cellule
'entre D et E (2), et le critère "Scn"
For Each Cell In PlageSource
ValeurD = Cell.Offset(0, 2).Value
If (Cell <> "" And ValeurD = "Scn") Then Un.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'Boucle sur les éléments de la collection
For i = 1 To Un.Count
FeuilleResultat.Cells(NumLigneResultat, 4 + i) = CStr(Un(i).Value)
Next i
Sheets("table").Select
Cells.Find(What:="Nomi", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet1").Select
Sheets("sheet1").Cells(1, 4 + i).Select
ActiveSheet.Paste
Set PlageSource = Worksheets("table").Range("B:B")
Set FeuilleResultat = Worksheets("sheet1")
NumLigneResultat = 2
' creer une liste sans doublons
Set Un1 = New Collection
On Error Resume Next
'Boucle sur la plage de cellule
'entre D et E (2), et le critère "sheet1"
For Each Cell In PlageSource
ValeurD = Cell.Offset(0, 2).Value
If (Cell <> "" And ValeurD = "Nomi") Then Un1.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
For i = 5 + Un.Count To 4 + Un.Count + Un1.Count
FeuilleResultat.Cells(NumLigneResultat, i) = CStr(Un1(i - 4 - Un.Count).Value)
Next i
Sheets("table").Select
Cells.Find(What:="Scen", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
Selection.Copy
Sheets("sheet1").Select
Sheets("sheet1").Cells(1, i).Select
ActiveSheet.Paste
Set PlageSource = Worksheets("table").Range("B:B")
Set FeuilleResultat = Worksheets("sheet1")
NumLigneResultat = 2
' creer une liste sans doublons
Set Un2 = New Collection
On Error Resume Next
'Boucle sur la plage de cellule
'entre D et E (2), et le critère "sheet1"
For Each Cell In PlageSource
ValeurD = Cell.Offset(0, 2).Value
If (Cell <> "" And ValeurD = "Scen") Then Un2.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
For i = 5 + Un.Count + Un1.Count To 4 + Un.Count + Un1.Count + Un2.Count
FeuilleResultat.Cells(NumLigneResultat, i) = CStr(Un2(i - 4 - Un.Count - Un1.Count).Value)
Next i
Sheets("table").Select
Cells.Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("H1").Select
End Sub |
Partager