Erreur avec la methode AUTOFILTER sous Excel 2019

Bonjour à tous,

Je vous sollicite pour m'aider à résoudre un problème sur la méthode AUTOFILTER dans une macro VBA qui permet de filtrer un tableau récapitulatif annuel afin d'afficher que le mois en cours.

Ce code fonctionne sous excel 2013 mais plante avec le message d'erreur : "la méthode autofilter de la classe range a échoué" lorsqu'elle est utilisée sous excel 2019.

J'ai essayé d'utilise l'enregistreur de macro sous excel 2019 qui me donne la même syntaxe mais lorsque j'essaye de l'évaluer en lançant la macro elle plante avec le même message d'erreur.

Je vous communique le morceau de macro qui me pose souci ainsi que le feuillet excel que je souhaite filtrer (pour info le fichier joint ne comporte pas de macro c'est un extrait du fichier comportant la macro complète).

Si quelqu'un peut m'éclairer sur la solution à apporter pour que cela puisse tourner sous excel 2019 alors un grand merci.

    With Sheets(FNUser)
        .Visible = True
        .Select
        ActiveWindow.Zoom = 100
        filtre = Format(Date, "mm/dd/yyyy")
         .Unprotect (VerrouGlobal)
         .Range("$A$4:$J$172").AutoFilter Field:=1, Operator:= xlFilterValues, Criteria2:=Array(1, filtre)
            .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True , AllowFiltering:=True, Password:=VerrouGlobal
    End With

Bonjour,

Et avant, vous y arriviez avec avec vos cellules fusionnées ?

Sinon, ce ne serait pas lié à la protection de la feuille ? Et par conséquent à une mauvaise affectation de votre variable VerrouGlobal ?

filtre = Format(Date, "mm/dd/yyyy") '>>> éventuellement tester "DD/MM/YYYY"

With Sheets(FNUser)
    .Visible = True
    .Unprotect (VerrouGlobal) '>>> ça marche ? VerrouGlobal bien affecté ?
    with .Range("$A$4:$J$172").AutoFilter '>>>> essayer "A5:J172"
        .Field:=1
        .Criteria1:="<>"
        .Operator:=xlFilterValues
        .Criteria2:=Array(1, filtre)
    end with
    .Protect Password:=VerrouGlobal, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End With

Edit : vous pouvez faire quelques essais à partir de mes commentaires

Bonjour,

Merci pour votre réponse,

Alors sur la version excel 2013 cela fonctionne sans aucun problème.

La variable VerrouGlobal est déclarée en tant que constante et à l'évaluation pas à pas de la macro j'ai la bonne valeur affectée à cette variable.

La feuille est bien déprotégée lors de l'évaluation pas à pas sous excel 2019.

Je vais tester la syntaxe que vous me proposez et je vous tiens au courant du résultat.

Très bien.

Essayez aussi avec A5:J172, sait-on jamais...

Par contre, ce que je ne comprends pas c'est que lorsque j'utilise l'enregistreur de macro sous excel 2019 en effectuant manuellement le filtre sur mon tableau, le code enregistré est identique à celui qui est formulé dans ma macro mais lorsque j'essaye de l'évaluer le code enregistré au pas à pas sans faire aucune modification, cela m'affiche l'erreur.

Bon je vais tester la nouvelle syntaxe ...

Bon après un test avec la nouvelle syntaxe même message d'erreur ...

Je vais continuer à chercher !

Est-ce que vous pouvez montrer le code de l'enregistreur ?

Le truc, c'est qu'il y a trop de possibilités de bug : cellules fusionnées, protection (on va dire que c'est ok), range A contenant cellule vide, format de date incohérent.

Avez-vous essayer à partir de A5 ? et avec l'autre format date ?

En essayant peut-être :

filtre = clng(Date)

Une première proposition pour masquer (c'est pas très pratique) :

filtre = worksheetfunction.eomonth(Date,-1)+1

With Sheets(FNUser)
    .Visible = True
    .Unprotect (VerrouGlobal) '>>> ça marche ? VerrouGlobal bien affecté ?
    with .Range("$A$4:$J$172")
        for each cell in .columns(1)
            if cell.value = filtre then
                rows(cell.row).hidden = false
            else
                rows(cell.row).hidden = true
            end if
    end with
    .Protect Password:=VerrouGlobal, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End With

Une seconde avec filtre numérique :

filtre = worksheetfunction.eomonth(Date,-1)+1

With Sheets(FNUser)
    .Visible = True
    .Unprotect (VerrouGlobal)
    with .Range("$A$4:$J$172").AutoFilter
        .Field:=1
        .Criteria1:=filtre
        .Operator:=xlFilterValues
    end with
    .Protect Password:=VerrouGlobal, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End With

J'essaye ces propositions mardi car je n'ai plus le PC avec Excel 2019.

Je vous tiens au courant mardi.

Merci pour vos contributions.

Bon WE

Rechercher des sujets similaires à "erreur methode autofilter 2019"