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
| Option Explicit
Option Base 1
Public Tableau() As Variant
Public StrTemp As Variant
Public I As Long
Public J As Long
Public CtrI As Long
Public CtrJ As Long
Public ShSource As Worksheet
Public TitreSource As Long
Public DerniereLigneSource As Long
Public AireSource As Range
Public CelluleSource As Range
Public ShCible As Worksheet
Public AireCible As Range
Public CelluleCible As Range
Sub TriDeLaMatrice()
ChargementMatrice
'Tri le contenu du tableau par ordre de la colonne 3
For CtrI = 1 To UBound(Tableau, 2)
For CtrJ = 1 To UBound(Tableau, 2)
If Tableau(3, CtrI) < Tableau(3, CtrJ) Then
StrTemp = Array(Tableau(1, CtrI), Tableau(2, CtrI), Tableau(3, CtrI), Tableau(4, CtrI), Tableau(5, CtrI))
For J = 1 To 5
Tableau(J, CtrI) = Tableau(J, CtrJ)
Tableau(J, CtrJ) = StrTemp(J)
Next J
End If
Next CtrJ
Next CtrI
DechargementMatrice
End Sub
Sub ChargementMatrice()
Set ShSource = Sheets("Feuil1")
TitreSource = 10
With ShSource
DerniereLigneSource = .Cells(.Rows.Count, 1).End(xlUp).Row
Set AireSource = .Range(.Cells(TitreSource + 1, 1), .Cells(DerniereLigneSource, 1))
ReDim Tableau(5, AireSource.Count)
I = 1
For Each CelluleSource In AireSource
For J = 0 To 4
Tableau(J + 1, I) = CelluleSource.Offset(0, J)
Next J
I = I + 1
Next CelluleSource
Set AireSource = Nothing
End With
Set ShSource = Nothing
End Sub
Sub DechargementMatrice()
Set ShCible = Sheets("Feuil1")
TitreSource = 10
With ShCible
DerniereLigneSource = .Cells(.Rows.Count, 1).End(xlUp).Row
Set AireCible = .Range(.Cells(TitreSource + 1, 7), .Cells(DerniereLigneSource, 7))
I = 1
For Each CelluleCible In AireCible
For J = 0 To 4
CelluleCible.Offset(0, J) = Tableau(J + 1, I)
Next J
I = I + 1
Next CelluleCible
Set AireCible = Nothing
End With
Set ShCible = Nothing
End Sub |