OVH Cloud OVH Cloud

effacer lignes selon critères

3 réponses
Avatar
didier
Bonjour, j'aimerais effectuer la procédure suivante :

Pour chaques cellules B2:B10 [prenons B5 par exemple]

si la cellule suivante [ B6 dans l'exemple ] lui est égale , a le meme
contenu en terme de chaine de caractère ,supprimer la ligne de cette cellule
suivante [ la ligne de la cellule B6 ] et recommencer l'opération avec pour
cellule initiale toujours B5

sinon refaire cette procédure avec la cellule suivante [ ici B6 qui n'a pas
été supprimée car B5 était différent de B6 ]

Je pensais à quelque chose du genre :

For Each cellule In Range("B2:B10")
If cellule.Value = ### Then
Rows(###).Select
Selection.Delete Shift:=xlUp
End If
Next cellule

Le but est donc de remplir les ### ... peut etre y a t-il plus simple ?
merci de m'éclairer .

3 réponses

Avatar
AV
Essaye ça :
Sub zzz()
For i = [B65536].End(3).Row To 1 Step -1
On Error Resume Next
If Cells(i, 2).Value = Cells(i - 1, 2).Value Then Cells(i, 2).Delete
Shift:=xlUp
Next
End Sub

AV
Avatar
lSteph
Bonsoir,

En général si l'on supprime des lignes vaut mieux remonter mais...
sinon refaire cette procédure avec la cellule suivante [ ici B6 qui n'a
pas
été supprimée car B5 était différent de B6 ]
....et si b6 était égale et donc a été supprimée, on arrête tout?


lSteph
"didier" a écrit dans le message de news:

Bonjour, j'aimerais effectuer la procédure suivante :

Pour chaques cellules B2:B10 [prenons B5 par exemple]

si la cellule suivante [ B6 dans l'exemple ] lui est égale , a le meme
contenu en terme de chaine de caractère ,supprimer la ligne de cette
cellule
suivante [ la ligne de la cellule B6 ] et recommencer l'opération avec
pour
cellule initiale toujours B5

sinon refaire cette procédure avec la cellule suivante [ ici B6 qui n'a
pas
été supprimée car B5 était différent de B6 ]

Je pensais à quelque chose du genre :

For Each cellule In Range("B2:B10")
If cellule.Value = ### Then
Rows(###).Select
Selection.Delete Shift:=xlUp
End If
Next cellule

Le but est donc de remplir les ### ... peut etre y a t-il plus simple ?
merci de m'éclairer .


Avatar
lSteph
selon toute hypothèse celle-ci devrait être la plus probable:

Sub cnet()
Dim i As Long
Application.ScreenUpdating = False
For i = [b65536].End(xlUp).Row To 2 Step -1
With Cells(i, 2)
If .Value = .Offset(-1, 0) Then .EntireRow.Delete
End With
Next
Application.ScreenUpdating = True
End Sub


'lSteph


"lSteph" a écrit dans le message de news:

Bonsoir,

En général si l'on supprime des lignes vaut mieux remonter mais...
sinon refaire cette procédure avec la cellule suivante [ ici B6 qui n'a
pas
été supprimée car B5 était différent de B6 ]
....et si b6 était égale et donc a été supprimée, on arrête tout?


lSteph
"didier" a écrit dans le message de
news:
Bonjour, j'aimerais effectuer la procédure suivante :

Pour chaques cellules B2:B10 [prenons B5 par exemple]

si la cellule suivante [ B6 dans l'exemple ] lui est égale , a le meme
contenu en terme de chaine de caractère ,supprimer la ligne de cette
cellule
suivante [ la ligne de la cellule B6 ] et recommencer l'opération avec
pour
cellule initiale toujours B5

sinon refaire cette procédure avec la cellule suivante [ ici B6 qui n'a
pas
été supprimée car B5 était différent de B6 ]

Je pensais à quelque chose du genre :

For Each cellule In Range("B2:B10")
If cellule.Value = ### Then
Rows(###).Select
Selection.Delete Shift:=xlUp
End If
Next cellule

Le but est donc de remplir les ### ... peut etre y a t-il plus simple ?
merci de m'éclairer .