Microsoft 365 suppression de plusieurs lignes dans des tableaux tres grands

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cecilette

XLDnaute Junior
Bonjour,

un de mes tableurs contenant plusieurs tableaux sur des onglets différents me pose un souci

chaque tableau contient plus de 17000 lignes, je dois filtrer les données et supprimer certaines de ces données.

par exemple : dans le 1er tableau qui contient 17352, j'ai trié la donnée à supprimer ça représente 13587 lignes

je voudrais savoir s'il existe un moyen de sélectionner ces données en un clic pour les supprimer sans devoir sélectionner manuellement les lignes car ça prend un temps infini.

d'avance, je vous remercie pour l'aide que vous m'apporterez.
C.
 
Bonjour
Si c'est un tableau structuré il suffit de cliquer sur le titre d'une colonne, puis clic droit sur une des lignes et supprimer (ligne entière ou ligne de tableau)
Sinon cliquer sur une cellule de la ligne située sous le titre, CRTL Shift Bas, et clic droit supprimer ligne
 
Dernière édition:
@ChTi160 juste une question, à quoi ça sert de s'adresser à un forum (d'humains) pour avoir des réponses d'IA (Idiotie Avérée) ?
Si encore vous les testiez (et là vous vous seriez aperçu d'une "hallucination", une de plus) et la corrigiez pourquoi pas, mais si c'est juste pour faire un copier/coller, autant dire "allez donc poser la question à une idiotie avérée" et fermez tous les forums humains

Ca me ramène quelques années en arrière où la réponse favorites de ceux qui voulaient juste répondre pour répondre était "google est ton amis" sans aucune utilité

La réponse de @chris est quand même plus censé que celles du "chat qui pète" (merci humain Chis 😉)
 
Bonjour le forum,

C'est classique : si la plage des lignes à supprimer est constituée d'un grand nombre (plusieurs milliers) de lignes disjointes leur suppression peut prendre beaucoup de temps.

Pour y remédier il faut utiliser une colonne auxiliaire avec une formule de filtrage suivie d'un tri sur les valeurs pour regrouper.

Il y a pas mal d'exemples sur ce forum.

A+
 
Bonjour à tous,
En supposant qu'on travaille avec des tables structurées, un exemple ci joint
Nota: s'il y a plus d'une table ou d'autres données sur la feuille, seules les lignes de la table concernée sont supprimées
VB:
Option Explicit
Sub Filter_Delete()
Dim Lignes As Variant, L As Long
Application.ScreenUpdating = False

    With [Tableau1[#Data]]
        .Parent.Activate
       ' on garde en  colonne 1 les éléments finissants par 5
        .AutoFilter Field:=1, Criteria1:="=*5"
        On Error Resume Next
       ' on récupère les adresses des lignes filtrées
        Lignes = Split(.SpecialCells(xlCellTypeVisible).Address, ",")
        If Err = 0 Then ' si le filtre affiche des lignes, on va les supprimer
            ' on enlève les filtres
             .AutoFilter Field:=1
            ' les adresses ayant de fortes chances de représenter des plages non jointives
            ' on va les détruires 1 par 1 en commençant par la fin
             For L = UBound(Lignes) To 0 Step -1
                 Range(Lignes(L)).Delete
             Next
        End If
    End With
End Sub
Sub Restore()
    With [Tableau1[#Data]]
        .AutoFilter Field:=1
        .Delete
        .Resize([Tableau13[#Data]].Rows.Count).Value = [Tableau13[#Data]].Value
    End With
End Sub
 

Pièces jointes

Dernière édition:
Bonjour à tous😉,

En appliquant ce qu'a décrit @job75 que je salue 😛, voici un exemple de ce qu'on peut faire avec un grand tableau structuré (80 000 lignes) et qui comporte de nombreuses lignes filtrées disjointes.
Attention! pour supprimer les lignes filtrées, il faut que la cellule active soit dans le tableau structuré concerné.
  1. initialiser les données
  2. puis lancer le traitement
edit: version v1a -> j'avais mis par mégarde en commentaire la ligne : ts.ListColumns(1).Delete

Le code est dans Module1:
VB:
Sub TSsupprLigneFiltre()
' ----- supprime les lignes filtrées d'un tableau structuré
Dim ts As ListObject, xrg As Range, ti#
   ti = Timer
   Application.ScreenUpdating = False     ' on fige l'écran
   On Error Resume Next                   ' on continue le traitement si une erreur se produit
   Set ts = ActiveCell.ListObject         ' le tableau structuré de la cellule active
   If ts Is Nothing Then MsgBox "La cellule active n'appartient pas à un tableau structuré -> échec", vbCritical: Exit Sub
   With ts     ' avec le tableau structuré
      ' on ajoute une colonne auxiliaire nommée "AuxTempo" si ce n'est pas déjà fait
      If .Range(1, 1) <> "AuxTempo" Then .ListColumns.Add 1: .Range(1, 1) = "AuxTempo"
      Set xrg = ts.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeVisible)  ' le range des cellules visibles de la colonne 1
      If xrg Is Nothing Then ts.ListColumns(1).Delete: Exit Sub    ' cas où le filtre ne renvoie rien
      xrg.Value = CVErr(xlErrNA)          ' on place une valeur d'erreur dans la colonne1 dans les lignes visibles
      ts.AutoFilter.ShowAllData           ' on affiche toutes les lignes
      ts.Range.Sort key1:=ts.Range.Columns(1), order1:=xlAscending, Header:=xlYes            ' tri du TS selon colonne 1
      Set xrg = ts.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeConstants, xlErrors)  ' le range des lignes avec #N/A en colonne 1
      xrg.Resize(, ts.ListColumns.Count).Delete shift:=xlShiftUp  ' effacement du bloc de ces lignes dans le TS
      ts.ListColumns(1).Delete            ' on supprime la colonne auxiliaire
   End With
   MsgBox "Exécution terminée en " & vbLf & Format(Timer - ti, "0.00\ sec."), vbInformation
End Sub
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour