Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA:supprimer ligne si plusieurs conditions.

1 réponse
Avatar
Genyal_F
bonjour à tous,

J'ai un tableau avec 4 colonnes:
colonne A: Numéro de reference
colonne B: Marque voitures
colonne C: couleur
colonne D: Année

J'aimerais écrire en vba:

Si ligne contient "BMW" en colonne B et "1998" en colonne D
ou
Si ligne contient "BMW" en colonne B et "2004" en colonne d

alors supprimer la ligne:

Voila ce que j'ai pu écrire,

--------------------------------------------------------------------

Sub toto()

Dim nbligne As Integer

nbligne = Range("A1").CurrentRegion.Rows.Count

For i = 1 To nbligne
Range("b2").Select
If ActiveCell.Value = "BMW" Or ActiveCell.Offset(0, 2).Value = "1998"
Then Selection.EntireRow.Delete

else if ActiveCell.Value = "BMW" Or ActiveCell.Offset(0, 2).Value =
"2004" Then Selection.EntireRow.Delete
end if
Next i
End Sub

1 réponse

Avatar
Philippe.R
Bonjour,
Pour supprimer des lignes, partir du bas est toujours préférable :

Sub totobis()

Dim nbligne As long
nbligne = Range("A1").CurrentRegion.Rows.Count

For i = nbligne to 1 step -1

If Cells(2,i).Value = "BMW" and cells(4,i).Value = "1998" Then
Selection.EntireRow.Delete

elseif Cells(2,i).Value = "BMW" and cells(4,i).Value ="2004" Then
Selection.EntireRow.Delete
end if
Next i
End Sub
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Genyal_F" a écrit dans le message de news:
d6lt65$sfj$
bonjour à tous,

J'ai un tableau avec 4 colonnes:
colonne A: Numéro de reference
colonne B: Marque voitures
colonne C: couleur
colonne D: Année

J'aimerais écrire en vba:

Si ligne contient "BMW" en colonne B et "1998" en colonne D
ou
Si ligne contient "BMW" en colonne B et "2004" en colonne d

alors supprimer la ligne:

Voila ce que j'ai pu écrire,

--------------------------------------------------------------------

Sub toto()

Dim nbligne As Integer

nbligne = Range("A1").CurrentRegion.Rows.Count

For i = 1 To nbligne
Range("b2").Select
If ActiveCell.Value = "BMW" Or ActiveCell.Offset(0, 2).Value = "1998" Then Selection.EntireRow.Delete

else if ActiveCell.Value = "BMW" Or ActiveCell.Offset(0, 2).Value = "2004" Then
Selection.EntireRow.Delete
end if
Next i
End Sub