1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

suppression de plusieurs lignes contenant un même mot

Discussion dans 'Forum Excel' démarrée par spyderdvd, 7 Janvier 2019.

  1. spyderdvd

    spyderdvd XLDnaute Nouveau

    Inscrit depuis le :
    29 Décembre 2018
    Messages :
    10
    "J'aime" reçus :
    0
    Bonjour à tous,

    J'ai crée cette macro pour le fichier joint:
    sub Martin
    'Supprim ligne avec MARTIN
    '
    nb_ligne = Sheets("TEST").Range("A5").End(xlDown).Row
    For i = 5 To nb_ligne
    If Sheets("TEST").Range("G" & i).Value Like "*Martin*" Then
    Sheets("TEST").Rows(i).Delete
    Else
    End If
    Next i
    '
    End Sub

    Par contre j'ai fait ceci pour effacer toutes les lignes contenant Martin mais le problème est que
    lorsque la ligne suivante contient également Martin celle-ci ne s'efface pas?
    Je pense que cela vient du fait que lorsqu'une 1ère ligne (exemple TEST ligne 7)
    contenant Martin est supprimée, la ligne suivante (exemple TEST ligne 8) devient ligne 7
    et donc comme ma macro demande de passer à la suivante celle-ci ne s'efface pas.

    Avez vous une solution à mon problème qui est d'effacer toutes les lignes contenant le mot Martin ?

    Merci d'avance.
     

    Pièces jointes:

    • TEST.xls
      Taille du fichier:
      28 Ko
      Affichages:
      22
  2. Chargement...


  3. cp4

    cp4 XLDnaute Impliqué

    Inscrit depuis le :
    7 Novembre 2015
    Messages :
    517
    "J'aime" reçus :
    32
    Utilise:
    Excel 2010 (PC)
    Bonsoir,
    Il faut commencer à supprimer par le bas de la feuille.
    En commençant comme tu as fait le numéro de ligne va changer
    et par conséquent des lignes seront sautées.
    Code (Visual Basic):
    Option Explicit
    Sub Martin()
       Dim nb_ligne As Integer, i As Integer
       'Supprim ligne avec MARTIN
       '
       With Sheets("TEST")
          nb_ligne = .Range("A" & Rows.Count).End(xlUp).Row
          For i = nb_ligne To 5 Step -1
             If .Range("G" & i).Value Like "*Martin*" Then
                .Range("A" & i).EntireRow.Delete
             Else
             End If
          Next i
         End With
    End Sub
     
  4. Jacky67

    Jacky67 XLDnaute Accro

    Inscrit depuis le :
    12 Juin 2016
    Messages :
    1183
    "J'aime" reçus :
    170
    Utilise:
    Excel 2007 (PC)
    Bonjour,
    Pour supprimer des lignes dans le genre de code que tu utilises et pour éviter le problème que tu rencontres, il faudra commencer la boucle par la fin.
    change cette ligne
    For i = 5 To nb_ligne
    par
    For i = ligne To 5 Step -1
     
  5. Jacky67

    Jacky67 XLDnaute Accro

    Inscrit depuis le :
    12 Juin 2016
    Messages :
    1183
    "J'aime" reçus :
    170
    Utilise:
    Excel 2007 (PC)
    Désolé pour le doublon cp4
     
  6. spyderdvd

    spyderdvd XLDnaute Nouveau

    Inscrit depuis le :
    29 Décembre 2018
    Messages :
    10
    "J'aime" reçus :
    0
    Merci à vous ça marche !!! c'est cool !!!
     
  7. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26037
    "J'aime" reçus :
    2235
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonsoir spyderdvd, cp4, Jacky67,

    S'il y a beaucoup de lignes à supprimer cette macro sera beaucoup plus rapide :
    Code (Text):
    Sub SupprimerMartin()
    Application.ScreenUpdating = False
    On Error Resume Next 'si aucune SpecialCell
    With Sheets("TEST")
        If .FilterMode Then .ShowAllData 'si la feuille est filtrée
        With .Range("A1", .UsedRange)
            .Columns("G").Insert xlToRight
            .Columns("G") = "=1/ISERROR(SEARCH(""Martin"",RC[1]))"
            .Columns("G") = .Columns("G").Value 'supprime les formules
            .Sort .Columns("G"), xlAscending, Header:=xlNo 'tri pour grouper et accélérer
            .Columns("G").SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
            .Columns("G").Delete xlToLeft
        End With
        With .UsedRange: End With 'actualise les barres de défilement
    End With
    End Sub
    A+
     
    zebanx et arthour973 aiment cela.
  8. spyderdvd

    spyderdvd XLDnaute Nouveau

    Inscrit depuis le :
    29 Décembre 2018
    Messages :
    10
    "J'aime" reçus :
    0
    Bonsoir Job75,
    J'ai essayé ta macro et celle-ci m'efface la colonne F (équilibres) et me créer une colonne A avec des 1 ou #DIV/O!
    Par contre les MARTIN sont encore présent, j'ai mis une copie d'écran. en pièce jointe.
    Sinon c'est pas grave, la première solution fonctionne.
    A+
     

    Pièces jointes:

    • TEST.JPG
      TEST.JPG
      Taille du fichier:
      133.8 Ko
      Affichages:
      18
  9. mapomme

    mapomme XLDnaute Barbatruc

    Inscrit depuis le :
    1 Novembre 2011
    Messages :
    5150
    "J'aime" reçus :
    846
    Sexe :
    Masculin
    Habite à:
    Angers
    Utilise:
    Excel 2010 (PC)
    Bonsoir @spyderdvd, @job 75 ;),

    Essayez, peut-être, de rajouter à la fin de l'instruction Sort:
    Code (Visual Basic):
    , Orientation:=1
     
    Dernière édition: 9 Janvier 2019
  10. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26037
    "J'aime" reçus :
    2235
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Re, salut mapomme,

    Effectivement si spyderdvd a fait auparavant un tri horizontal il n'a que ce qu'il mérite !

    A+
     
  11. spyderdvd

    spyderdvd XLDnaute Nouveau

    Inscrit depuis le :
    29 Décembre 2018
    Messages :
    10
    "J'aime" reçus :
    0
    Merci à vous 2 avec:
    , Orientation:=1
    ça marche
     
  12. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26037
    "J'aime" reçus :
    2235
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    C'est bien de nous remercier mais vous pourriez aussi répondre à ceci :
     
  13. spyderdvd

    spyderdvd XLDnaute Nouveau

    Inscrit depuis le :
    29 Décembre 2018
    Messages :
    10
    "J'aime" reçus :
    0
    Bonjour Job 75,
    Désolé pour ma réponse un peu tardive mais après quelque recherche effectivement il y bien eu un tri horizontal auparavant
    car j'ai utilisé une macro d'une première demande de déplacement de colonne et ensuite j'ai utilisé votre macro
    pour supprimer les lignes contenant MARTIN.

    Bonne soirée.
     

Partager cette page