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 ;)
A voir également:

4 réponses

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
alilou
 
Merci Nico pour ton aide ca marche nockel :D
0
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
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