suppression de lignes sous condition si différent de

zbee

XLDnaute Nouveau
Bonsoir à tous,

Je sais il y a de nombreux posts à ce sujet mais j'ai beau faire et refaire
cela ne fonctionne pas

Chaque jour, j'importe un tableau contenant plusieurs colonnes renseignées avec nb entêtes figées(de A à K)
nombre de lignes variables
La colonne C intitulée "entités" contient les valeurs CC1 ou CC2, CC3, CC4 etc...

J'aimerais supprimer toutes les lignes dont la valeur est différente de CC1 et de CC2 et de CC3
donc supprimer CC4, CC5, etc....

ci-dessous le code essayé:

sub effacer()
Dim i As Integer

For i = Range("a65536").End(xlUp).Row To 1 Step -1
If Cells(i, 1).Value <> "CC1" Or Cells(i, 1).Value <> "CC2" Then Rows(i).Delete

Next i

End Sub

Quelqu'un peut corriger et surtout expliquer?
par exemple que signifie .Row To 1 Step -1

merci
 

gilbert_RGI

XLDnaute Barbatruc
Re : suppression de lignes sous condition si différent de

essayer ceci

Code:
Sub effacer()
    Dim i As Integer
    For i = Range("a65536").End(xlUp).Row To 1 Step -1
          If Cells(i, 1).Value = "CC1" Or Cells(i, 1).Value = "CC2" Then
          'MsgBox "VRAI"
          Else
          'MsgBox "FAUX"
          Rows(i).Delete
          End If
    Next i
End Sub
 

zbee

XLDnaute Nouveau
Re : suppression de lignes sous condition si différent de

super ça marche
donc avec <>
ça fonctionne pas.... bizarre

j'avais trouvé cette variante:

Sub Effacer3()

Dim i As Integer
For i = Range("A65536").End(xlUp).Row To 2 Step -1
Select Case Range("A" & i)
Case "CC1", "CC2", "CC3"
Case Else: Rows(i).Delete
End Select
Next
End Sub

merci
 

job75

XLDnaute Barbatruc
Re : suppression de lignes sous condition si différent de

Bonjour le fil, le forum,

S'il y a beaucoup de lignes à supprimer, il vaut mieux utiliser le Filtre avancé (élaboré).

L'exécution est beaucoup plus rapide :

Code:
Sub Filtrer()
Dim h&
h = [C65536].End(xlUp).Row
Application.ScreenUpdating = False
[IV2].Formula = "=AND(C2<>""CC1"",C2<>""CC2"",C2<>""CC3"")"
[C1].Resize(h).AdvancedFilter xlFilterInPlace, CriteriaRange:=[IV1:IV2]
On Error Resume Next 'si aucune cellule filtrée
[C2].Resize(h - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
[C:C].AdvancedFilter xlFilterInPlace, "" 'affiche toutes les cellules
[IV2] = ""
End Sub
Fichier joint.

Edit pour zbee : le code du post #1 ne marche pas car il faut utiliser And au lieu de Or :

If Cells(i, 1).Value <> "CC1" And Cells(i, 1).Value <> "CC2" Then Rows(i).Delete

et bien sûr écrire Cells(i, 3) si l'on traite la colonne C...

A+
 

Pièces jointes

  • Filtrer(1).xls
    43.5 KB · Affichages: 63
  • Filtrer(1).xls
    43.5 KB · Affichages: 60
  • Filtrer(1).xls
    43.5 KB · Affichages: 69
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : suppression de lignes sous condition si différent de

Bonsoir à tous


Un piste proche mais sans l’utilisation de filtre ( ;) Y.Gr)
Code:
Sub Macro1()
' Macro enregistrée le 10/01/2012 par l'agrafe
Range("B1:B" & [A65536].End(xlUp).Row).FormulaR1C1 = "=IF(AND(LEFT(RC[-1],2)=""CC"",ISNUMBER(1*MID(RC[-1],3,1))),0,"""")"
Range("B1:B" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeFormulas, 1).EntireRow.Delete
End Sub
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 845
Messages
2 092 770
Membres
105 530
dernier inscrit
zazie