condition dans une macro

Le
Benoît
Bonsoir,

je cherche la formule me permettant lorsque je déclenche une macro de
supprimer toutes les lignes dont le contenu dans la colonne X est différent
de Y.

merci pour votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21398401
Bonjour.
Essaie (avec prudence) :

Sub Test()
Dim Plage As Range
With ActiveSheet
Set Plage = Range([X1], [Y65000].End(xlUp))
Plage.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("T1:T2")
Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 1)
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
Plage.EntireRow.Delete
End With
End Sub

Cordialement.
Daniel

Bonsoir,

je cherche la formule me permettant lorsque je déclenche une macro de
supprimer toutes les lignes dont le contenu dans la colonne X est différent
de Y.

merci pour votre aide
Benoît
Le #21403061
Bonjour

j'ai plutot utilsé cette formule

For Each c In Range("X2:X600")

If c <> Y Then Rows(c.Row).Delete
Next

mais la macro met énormément de temps à s'effectuer

de plus je suis obligé de la faire tourner plusieurs fois de suite pour
avoir un résultat correct.

avez vous d'autres propositions ?

merci

"Benoît" discussion :
Bonsoir,

je cherche la formule me permettant lorsque je déclenche une macro de
supprimer toutes les lignes dont le contenu dans la colonne X est
différent de Y.

merci pour votre aide
Daniel.C
Le #21403151
Oui la mienne, avec cette précision que en T1, la cellule est vide et
en T2, il faut mettre la formule :
=ET(X2<>Y2;X2<>"")
X1 et Y1 étant censés contenir des entêtes :

Sub Test()
Dim Plage As Range
With ActiveSheet
Set Plage = Range([X1], [Y65000].End(xlUp))
Plage.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("T1:T2")
Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 1)
Set Plage = Plage.SpecialCells(xlCellTypeVisible)
Plage.EntireRow.Delete
End With
End Sub

Daniel

Bonjour

j'ai plutot utilsé cette formule

For Each c In Range("X2:X600")

If c <> Y Then Rows(c.Row).Delete
Next

mais la macro met énormément de temps à s'effectuer

de plus je suis obligé de la faire tourner plusieurs fois de suite pour avoir
un résultat correct.

avez vous d'autres propositions ?

merci

"Benoît" discussion :
Bonsoir,

je cherche la formule me permettant lorsque je déclenche une macro de
supprimer toutes les lignes dont le contenu dans la colonne X est différent
de Y.

merci pour votre aide
FdeCourt
Le #21403141
Salut,

Comme tu supprimes des lignes, tu dois partir du bas et remonter. A
chaque fois que tu supprimes une lignes, tu ne fait pas la comparaison
avec la qui était originellement la suivante, puisqu'elle à pris la
place de la ligne supprimé, et ne sera pas à nouveau étudié.
Imaginons que tu supprime la ligne B
Alors la ligne qui était C devient B
B ayant déjà été instruit, Excel passera directement à la ligne C , qui
était avant la suppression la ligne D
Ainsi la ligne qui était originellement C ne sera pas étudiée, d'ou
l'obligation de partir du bas et de remonter.

Cordialement,

F.
Publicité
Poster une réponse
Anonyme