Rechercher texte dans cellule et suppression

Résolu
Morbonnat Messages postés 19 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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 !!!

Configuration: Windows XP
Firefox 2.0.0.14

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. Morbonnat Messages postés 19 Statut Membre 1
     
    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