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

Résolu/Fermé
solidarinfo
Messages postés
149
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
149
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.

A voir également:

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
149
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
149
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
solidarinfo
Messages postés
149
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
8 décembre 2021
13
27 juin 2016 à 18:27
Hello,

Ce sont des noms (texte) que je filtre.
0
Utilisateur anonyme > solidarinfo
Messages postés
149
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
8 décembre 2021

27 juin 2016 à 18:37
 
Je pense que tu as voulu dire des noms de personnes.
Dans ce cas, cette ligne de code VBA :

ActiveSheet.Range[A1].AutoFilter 23, "D*"

doit filtrer correctement ta colonne X, de façon que seules sont affichées
les lignes des personnes dont le nom commence par D (toutes les autres
lignes étant masquées) ; dis-moi si ça marche bien comme ça ou non.
 
0
solidarinfo
Messages postés
149
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
8 décembre 2021
13
27 juin 2016 à 18:57
Hello,

Cela ne marche toujours pas. Une précision je filtre la colonne W pas la colonne X

Alors je précise aussi que je n'ai pas de probléme au niveau de mes filtres, cela marche correctement et j'arrive à faire ce que je veux. Toutefois c'est à la fin (une fois que la liste des filtres a fini d'envoyer les emails à chaque personne filtré) et que je dois finir la macro que le message d'erreur s'affiche.
0