Suppression de ligne via macro

Bonjour,

Je veux supprimer les lignes de ma feuille Excel lorsqu'il n'y a rien d'écrit dans la colonne C. Cependant le code que j'utilise ne m'efface qu'une ligne à la fois.. Je sais que le problème vient du fait que lorsque je suprime une ligne la suivante prend sa place ect d'ou le non effacement des autre ligne... par contre je ne sais pas comment mettre en application cette hypothèse... (PS: j'ai trouvé dans ce forum un code mais qui ne marche pas dans mon cas... je le mets a la suite de mon code)

MON CODE
Sub Macro1()
'
' Macro1 Macro

Dim i As Integer
For i = 1 To 50
If Range("E" & i) = "" Then
Range("E" & i).EntireRow.Delete
Else
End If
Next
'
End Sub

LE CODE QUE J'AI TROUVE :
Sub Macro1()
'
'
Dim I As Long
Dim Plage As Range
Dim c As Integer

For c = 1 To 5
Set Plage = Range("E2:E" & Range("E2").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value = "" Then
Plage.Cells(I).EntireRow.Delete
End If
Next

End Sub

Je vous remercie par avance ;)
Configuration: Windows 2000
Internet Explorer 6.0

4 réponses

  1. En fait tu utilises une boucle for mais avec une boucle While ce sera mieux

    Voila le code

    Sub Macro1()
    '
    ' Macro1 Macro

    Dim i As Integer
    While not (range ("a" & i )=""))

    "je parcours toutes les lignes jusqu'à ce que la colonne "a" soit à blanc

    If Range("E" & i) = "" Then
    Range("E" & i).EntireRow.Delete
    Else
    i=i+1

    "je saute de ligne uniquement si je ne supprime pas

    End If
    wend
    '
    End Sub

    A+

    Nico
    1. Désolé encore de vous importuner mais lorsque j'utilise ce code sur excel 2000, j'ai l'erreur suivante qui s'affiche : "la methode range de l'objet global a échoué" alors que ca marche sur excel 2003...
      :(

      Sub Macro1()
      '
      ' Macro1 Macro

      Dim i As Integer
      While Not (Range("B" & i) = "")

      'je parcours toutes les lignes jusqu'à ce que la colonne "a" soit à blanc

      If Range("B" & i) = "" Then
      Range("B" & i).EntireRow.Delete
      Else
      i = i + 1

      'je saute de ligne uniquement si je ne supprime pas

      End If
      Wend
      '
      End Sub
      1. Finalement j'ai trouvé une solution... La parade est de refaire un nombre de boucle qui permet d'effacer tout les blanc considérés :

        Sub Macro1()
        '
        ' Macro1 Macro

        Dim i As Integer
        Dim j As Integer

        For j = 1 To 40 <= je refait 40 fois l'opération.... (c'est beaucoup mais ca marche :D
        For i = 1 To j

        If Range("B" & i) = "" Then
        Range("B" & i).EntireRow.Delete
        Else
        End If

        Next
        Next

        End Sub