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
|
Sub Macro1()
Dim lignesSupprimees(0 To 65535) As Long
'on désactive certaines fonctions d'excel qui pourraient le ralentir en écriture :
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Interactive = False
Application.Calculation = xlCalculationManual
Application.Cursor = xlWait
Sheets.Add After:=Sheets(Sheets.Count)
sh1 = ActiveSheet.Name
Sheets.Add After:=Sheets(Sheets.Count)
sh2 = ActiveSheet.Name
' 1 - PREPARATION :
'on copie en les concaténant les données de base1 dans sh1
For Each r1 In Sheets("base1").UsedRange.Rows
varTampon = ""
For i = 1 To 27 'de la colonne A à la colonne AA
varTampon = varTampon & Sheets("base1").Cells(r1.Row, i) & ";"
Next i
Sheets(sh1).Cells(r1.Row, 1) = varTampon
Next
'on copie en les concaténant les données de base2 dans sh2
For Each r2 In Sheets("base2").UsedRange.Rows
varTampon = ""
For i = 1 To 27 'de la colonne A à la colonne AA
varTampon = varTampon & Sheets("base2").Cells(r2.Row, i) & ";"
Next i
Sheets(sh2).Cells(r2.Row, 1) = varTampon
Next
' 2 - COMPARAISON :
j = 0
For Each r3 In Sheets(sh1).UsedRange.Cells
Set c = Sheets(sh2).Range("A:A").Find(what:=r3.Value, lookat:=xlWhole)
If c Is Nothing Then
'si pas de correspondance trouvée, on note qu'il faut supprimer la ligne
lignesSupprimees(j) = r3.Row
j = j + 1
End If
Next
'dans un 2ème temps on va supprimer les lignes dans base1 :
j = 0
Do While lignesSupprimees(j) <> 0
Sheets("base1").Rows(lignesSupprimees(j) - j).Delete 'note : la suppression décalant les lignes vers le haut, il convient d'en tenir compte avec le -j
j = j + 1
Loop
'on supprime les deux feuilles créées pour les comparaisons
Sheets(sh1).Delete
Sheets(sh2).Delete
Sheets("base1").Activate
'on réactive les fonctions désactivées précédemment :
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Interactive = True
Application.Calculation = xlCalculationAutomatic
Application.Cursor = xlDefault
End Sub |
Partager