VBA Supprimer plage filtrée dans une BD

Bonjour à tous,

Dans le but de supprimer une partie entière de la base,

Base de données avec filtre élaboré sur place. (5000 lignes)

après avoir mis le critère de sélection,

Peut-on sélectionner ou supprimer directement les lignes filtrées (lignes entières)

la base est triée, donc les lignes sont contigues.

Le critère est en C9 et la colonne entière est nommée "Désignation"

Je voudrais éviter d'avoir à balayer les 5000 lignes répondant au critère comme ceci :

    For Each Cel In [Désignation]
        If Cel.Value = Range("base!c9") Then Cel.EntireRow.Delete
    Next Cel

alors que je n'ai qu'une cinquantaine de lignes environ à traiter.

Pensez-vous que cela soit possible et comment ?

Bonne journée

Claude.

bonjour,

Bah ! T'esssaye de sélectionner les enregistrement filtrés et tu supprime. Au mieux ça marche, au pire ça marche pas : Si c'est bon, très bien. sinon tu sors sans enregistrer...

Mais pour moi ça devrait marcher !

A+

Bonjour le Duboix, Galopin, le forum,

Pour supprimer des lignes filtrées par VBA je m'y prendrai comme ceci:

Sub SupprimerLignesFiltres()
    Dim Plg As Range
    'Retenir toute la plage de données sans la ligne d'entête
    With Range("Destination")
        Set Plg = .Offset(1).Resize(.Rows.Count - 1)
    End With
    'N'en retenir que les cellules visibles
    'S'il n'y en a aucune, SpecialCells lève une erreur
    On Error GoTo Fin
    Set Plg = Plg.SpecialCells(xlCellTypeVisible)
    'Supprimer les lignes correspondantes
    Plg.EntireRow.Delete
    'Réafficher toutes les lignes restantes de la feuille
    Range("Destination").Parent.ShowAllData
Fin:
End Sub

A beintôt

Bonsoir à tous,

hasco, Ton code fonctionne parfaitement et je t'en remercie.

galopin01, le problème c'était justement de pouvoir localiser, sélectionner !

Merci à vous deux

Amicalement

Claude.

capture

Bonjour,

Je n'arrive pas a faire fonctionner le code proposé.

Ds mon exemple, mon filtrage est situé ligne 4 et les lignes a effacées commence en A5.

J'ai essaye 2 choses mais rien ne marche:

Selection.AutoFilter Field:=19, Criteria1:="0,0"

Range("a5",[a65536].End(xlUp).Address).SpecialCells(xlCellTypeVisible).EntireRow.Delete

et:

Selection.AutoFilter Field:=19, Criteria1:="0,0"

Dim Plg As Range

With Range("a5",[a65536].End(xlUp).Address)

Set Plg = .Offset(1).Resize(.Rows.Count - 1)

End With

On Error GoTo Fin

Set Plg = Plg.SpecialCells(xlCellTypeVisible)

Plg.EntireRow.Delete

Ds le premier cas, cela m'efface la ligne de filtrage, ds l'autre ca me masque juste les lignes mais ne les effacent pas.

Merci de votre aide

Bonjour

J'ai testé sur un de mes fichiers et ce code supprime les lignes visibles :

Sub SUPPRIME()
 Range(Range("C10"), Selection.End(xlDown)).EntireRow.Delete
End Sub

Amicalement

Nad

Bonsoir à tous,

Aurais-je oublié de mettre ce fil en résolu !!

picflute,

J'ai vu que tu as ouvert un poste à ce sujet, ajoute-y un bout de fichier,

on y répondra

Claude

Nad, j'ai essayé ton code: meme resultat: lignes non effacées.

Claude, j'y vais de ce pas.

Merci

Rechercher des sujets similaires à "vba supprimer plage filtree"