Pbm dans une boucle

Résolu
ced -  
 ced -
Bonjour,

Je cherche à creer une macro qui va supprimer les lignes pour lesquelles la 1ere colonne est vide. Le pbm est que si j'ai 2 lignes vides consécutives, la boucle va sauter la 2eme (à cause l'iteration de i)

est il utile de préciser que je ne suis pas programmeur ? :)


Sub cleanup()

endrow = Cells(1, 3).CurrentRegion.Rows.Count
For i = 2 To endrow
If Cells(i, 1) = "" Then
Rows(i).Select
Selection.Delete Shift:=xlUp
Else
End If
Next

End Sub

Merci d'avance pr vos coup de pouce!

3 réponses

Py_rex Messages postés 241 Date d'inscription   Statut Membre Dernière intervention   52
 
Bonsoir,

Sub cleanup()

endrow = Cells(1, 3).CurrentRegion.Rows.Count
For i = 2 To endrow
If Cells(i, 1) = "" Then
Rows(i).Select
Selection.Delete Shift:=xlUp
i = i - 1
endrow = endrow - 1
Else
End If
Next

End Sub
1
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
ha oui, le endrow-1 sinon il se pete la gueule en fin de tableau...
par conter, on peut virer le Else qui ne sert à rien ..
0
ced
 
Merci Pyrex, le pbm est que la valeur de endrow ne se décrémente pas car elle est définie au niveau du for. je crois qu'il faut que je passe par une 2eme condition du style if endrow<i then exit for ?
0
ced
 
hey ça marche ! Merci pour votre aide, genial!

Sub Macro13()

Sheets("test").Select
endrow = Cells(1, 3).CurrentRegion.Rows.Count
For i = 2 To endrow
If endrow < i Then Exit For Else
If Cells(i, 1) = "" Then
Rows(i).Select
Selection.Delete Shift:=xlUp
endrow = endrow - 1
i = i - 1
Else
End If
Next

End Sub
1
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
et en faisant ca:



Sub cleanup()

endrow = Cells(1, 3).CurrentRegion.Rows.Count
For i = 2 To endrow
If Cells(i, 1) = "" Then
Rows(i).Select
Selection.Delete Shift:=xlUp
i=i-1
end if
Next

End Sub
0