Suppression de ligne via macro

alilou -  
 aliloo -
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. nicodoudou Messages postés 48 Statut Membre 44
     
    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
    0
  2. alilou
     
    Merci Nico pour ton aide ca marche nockel :D
    0
  3. aliloo
     
    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
    0
  4. aliloo
     
    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
    0