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. 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
    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. 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