Rechercher texte dans cellule et suppression

Résolu/Fermé
Morbonnat Messages postés 18 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 21 janvier 2009 - 26 avril 2008 à 21:04
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 avril 2008 à 12:39
Bonjour,

Je viens vous demander de l'aide car cela fait 2 jours que je suis dessus et je suis sur le point d'exploser !!!

Sous Excel, je voudrais faire une macro pour supprimer les lignes qui contienne un certain texte. Il me faut donc recherche ce texte dans la colonne A, et s'il est présent supprimé la ligne entière. Cela pour 2 mots différent.

J'ai créer cette macro : (Dans ce cas, il faut supprimer les ligne dont la cellule A contient le mot "president" ou le mont "directeur". Si la cellule contient "président d'honneur" ou "directeur général" je veux que les lignes soient supprimée aussi...)

Do

If Cells.Find(What:="president").Activate Then

selection.EntireRow.Delete

Else: Do

Cells.Find(What:="directeur").Activate

selection.EntireRow.Delete

Loop

End If

Loop

End Sub

Le probleme est que une fois que le mot "president" n'est plus trouvé, il ne cherche pas s'il il reste des cellules avec "directeur". Il m'affiche "erreur d'execution '91'...

HELP !!!

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
27 avril 2008 à 12:39
Bonjour,

ci dessous proposition qui supprime les mots voulus (autant que tu veux) et ceux qui suivent les mots choisis

par exemple: "président" mais aussi "président parachute doré" ou "camarade syndiqué" (pour faire contre poids) ;-)

Sub virerleschefs()
Dim tablo()
Dim cptr1 As Long, cptr2 As Long, nbre as long, lig As Long
Dim mot As String

tablo = Array("président", "directeur", "mon général", "camarade", "tonton")

Application.ScreenUpdating = False

While cptr1 <= UBound(tablo)
mot = tablo(cptr1) & "*"
nbre = Application.CountIf(Range("A1:A50000"), mot)
For cptr2 = 1 To nbre
lig = Application.Match(mot, Range("A1:A50000"), 0)
Rows(lig).Delete
Next
cptr1 = cptr1 + 1
Wend
End Sub

si tu veux enlever aussi avant le mot. Par exemple "mon cher tonton"

mot="*" & tablo(cptr1) & "*"

(ton système Find et gestion d'erreur est super-casse-g...)

bonne fin de WE
Michel
1
Morbonnat Messages postés 18 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 21 janvier 2009 1
27 avril 2008 à 01:50
J'ai avancé depuis le dernier message. Le code suivant me permet de supprimé les lignes que je veux cependant la macro se termine par un message d'erreur ?!? Ceci m'enpéche d'ajouter un troisième mot a cherche.

Je ne comprend pas l'érreur étant donné que les 2 lignes sont identique !!!

Je vous laisse ici mon code pour que vous puissiez le critquer...:


Sub select_supr()

Do
On Error GoTo A1

Cells.Find(What:="directeur").Activate

selection.EntireRow.Delete

Loop
A1:

Do
On Error GoTo B1

Cells.Find(What:="président").Activate

selection.EntireRow.Delete

Loop

B1:
End Su
0