Run-time error '1004' Autofilter medthod of range class failed

Résolu/Fermé
solidarinfo Messages postés 147 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 8 décembre 2021 - 27 juin 2016 à 12:25
solidarinfo Messages postés 147 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 8 décembre 2021 - 27 juin 2016 à 19:19
Bonjour à tout le monde,
J'ai besoin de votre aide.

J'ai un message d'erreur une fois que tous les filtres sont déja selectionnés et que la macro doit finir.
J'ai ce message : Run-time error '1004' Autofilter medthod of range class failed

Je ne sais pas ce que je dois rajouter au code que l'un de vosu m'a aider à écrire.

La ligne avec l'erreur
ActiveSheet.Range("$A$1:$X$361").AutoFilter Field:=23, Criteria1:=Liste_Flitre_W(N)


La ligne de la definition du filtre
Dim Liste_Flitre_W, N, Nb

Application.ScreenUpdating = False

'Creation table flitre colonne W ==> renvoi tableau plus bas
Call Liste_Infos_sans_doublon(Liste_Flitre_W)

Nb = UBound(Liste_Flitre_W)
'si entete colonne commence a 1 sinon a 0
For N = 1 To Nb
' Appliquer filtre
'Worksheets("Sheet1").ShowAllData
ActiveSheet.Range("$A$1:$X$361").AutoFilter Field:=23, Criteria1:=Liste_Flitre_W(N)


MERCI BEAUCOUP POUR VOTRE AIDE.

1 réponse

Bonjour solidarinfo,

Dans tout ton code VBA, tu devrais renommer Liste_Flitre_W
en Liste_Filtre_W.

Dans ta 1ère ligne de commentaire, tu peux aussi remplacer
« Creation table flitre » par « Création table filtre ».

Au lieu de :

ActiveSheet.Range("$A$1:$X$361").AutoFilter Field:=23, Criteria1:=Liste_Flitre_W(N)

tu devrais mettre :

ActiveSheet.Range[A1].AutoFilter 23, ">100"


Ainsi :

a) Avec seulement [A1], ça suffit pour que le filtre automatique
soit appliqué automatiquement sur tout ton tableau A1:X361.

b) Le filtre utilisé sera le filtre n° 23, de la 23ème colonne du tableau :
colonne "X" ; attention : ici, X n'a pas le sens de « n'importe quelle
colonne », c'est bien la colonne X, juste après la colonne W.

c) Si cette colonne "X" contient des nombres, tu peux
utiliser un critère de filtre tel que ">100" par exemple (à adapter
selon tes données réelles).

d) Si cette colonne "X" contient du texte, tu peux
utiliser un critère de filtre tel que "=D*" pour avoir tous les textes
qui commencent par "D" (à adapter là aussi selon tes données).

=====================

Ce que j'ai dit jusqu'à maintenant est pour une seule colonne,
ta colonne n° 23. Pour les colonnes N = 1 To Nb :


Nb = UBound(Liste_Filtre_W)  ' Nb doit retourner 23 maxi !

For N = 1 To Nb  ' Nb : 23 maxi !
  ActiveSheet.Range[A1].AutoFilter N, Liste_Filtre_W(N)


à condition que ton tableau Liste_Filtre_W() contienne uniquement
des critères corrects ; de plus, attention aux indices ! N'oublies pas
que le 1er filtre est forcément le n° 1 : il n'y a pas de filtre n° 0 !
Et le n° de filtre maximum de ton tableau est le n° 23 !
Donc Nb ne doit pas dépasser 23 !

-------------------------------------

- Si tu mets Option Base 1
Liste_Filtre_W() ne doit pas dépasser 23 éléments : de 1 à 23 ;
et tu peux laisser tel que ton précédent code VBA.

-------------------------------------

- Si tu mets Option Base 0 (ou sans rien mettre)
Liste_Filtre_W() ne doit pas dépasser 23 éléments : de 0 à 22 ;
et tu dois changer ainsi ton code VBA :


Nb = UBound(Liste_Filtre_W)  ' Nb doit retourner 22 maxi !

For N = 0 To Nb  ' Nb : 22 maxi !
  ActiveSheet.Range[A1].AutoFilter N + 1, Liste_Filtre_W(N)


-------------------------------------

Peux-tu me dire ce que tu en penses ? Et si ça a résolu ton problème ?
Si oui, n'oublies pas d'aller en haut de page pour cliquer sur le lien
« Marquer comme résolu » ; merci !

Cordialement.  😊
 
0
solidarinfo Messages postés 147 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 8 décembre 2021 13
Modifié par solidarinfo le 27/06/2016 à 16:35
Hello Albkan,

Merci pour ta réponse mais cela n'a pas résolu mon PB malheureusement : j'aimerais bien savoir quel est le pb que tu as détecté dans le code qui provoque ces erreurs ?
0
Utilisateur anonyme > solidarinfo Messages postés 147 Date d'inscription jeudi 26 mars 2009 Statut Membre Dernière intervention 8 décembre 2021
27 juin 2016 à 16:57
 
Alors, il vaut mieux tout reprendre depuis le début : on va d'abord essayer
de filtrer uniquement ta colonne 23, donc la colonne X. Dis-moi :

a) Quel est le nom que tu as mis en en-tête ?
b) Est-ce que ce sont des données texte ? Si oui, donne un échantillon.

c) Est-ce que ce sont des données numériques ? Si oui :
Montants en euros ? Nombres entiers de 1 à 100 ? Nombres avec 5
chiffres après la virgule ? Autre ? As-tu un échantillon ?

d) Est-ce- que ce sont des données d'un autre type : date ou autre ?

---------------------------------------------------------

Car pour commencer, on doit arriver à faire marcher une ligne de code
de ce genre :

ActiveSheet.Range[A1].AutoFilter 23, ">100"

À te lire.
 
0