XL 2016 Supprimer des lignes dans feuil1 si elle contiennent 1 ou plusieurs string dans feuil2

jeffnko

XLDnaute Nouveau
J'ai une feuil1 avec 30000 ou + lignes de texte en colonne A.
Sur une feuil2, j'ai une liste de mots clés ou string en colonne A.
Je voudrais effacer les lignes de la feuil1 dans laquelle on trouve une ou plusieurs expression de la feuil2.

J'ai excel 2016 sous MAC.
J'ai testé plusieurs Macro sans succès.
Si quelqu'un qui à déjà ça en poche ou qui connait peut m'aider je serai grandement reconnaissant.
Merci
 

Pièces jointes

  • suppressionLignes.xlsm
    783.7 KB · Affichages: 11

kingfadhel

XLDnaute Impliqué
Bonsoir à tous,
@jeffnko
VB:
Sub jeffnko()
Application.ScreenUpdating = False
Dim critere As String
   For i = 1 To 1800
        For j = 1 To 4 ' à changer par le numero de la dernière ligne des critères
        critere = "*" & Sheets("Criteres").Cells(j, 1) & "*"
        Range("A" & i).Select
            If ActiveCell.Text Like critere Then
            '// MsgBox " CA MARCHE !"
            Rows(i).EntireRow.Delete
            End If
        Next
  Next
Application.ScreenUpdating = True
End Sub

Saisir les critères sur la feuille "Criteres" sur la Colonne A
 

Pièces jointes

  • suppressionLignes.xlsm
    762.6 KB · Affichages: 6

kingfadhel

XLDnaute Impliqué
La Feuille BD doit être active pour que le macro fonctionne.
tu peux changer 1800 par Range("A65536").End(xlUp).Row
for i=1 to 1800 ==> for i=1 to Range("A65536").End(xlUp).Row
pour ça récupère automatiquement la dernière ligne non vide

aussi

for j=1 to 4 ==> for j=1 to sheets("Criteres").Range("A65536").End(xlUp).Row
 

jeffnko

XLDnaute Nouveau
Bonsoir Kingfadhel,

Merci beaucoup pour ta réponse.
En plus ça MARCHE !! (Ne pas oublier de cliquer sur l'onglet de la feuille BD pour la selectionner)

Quand je rajoute 100 mots en critère c'est un peu long (1500 lignes et 130 criteres = 7-8minutes) mais ça fonctionne :) !!!!!!

J'ai regardé ton code pour l'adapter après pour faire l'inverse. (effacer les lignes qui ne contiennent pas les mots). Mais je crois que j'ai juste à rajouter Not à cette ligne :
VB:
If Not ActiveCell.Text Like critere Then

Cependant j'ai 2 questions si j'abuse pas de ton temps :

Je dois remplir la feuil1 ET la feuille BD avec le meme contenu pour que ça fonctionne ?

Le code VBA qui se trouve dans la feuille BD ne sert pas à la macro ? C'est uniquement le code dans le module qui agit ? c'est bien ça ?

Aussi pour éviter de changer le nombre de lignes dans i, est-il possible de selectionner jusqu'à la dernière ligne pleine ? dans i et dans j ?

En tout cas merci beaucoup pour ta réponse, car j'ai un code qui marche, sur lequel je peut m'appuyer pour mieux comprendre VBA. TOP :) !!!!!! Merci !!
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 678
dernier inscrit
arno12345678