Private Sub Worksheet_Activate()
Dim P As Range, a$
Application.ScreenUpdating = False
Feuil1.[A:G].Copy [A1] 'Feuil1 est le CodeName de la feuille source
Set P = Me.UsedRange.Offset(2) 'décalage à cause des 2 lignes de titres
'---colonne D pour Tableau A, colonne H pour Tableau B---
For Each P In Union(P.Columns(4), P.Columns(8)).Areas
a = P.Offset(, IIf(P.Column = 4, 2, -6)).Address(ReferenceStyle:=xlR1C1)
P.FormulaR1C1 = "=1/IF(RC[-2]<>"""",COUNTIF(" & a & ",RC[-2])=0)"
P = P.Value 'supprime les formules
Range(P.Offset(, -3), P).Sort P, xlAscending, Header:=xlNo 'tri pour accélérer
Next
'---supprime les valeurs d'erreur (doublons et cellules vides)---
'On Error Resume Next 'inutile puisqu'avec le décalage il y a des cellules vides
Intersect([A:D], [D:D].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
Intersect([E:H], [H:H].SpecialCells(xlCellTypeConstants, 16).EntireRow).Delete xlUp
[D:D,H:H].ClearContents
Set P = Me.UsedRange 'actualise la barre de défilement verticale
End Sub