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
| Sub Rapprochement()
Dim Nb As Long, i As Long, j As Long, k As Long
Dim Op As String, Client As String
Dim Tb
Application.ScreenUpdating = False
With Worksheets(1)
Nb = .Cells(.Rows.Count, 1).End(xlUp).Row
Tb = .Range("A2:F" & Nb)
For i = 1 To Nb - 2
If IsEmpty(Tb(i, 5)) Then
If IsEmpty(Tb(i, 6)) Then
Op = NumOp(Tb(i, 3))
Client = NumClient(Tb(i, 3))
For j = i + 1 To Nb - 1
If IsEmpty(Tb(j, 6)) Then
If Tb(j, 1) <> "LOAD" Then
If Tb(j, 2) = Op And NumClient(Tb(j, 3)) = Client Then
k = k + 1
Tb(i, 6) = k
Tb(j, 6) = k
Exit For
End If
End If
End If
Next j
End If
End If
Next i
.Range("A2:F" & Nb) = Tb
.Range("A2:F" & Nb).Sort Key1:=.Range("F2"), Order1:=xlAscending, Header:=xlNo
End With
MsgBox "Rapprochment terminé"
End Sub
Private Function NumOp(ByVal Str As String) As String
Dim n As Integer
n = InStr(Str, "OP")
If n > 0 Then NumOp = Mid(Str, n + 2)
End Function
Private Function NumClient(ByVal Str As String) As String
Dim n As Integer
n = InStr(Str, "OP")
If n > 0 Then
NumClient = Trim(Left(Str, n - 1))
Else
n = InStr(Str, "APP")
If n > 0 Then NumClient = Mid(Str, n)
End If
End Function |
Partager