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
| Option Explicit
Option Base 1
Sub ChargerDoublons()
Dim wbA As Workbook, wbB As Workbook
Dim wshA As Worksheet, wshB As Worksheet
Dim kC As Long, rA As Range, rB As Range, rD As Range
Dim arrA() As Variant, arrB() As Variant, arrD As Variant
Dim j As Long, k As Long
Set wbA = Application.Workbooks.Open(ThisWorkbook.Path & "\Fichier_A.xlsx", , True)
Set wbB = Application.Workbooks.Open(ThisWorkbook.Path & "\Fichier_B.xlsx", , True)
Set wshA = wbA.Worksheets("Feuil1")
Set wshB = wbB.Worksheets("Feuil1")
'--- il est supposé que les 2 feuilles ont la même présentation
'--- que la ligne 1 est une ligne de titres
'--- qu'il n'y pas de cellules vides dans la colonne à comparer
kC = 1 '--- colonne contenant les éléments à comparer (recheche doublons)
Set rA = wshA.Range(wshA.Cells(2, kC), wshA.Cells(2, kC).End(xlDown))
Set rB = wshB.Range(wshB.Cells(2, kC), wshB.Cells(2, kC).End(xlDown))
arrA = rA
arrB = rB
ThisWorkbook.Activate
Worksheets("Doublons").Select
Cells.Clear
Range("A1").Select
'====== liste les doublons
For j = 1 To UBound(arrA)
Debug.Print arrA(j, 1)
For k = 1 To UBound(arrB)
If arrA(j, 1) = arrB(k, 1) Then
wshA.Rows(j + 1).Copy ActiveCell
ActiveCell.Offset(1, 0).Select
End If
Next k
Next j
Set rD = Range(Cells(1, kC), Cells(1, kC).End(xlDown)) '--- range doublons
arrD = rD
Stop
'==== supprime les doublons dans fichier B
wshB.Activate
k = Cells(2, kC).End(xlDown).Row '--- dernière ligne
Do
For j = 1 To UBound(arrD)
If Cells(k, kC) = arrD(j, 1) Then
Rows(k).Delete
Exit For
End If
Next j
k = k - 1 '--- remonte
Loop Until k = 0
End Sub |
Partager