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
| Sub testMATCHINGESPOIR()
Dim i&, j&, Résultat&, Diff, test, PlageExternal, PlageDataSyst, External, DataSyst
Sheets("Extract external").Activate
Set PlageExternal = ActiveWorkbook.Sheets("Extract external").Range("A2", Range("A" & Rows.Count).End(xlUp))
Sheets("Data syst").Activate
Set PlageDataSyst = ActiveWorkbook.Sheets("Data syst").Range("A2", Range("A" & Rows.Count).End(xlUp))
Sheets("Extract external").Activate
External = ActiveWorkbook.Sheets("Extract external").Range("A2", Range("A" & Rows.Count).End(xlUp)).Value
Sheets("Data syst").Activate
DataSyst = ActiveWorkbook.Sheets("Data syst").Range("A2", Range("A" & Rows.Count).End(xlUp)).Value
Diff = Application.Evaluate("COUNTA(" & PlageExternal.Address _
& ")- SUM(COUNTIF(" & PlageExternal.Address & "," & PlageDataSyst.Address & "))")
For i = 1 To PlageDataSyst.Rows.Count
Dim tabl()
ReDim Preserve tabl(1 To PlageDataSyst.Rows.Count)
On Error Resume Next
Résultat = Application.WorksheetFunction.Match(DataSyst(i, 1), External, 0)
If Err.Number <> 0 Then
tabl(i) = ""
Else
tabl(i) = External(Résultat, 1)
End If
Next i
test = Application.WorksheetFunction.CountA(tabl)
j = 1
For i = 1 To PlageExternal.Rows.Count
Résultat = Application.WorksheetFunction.CountIf(PlageDataSyst, External(i, 1))
If Résultat = 0 Then
ReDim Preserve tabl(1 To PlageExternal.Rows.Count + Diff)
tabl(j + test) = External(i, 1)
j = j + 1
End If
Next i
Sheets("Matching").[A2].Resize(UBound(tabl)) = Application.Transpose(tabl)
Sheets("Matching").[B2].Resize(PlageExternal.Rows.Count) = DataSyst
End Sub |
Partager