VBA (Excel) - Supprimer une ligne

Résolu
XRay -  
dlescot Messages postés 1 Statut Membre -
Hello !

J'aimerai savoir comment rechercher une valeur dans une colonne et supprimer la ligne correspondante...
Voila ce que j'ai fait :

    Range("A1").Select
    Do While ActiveCell <> "toto"
        ActiveCell.Offset(1, 0).Select
    Loop
        
    Selection.Delete Shift:=xlUp


En fait, je n'arrive pas à sélectionner la ligne entière pour la supprimer...

QQ'un a une soluce ?...
Merci d'avance ! ;o)

14 réponses

  1. Mangda
     
    Et tout simplement un
    Selection.EntireRow.Delete

    Ca ne serait pas plus simple ?
    Ou un peu plus complique, mais plus simple que ce qui a ete propose:
    Rows(Selection.Row).Delete shift:=xlUp


    Mais je vis au moins deux problemes a ton code:
    • Si toto apparaît deux fois, il ne sera supprimer qu' une seule fois
    • Si toto n’apparaît jamais, a la ligne 65536 tu vas avoir une erreur sur le offset.


    Ne sachant pas combien de ligne tu as, tu pourrais mettre comme code:
    For i = Cells(1, 1).CurrentRegion.Rows.Count To 1 Step -1
       If Cells(i, 1).Value = "toto" Then Cells(i, 1).EntireRow.Delete
    Next

    en sachant que tu peux remplacer Cells(1, 1).CurrentRegion.Rows.Count par le nombre de lignes correspondant.
    73
    1. fyj
       
      vous êtes hyper fort !jhhhhhhhhhhhhhhhhhhhhhh
      0
    2. Nhan
       
      Merci Mangda
      0
    3. Annalord
       
      Annalord
      J'ai un peu le même problème
      J'ai copié des tutos sur le net avec open office mais je n'arrive pas a supprimer les lignes sans enlever le texte
      Quelqu'un a peu être une astuce
      Merci d'avance
      0
    4. YOUHA
       
      Sub supprimer_lignes()
          ThisWorkbook.Worksheets("Feuil3").Activate
          j = 1
          For i = 1 To Range("C65536").End(xlUp).Row   'calcule la dernière cellule remplie dans la colonne 3 colonne C
              If Cells(j, 3).Value = "pas de défaillance" Then
                  Cells(j, 3).EntireRow.Delete
              Else
                  j = j + 1
              End If
          Next i
          MsgBox "Macro terminée"
      End Sub
      0