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
| Public Sub trie()
Dim NbLig1, NbLig2, valOK As Integer
Set F1 = Worksheets("exemple1")
With F1
NbLig1 = .Cells(.Rows.Count, 1).End(xlUp).Row
NbLig2 = .Cells(.Rows.Count, 5).End(xlUp).Row
For i = 7 To NbLig1
valOK = 9999
posOK = 0
aa = .Cells(i, 1).Value
bb = .Cells(i, 2).Value
For j = i To NbLig2
' Formule qui permet de definir la priorité
valeur = (.Cells(j, 5).Value - aa) * 10 + (.Cells(j, 6).Value - bb)
If valeur < 0 Then
valeur = valeur * -1
End If
If valeur < valOK Then
valOK = valeur
posOK = j
End If
Next j
.Range("E" & posOK & ":G" & posOK).Copy
.Range("E" & i & ":G" & i).Insert Shift:=xlDown
.Range("E" & posOK + 1 & ":G" & posOK + 1).Delete Shift:=xlUp
.Range("H" & i).Value = .Range("C" & i).Value
Next i
End With
End Sub |
Partager