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
|
Sub Test()
Dim PlageFe1 As Range
Dim PlageFe2 As Range
Dim Tbl()
Dim I As Long
'plage en colonne A de la Feuille "Feuil1"
With Worksheets("Feuil1")
Set PlageFe1 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'plage en colonne A de la Feuille "Feuil2"
With Worksheets("Feuil2")
Set PlageFe2 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'dimensionne le tableau par rapport à une des deux plages (ici la 1)
ReDim Tbl(1 To 2, 1 To PlageFe1.Count)
'fusionne les deux plages dans le tableau
For I = 1 To UBound(Tbl, 2)
Tbl(1, I) = PlageFe1(I)
Tbl(2, I) = PlageFe2(I)
Next I
'effectue le tri (adapter le signe < ou > dans la porc "Tri")
Tri Tbl()
'puis réaffecte les valeurs
For I = 1 To UBound(Tbl, 2)
PlageFe1(I) = Tbl(1, I)
PlageFe2(I) = Tbl(2, I)
Next I
End Sub
Sub Tri(Tbl())
Dim Tempo1, Tempo2
Dim I As Long, J As Long
'éffectue un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl, 2) - 1
For J = I + 1 To UBound(Tbl, 2)
'tri sur l'index 1
If Tbl(1, I) > Tbl(1, J) Then
Tempo1 = Tbl(1, J)
Tempo2 = Tbl(2, J)
Tbl(1, J) = Tbl(1, I)
Tbl(2, J) = Tbl(2, I)
Tbl(1, I) = Tempo1
Tbl(2, I) = Tempo2
End If
Next J, I
End Sub |
Partager