Bonjour Michel, ThauThème, JoyeuxNoel,
Voici un petit d'essai en l'absence de fichier et d'informations précises, comme l'a fait remarqué Thauthème :
option base 1
Sub EffacerLignes()
Dim zone as range, rliste as range
Dim n&, i&, j&, n&, col&
Dim tablo(), valeurs
set zone = activesheet.usedrange 'zone utilisée sur la feuille (adapter si besoin)
set rliste = sheets("nomfeuille").range("nomliste") '<<< adapter référence de la liste
col = zone.columns.count 'nb colonnes de la zone
for i = 1 to zone.rows.count 'pour chaque ligne
valeurs = application.transpose(application.transpose(zone.rows(i))) 'tableau contenant valeurs ligne
chaine = join(valeurs) 'valeurs ligne concaténées dans chaine
if not PRESENCE(chaine, rliste) then 'si chaine contient une des adresses de rliste
n = n + 1 'incrémentation
redim preserve tablo(col, n) 'redimension tableau de copie des valeurs à garder
for j = 1 to col 'parcourt chaque colonne (cad chaque cellule de la ligne en cours)
tablo(j, n) = zone(i, j) 'tableau prend valeur de la cellule
next j
end if
next i
zone.clear 'efface la zone
zone.resize(col, n) = application.transpose(tablo) 'recolle les valeurs sans les lignes indésirables
end sub
Function PRESENCE(chaine As String, Liste As Range) As Boolean
Dim reg As Object
Dim motif$
motif = Join(Application.Transpose(Liste), "|")
Set reg = CreateObject("vbscript.regexp")
With reg
.ignorecase = True
.Pattern = motif
If .test(chaine) Then PRESENCE = True
End With
End Function
Ce n'est pas testé donc je ne garantis rien. Il faudra bien entendu mettre les bonnes références (la liste contenant les mails mais également adapter la range "zone" éventuellement).
Cdlt,