XL 2016 VBA suppression lignes dans tableau [Résolu] par 2 contributeurs :)

ROCHER

XLDnaute Nouveau
Bonjour,

Malgré de nombreuses recherches et de nombreux tests, je suis bloqué sur un code VBA.

Je souhaite filtrer des lignes dans un tableau (sur 2 champs pour les filtres) puis supprimer les lignes visibles. J'ai trouvé la syntaxe qui semble adaptée, mais j'ai systématiquement une erreur d'exécution.

Voici mon code :

VB:
Sub Purger3()

Dim DernLigne As Long
Dim Exercice As Integer ' Declare la variable Exercice
Dim wS As Worksheet
   
    Set wS = Sheets("Ecritures analytiques")
   
    With Worksheets("Ecritures analytiques")
     If Not .AutoFilterMode Then .Range("A1").AutoFilter
    End With
   
    Exercice = InputBox("Quel exercice voulez vous purger ?")
   
    DernLigne = wS.Range("A" & Rows.Count).End(xlUp).Row
   
    wS.Range("A1").AutoFilter Field:=14, Criteria1:=Exercice
    wS.Range("A1").AutoFilter Field:=28, Criteria1:="Réalisé"
   
    wS.Range("A2:AB" & DernLigne).SpecialCells(xlCellTypeVisible).EntireRow.Delete

    Range("A1").AutoFilter

    ThisWorkbook.RefreshAll
 
End Sub

Quelqu'un a t'il une idée ?

Merci d'avance de votre aide,

Philippe
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Philippe,

comme tu peux le voir, il y a 3 erreurs dans ta macro, essaie comme ceci

VB:
Dim plage as Range
Set Ws = Sheets("Ecritures analytiques")

    With Ws
    DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
    Set plage = .Range("A1:AB" & DernLigne)
  
    Exercice = InputBox("Quel exercice voulez vous purger ?")

   plage.AutoFilter 14, Exercice, xlAnd
   plage.AutoFilter 28, "Réalisé", xlAnd

    .Range("A2:AB" & DernLigne).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

    ThisWorkbook.RefreshAll
 
Dernière édition:

ROCHER

XLDnaute Nouveau
Bonjour,

Merci pour cette réponse. Je viens de tester ce code mais j'ai à nouveau une erreur d'exécution lorsqu'il arrive à la ligne de suppression ! Je joins un fichier de test si cela peut permettre de mieux voir ce qui se passe ... la macro s'appelle PurgerLignes dans le Module5, j'ai mis un bouton pour y accéder lors du test à droite du tableau des données. Pour l'exercice on peut prendre 2015 ou 2016.

Grand merci d'avance pour ton aide ...
 

Pièces jointes

  • BDD compta TCD extrait.xlsm
    943.6 KB · Affichages: 68

Staple1600

XLDnaute Barbatruc
Bonjour à tous

macro testée sur Excel 2013
VB:
Sub a()
Dim Exercice
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Exercice = InputBox("Quel exercice voulez vous purger ?")
    With ActiveSheet.ListObjects("Tableau6")
        .Range.AutoFilter Field:=14, Criteria1:=Exercice
        .Range.AutoFilter Field:=28, Criteria1:="Réalisé"
        .DataBodyRange.SpecialCells(12).Delete
        .AutoFilter.ShowAllData
    End With
End Sub
 

ROCHER

XLDnaute Nouveau
Merci à Lone-Wolf pour ses réponses qui m'ont aidé à mieux comprendre certaine parties du code.

Merci à Staple1600, ce code fonctionne parfaitement (il faut seulement que j'ajoute une précision sur la feuille qui contient les données) car le code est lancé à partir d'une autre feuille.

Grand merci à vous deux
 

Staple1600

XLDnaute Barbatruc
Re

Oui, vas dans ton premier message, et dans le titre tu rajoute [Résolu par Stapple].
Non surtout pas, je trouve cette nouvelle habitude des plus fâcheuses :mad:
On peut mettre résolu (bien que pour moi un post n'est jamais vraiment résolu)
Mais je ne vois pas l’intérêt de spécifier le pseudo d'un membre
(surtout sans savoir si c'est avec ou sans son aval)
 

Discussions similaires

Réponses
2
Affichages
347

Statistiques des forums

Discussions
315 080
Messages
2 116 019
Membres
112 637
dernier inscrit
pseudoinconnu