Run-time error '1004' Autofilter medthod of range class failed [Résolu/Fermé]

Signaler
Messages postés
147
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
20 avril 2021
-
Messages postés
147
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
20 avril 2021
-
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.  😊
 
Messages postés
147
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
20 avril 2021
12
Hello,

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

 
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.
 
Messages postés
147
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
20 avril 2021
12
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.
Utilisateur anonyme >
Messages postés
147
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
20 avril 2021

 
Si tu mets en commentaire uniquement les instructions qui envoient
des emails à chaque personne, tu n'as donc plus aucun problème
de filtre ? Par « mettre en commentaire » je veux dire « mettre une
apostrophe devant la ligne ». Essaie comme ça, sans envoyer de
mails ; si aucune erreur, c'est qu'elle se produisait dans ce que tu
as mis en commentaire ; avantage : ça restreint le champ pour
trouver où est l'emplacement exact de l'erreur.
 
Messages postés
147
Date d'inscription
jeudi 26 mars 2009
Statut
Membre
Dernière intervention
20 avril 2021
12
OK je vais essayer ce que tu suggéres !