Erreur sur une macro qui permet de supprimer les données filtrées

Bonjour à tous,

J'ai cette macro qui me génère une erreur quand je la lance.

Je souhaite supprimer les données que je filtre sur onglet que je nomme (PROD_RECETTE).

Le message d'erreur est : erreur d'exécution '438'.

Voici le code :

Je vous remercie pour votre aide.

Sub Efface()
  'With ActiveSheet.ListObjects(1)
  'Dim wS As Worksheet
  'Set wS = Sheets("PROD_RECETTE")

 With ActiveSheet
   If Not .AutoFilter Is Nothing Then
    If .AutoFilter.FilterMode Then
     If MsgBox("Confirmez-vous la suppression des données filtrées ?", vbYesNo, "Demande de confirmation") = vbYes Then
      Application.DisplayAlerts = False
      .DataBodyRange.SpecialCells(xlVisible).Delete
      .AutoFilter.ShowAllData
      Application.DisplayAlerts = True
     End If
    Else
     MsgBox "Aucune(s) donnée(s) filtrée(s) !": Exit Sub
    End If

Bonjour

Tu devrais joindre ton fichier complet, anonymisé aju besoin...

Bye !

Bonjour,

Ci-joint un exemple de fichier. le filtre peut se faire dans n'importe quelle colonne !

Je vous remercie !

Bonsoir,

Une proposition.

@thev,

ces "specialcells" ne sont pas nécessaire, les lignes visibles ne seront pas supprimées, mais on a besoin de cette construction pour compter le nombre de lignes visible et s'il n'y a que les entêtes, il ne faut rien faire.

Application.DisplayAlerts = False
if .Range.Columns(1).SpecialCells(xlVisible).count >= 1 Then .DataBodyRange.Delete
.Range.Worksheet.AutoFilter.ShowAllData
Application.DisplayAlerts = True
Rechercher des sujets similaires à "erreur macro qui permet supprimer donnees filtrees"