Macro pour supprimer une ligne !

bre 79 -  
 bre79 -
Bonjour,

je débute en VBA sur excel 2007, et je voudrai supprimer toutes les lignes qui ne contiendrai pas un texte connu comme " abc " dans une plage donnée.

j'ai fait ceci mais le problème c'est que ça me supprime la 1ère ligne et non celle qui contient le texte " abc "

sub supprimer()
'
' supprimer Macro
'

'
For Each Cell In Range("C9,C100")
If Cell.Value = " abc " Then ActiveCell.EntireRow.Select
Selection.Delete
Next
Range("A1").Select
End Sub

Merci pour votre aide

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    remplace
    For Each Cell In Range("C9,C100")

    par
    For Each Cell In Range("C9:C100")
    0
    1. bre 79
       
      bonjour, avec ta solution, toutes mes lignes sont éffacées alors que moi je souhaite conserver la ou les lignes qui contiennent le texte "abc"

      As tu une solution ?
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      re,
      dans ta macro, tu veux supprimer les lignes des cellules de valeur " abc " or tu me dis vouloir supprimer celles qui ne contiennent pas " abc "
      question dans les cellules peut il y avoir " abc " encadré par d'autres données genre "ssss abc 34zzz" et alors supprimer la ligne correspondante .
      0
  2. bre 79
     
    non, ce que je veux faire, c'est supprimer toutes les lignes ne contenant pas un texte précis comme "abc" et conserver la ligne contenant ce texte.

    j'espère avoir été plus précis!
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Sub supprimer()
    For Each cell In Range("C9:C100")
    If cell.Value <> " abc " Then Rows(cell.Row).Delete
    Next
    End Sub
    0
    1. bre 79
       
      ta proposition m'efface bien les lignes mais plutôt bizarrement ! Et même que si je lance la macro plusieurs fois successivement, alors toutes les lignes disparaissent sans tenir compte de mon texte ???

      En fait, la ou les lignes ayant mon texte ( mon texte correspond à des noms de personne comme Dupond, Durand,... ) et moi je veux garder toutes les lignes qui auraient dans la colonne C "Dupond" et supprimer toutes les autres qui auraient dans la colonne C "Durand, Duprés...). Je ne sais pas si je m'explique bien.

      Si tu vois une solution, merci de prendre un peu de ton temps.
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ton lien #1
      et je voudrai supprimer toutes les lignes qui ne contiendrai pas un texte connu comme " abc " dans une plage donnée.
      ta macro
      If Cell.Value = " abc " Then ActiveCell.EntireRow.Select
      Selection.Delete
      ou tu cherches a éliminer les lignes comprenant " abc " (les espaces avant et après c'est quoi ?)

      ton lien #2
      moi je souhaite conserver la ou les lignes qui contiennent le texte "abc" (plus d'espace?)

      ton lien#6
      moi je veux garder toutes les lignes qui auraient dans la colonne C "Dupond" y'a plus d'espace avant et après le mot (hé oui c'est important: " abc " est différend se "abc")?


      Je ne sais pas si je m'explique bien. NON
      0
    3. bre 79
       
      Désolé pour ces explications scabreuses ! Je reprends tout

      Sur une feuille, les cellules d'une colonne contiennent que des noms de personne. Il n'y a pas d'espace avant le nom ni après.
      Prenons par exemple la colonne C, en C5 elle contient Durant
      en C6 elle contient Dupont
      en C7 elle contient Duval
      en C8 elle contient Dupont ( à nouveau )
      en C9 elle contient Duprés
      en C10 elle contient Dujardin
      en C11 elle contient Dupont ( à nouveau )
      Je veux conserver que les lignes dont le nom de la colonne C est Dupont ( lignes 6 ; 8 ; 11 ) et supprimer toutes les autres c.a.d. les lignes 5 ; 7 ; 9

      Est-ce possible ?

      N.B. : j'espère que tu comprendras bien cette fois ci mon problème.
      0
    4. tchernosplif Messages postés 714 Statut Membre 249
       
      ça fonctionne très bien, il suffit juste de ne pas laisser d'espace dans "Dupond"

      Sub supprimer()
      For Each cell In Range("C9:C100")
      If cell.Value <> "Dupond" Then Rows(cell.Row).Delete
      Next
      End Sub
      0
    5. bre79
       
      La solution ci-dessous ne me supprime pas toutes les lignes souhaitées.

      Sub supprimer()
      For Each cell In Range("C9:C100")
      If cell.Value <> "Dupond" Then Rows(cell.Row).Delete
      Next
      End Sub

      Par contre j'ai écrit cette boucle dans ma macro, et elle répond entièrement à mon problème.

      Dim i As Integer
      For i = 100 To 10 Step -1
      If Cells(i, 6) <> "Dupond" Then
      Rows(i).Delete
      End If
      Next

      Merci à tous de votre aide.
      0