Macro excel et suppression de ligne

Fermé
mimi - 6 nov. 2005 à 18:52
 Aussie44 - 17 juin 2013 à 05:35
Bonjour à tous

Je souhaite supprimer par macro toutes les lignes dont la valeur est différente de 800 dans la colonne E (de E2 à la fin du champ)
Mais ma macro me laisse des lignes qu'elle aurait due supprimer.
Ou est donc l'erreur ?
Merci pour votre aide
Mimi

Range("E2").Select
Range(Selection, Selection.End(xlDown)).Select
Dim vCellule As Object
For Each vCellule In Selection
If vCellule.Value <> 800 Then
vCellule.EntireRow.Delete
End If
Next

7 réponses

Bonjour,

Si ta première condition est fausse ta boucle s'arrête! 2 solutions possible soit tu veux que toutes des condition soit vrai dans ce cas
(principe du AND)
if cells(ligne, colonne).text(ou value) = XX then
if cells(ligne, colonne).text(ou value) = XX then
if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if
end if
end if

plus simplement

if cells(ligne, colonne).text(ou value) = XX then AND cells(ligne, colonne).text(ou value) AND cells(ligne, colonne).text(ou value)
rows(ligne).delete
ligne = ligne -1
end if


si tu veu que dès qu'une de tes condition soit vrai la ligne est supprimée (principe du OR)

if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if
if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if
if cells(ligne, colonne).text(ou value) = XX then
rows(ligne).delete
ligne = ligne -1
end if

ou plus simplement

if cells(ligne, colonne).text(ou value) = XX then or cells(ligne, colonne).text(ou value) or cells(ligne, colonne).text(ou value)
rows(ligne).delete
ligne = ligne -1
end if
15