Recherche et suppression de lignes en VBA

loto

XLDnaute Occasionnel
Bonjour,

Je souhaiterai automatiser la suppression de lignes qui contiennent par exemple "10" en colonne A

Comment écrire de supprimer les lignes conrrespondantes?

Merci de votre aide précieuse
 

Staple1600

XLDnaute Barbatruc
Re : Recherche et suppression de lignes en VBA

Bonjour loto, pierrejean

En utilisant le filtre automatique
( ne fonctionne que si les cellules sont égales à 10
pas si elles contiennent 10)
Code:
Su suppr_lignes
With [A1]
    .AutoFilter Field:=1, Criteria1:="10"
    .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
End Sub
Pour les cellules =10 ou contenant 10 (avec le filtre élaboré)
Ex
A2: 10
A3:11
A4:aa10
A5 10bb
A6:12

Résultats du filtre : A2;A4;A6 sont supprimées (les lignes)
Code:
Sub suppr_FiltreElabore()
Dim rF As Range
    With ActiveSheet
        .Range("C2").FormulaR1C1 = "=OR(COUNTIF(RC[-2],""10""),COUNTIF(RC[-2],""*10*""))"
        .Range("A1:A" & [A65536].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("C1:C2"), Unique:=False
        Set rF = .Range("_FilterDataBase")
        rF.Offset(1, 0).Resize(rF.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        .ShowAllData
        .Range("C2").Clear
    End With
End Sub
 
Dernière édition:

loto

XLDnaute Occasionnel
Re : Recherche et suppression de lignes en VBA

Je voudrais pas trop utiliser de filtre élaboré.

La macro de PierreJean me semble simple Elle marche mais seulement y'a un bug à la fin de l'éxécution et en débogage j'ai

for n=Range("A65536").End(xlup).row to 1 step -1
if range("A" & n)="10" then rows(n).delete ' 10 au lieu de "10" si chiffre et non texte
next n

qu'est ce que c'est ce bazar?
En fait je crois bien qu'elle tourne en rond et que quand elle voit qu'il n'y a pas la valeur recherchée, elle plante.
Comment on peu contourner cela?

Merci, A+
 

pierrejean

XLDnaute Barbatruc
Re : Recherche et suppression de lignes en VBA

Re

Si bazar il y a , il n'est surement pas dans ma macro

Faire le test dans le fichier joint
 

Pièces jointes

  • loto.zip
    6.1 KB · Affichages: 58
  • loto.zip
    6.1 KB · Affichages: 56
  • loto.zip
    6.1 KB · Affichages: 63

Staple1600

XLDnaute Barbatruc
Re : Recherche et suppression de lignes en VBA

Bonjour pierrejean


Je confirme que le code de pierrejean fonctionne parfaitement
sans aucun bug ni bazar ;)


(Le contraire m'eut étonné chez Maître pierrejean
king.gif
)
 
Dernière édition:

loto

XLDnaute Occasionnel
Re : Recherche et suppression de lignes en VBA

C'est dingue! Ca bugue avec mon fichier, ça marche avec le tien
Bon, je crois que que j'ai identifié la cause, ça doit prvenir du format:

Sur ton fichier, Si tu mets une en tête de colonne "nom" et "10" dans ta macro ça marche mais si tu mets 10, ç'est fait mon bug
Et le hic, c'est que les données que je veux supprimer sont au format date heure et "10" n'est pas reconnu comme une donnée à supprimer alors que 10est reconnu, supprimé mais génère un bug à la fin

Tu comprends?
 

Staple1600

XLDnaute Barbatruc
Re : Recherche et suppression de lignes en VBA

Re

En reprenant le code de pierrejean
Code:
Sub code_pierre_jean_bis()
Dim Rng As Range
For n = Range("A65536").End(xlUp).Row To 2 Step -1
Set Rng = Range("A" & n)
If Hour(Rng) Or Minute(Rng) = 10 Then Rows(n).Delete ' 10 au lieu de "10" si chiffre et non texte
Next n
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Recherche et suppression de lignes en VBA

Re

dans le cas ou cela ne fonctionnerait pas avec le code de Staple

poste un fichier avec quelques lignes

Sinon avec un format heures:

Code:
for n=Range("A65536").End(xlup).row to 1 step -1
  if range("A" & n)=10/24 then rows(n).delete
next n
 

Discussions similaires