Pbm dans une boucle

Résolu/Fermé
ced - 26 mai 2009 à 17:01
 ced - 26 mai 2009 à 17:11
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 samedi 12 juillet 2008 Statut Membre Dernière intervention 22 juin 2015 52
26 mai 2009 à 17:05
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
26 mai 2009 à 17:08
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
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
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 mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 193
26 mai 2009 à 17:04
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