Supprime lignes filtrées via VBA

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
Je travaille de pus en plus en utilisant la fonction TABLEAU et certaines macros qui fonctionnaient avant ne fonctionnent plus si utilisation de tableaux.
Tout est détaillé dans le fichier joint.
Pour l'exemple, j'ai donc créé trois onglets identiques pour expliquer ma problématique.
Le premier onglet contenant les données d'origine que je copie-colle dans mes deux autres onglets pour faire des tests.
Un onglet AVEC, est donc identique à celui DONNEE mais avec les données définies sous forme de TABLEAU
Un onglet SANS, identique à DONNEE (sans définition de tableau)
Je souhaite donc si je met une croix "x" dans la colonne I, que toutes les lignes contenant le "x" soient supprimées.
Cela fonctionne très bien avec les données contenues dans l'onglet SANS, mais pas dans l'onglet AVEC.
La définition des tableaux est très pratique et je l'utilise de plus en plus souvent.
J'ai contourné le problème par une autre macro, mais si quelqu'un pouvait m'apporter la solution initiale, ce serait super sympa.
Cordialement
Lolote83
 

Pièces jointes

  • SupprimeLigneFiltrée via VBA.xlsm
    37.8 KB · Affichages: 14

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Supprime lignes filtrées via VBA

Bonjour Lolotte,

avec ce code:
Code:
Sub SupprimeLigneViaFiltre()
    With ActiveSheet
        If .[N2] = 0 Then Exit Sub
        .Range("B5").AutoFilter Field:=8, Criteria1:="x"
        'On Error Resume Next
        .Range("B6:B" & .Range("B65536").End(xlUp).Row).SpecialCells(xlCellTypeVisible).EntireRow.Delete
        ActiveSheet.ListObjects("TABLO").Range.AutoFilter Field:=8
    End With
End Sub

à+
Philippe

Edit: Bonjour Calvus, ça ne fonctionnait pas chez moi, Excel 2007
 

Lolote83

XLDnaute Barbatruc
Re : Supprime lignes filtrées via VBA

Salut à tous, Calvus, phlaurent55,
Calvus : As tu bien fait des essais sur l'onglet AVEC
PhLaurent : Ton code fonctionne uniquement si les "x" sont consécutifs.
Exemple1 : X en I21,I13,I14 et I15, suppression OK
Exemple2 : X en I7,I9,I11 (donc non consécutif), cela ne fonctionne pas.
Je continue mes recherches de mon coté.
Allez, je suis sur qu'on va y arriver
@+ Lolote83
 

Calvus

XLDnaute Barbatruc
Re : Supprime lignes filtrées via VBA

Re-bonjour,

Salut à tous, Calvus, phlaurent55,
Calvus : As tu bien fait des essais sur l'onglet AVEC

Je ne vais pas me vexer d'avoir été pris pour un débile..... :) , mais oui. J'ai bien essayé et réessayé sur les 2 onglets, et tout fonctionne nickel !

Un petite question toute bête, car j'ai déjà eu le même genre de problème, as tu essayé de redémarrer ton pc tout simplement....?

A+
 

Lolote83

XLDnaute Barbatruc
Re : Supprime lignes filtrées via VBA

Re bonjour,
Je n'ai en aucun cas voulu vexer qui que se soit, mais je pourrais te retourner le commentaire. Oui, j'ai déjà essayé de redémarrer le PC mais rien n'a changé.
Le problème vient du fait que le tableau a été défini en tant que tableau. Selon la version d'Excel utilisé, si cette option n'est pas possible, Excel transforme automatiquement le tableau en succession de lignes. Je me pose donc la question.
Est-ce que tu as bien le tableau défini en tant que tableau (voir copie d'écran jointe).
Tu peux aussi voir en sélectionnant par exemple la cellule G6 qui est:
=[@Nom]&[@Prénom] si défini en tant que tableau
=DONNEE!$B6&DONNEE!$C6 si non défini
A voir chez toi, c'est peut être aussi la que ce trouve le problème
@+ Lolote83
 

Pièces jointes

  • DéfinitionTableau.jpg
    DéfinitionTableau.jpg
    81.5 KB · Affichages: 19

Calvus

XLDnaute Barbatruc
Re : Supprime lignes filtrées via VBA

Re,

Je ne sais que te dire....

Ouverture de ton fichier, tel qu'il a été téléchargé, puis :

Sup1.jpg

Et après un clic :

Sup2.jpg

Voilà chez moi...

A+
 

chris

XLDnaute Barbatruc
Re : Supprime lignes filtrées via VBA

Bonjour

De façon générale les tableaux interfèrent avec le fonctionnement des filtres.

Par exemple le ShowAllData ne marche pas si la cellule active est hors tableau et en particulier s'il y a plusieurs tableaux sur une feuille.

Manuellement la commande suppression de lignes de tableau n'est pas le même selon que le tableau est ou non filtré.

J'ai également remarqué que la gestion des SpecialCells(xlCellTypeVisible) des tableaux donnent des résultats bizarres.

En utilisant une gestion du tableau cela marche mais pas sûr qu'on ne puisse trouver mieux
Code:
Sub SupprimeLigneViaFiltre()
Dim montablo As ListObject

    With ActiveSheet
        Set montablo = .ListObjects("TABLO")
        If .[N2] = 0 Then Exit Sub
        montablo.Range.AutoFilter Field:=8, Criteria1:="x"
        Application.DisplayAlerts = False
        montablo.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete
        Application.DisplayAlerts = True
        montablo.HeaderRowRange.Cells(1, 1).Select
        .ShowAllData
    End With
End Sub
 

Lolote83

XLDnaute Barbatruc
Re : Supprime lignes filtrées via VBA

Re salut Calvus,
Chez moi, cela ne fonctionne toujours pas, tu as de la chance.
Cependant, as tu fais des essais en sélectionnant plusieurs lignes.
Voir ici
@+ Lolote83
 

Pièces jointes

  • AvantTraitement.jpg
    AvantTraitement.jpg
    63.3 KB · Affichages: 23
  • Traitement.jpg
    Traitement.jpg
    39 KB · Affichages: 20
  • DeboggageMacro.jpg
    DeboggageMacro.jpg
    16.1 KB · Affichages: 18

Discussions similaires

Réponses
7
Affichages
451

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll