Sub Desinscrire()
Dim fichier$, tablo, d As Object, i&
fichier = ThisWorkbook.Path & "\Désinscrire.xlsx"
If Dir(fichier) = "" Then MsgBox fichier & " introuvable !", 48: Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier est déjà ouvert
'---liste des emails à supprimer---
Workbooks.Open fichier
tablo = [A1].CurrentRegion 'matrice, plus rapide
ActiveWorkbook.Close False
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(tablo)
d(tablo(i, 1)) = ""
Next
'---suppressions---
With [A1].CurrentRegion
.AutoFilter: .AutoFilter 'si le tableau est filtré
tablo = .Resize(, 2) 'matrice, plus rapide
For i = 1 To UBound(tablo)
If d.exists(tablo(i, 2)) Then tablo(i, 2) = ""
Next
.Value = tablo 'restitution
.Columns(2).Insert xlToRight 'colonne auxiliaire
.Columns(2) = "=1/ISBLANK(RC[1])"
.Columns(2) = .Columns(2).Value 'supprime les formules
.Sort .Columns(2), xlAscending 'tri pour grouper et accélérer
On Error Resume Next 'si aucune SpecialCell
Intersect(.Columns(2).SpecialCells(xlCellTypeConstants, 1).EntireRow, .Cells).Delete xlUp 'supprime les nombres en colonne B
.Columns(2).Delete xlToLeft 'supprime la colonne auxiliaire
With .Parent.UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub