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
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
A voir également:
- Autofilter method of range class failed
- Input signal out of range ✓ - Forum Matériel & Système
- Out of range - Forum Ecran
- Ecran noir avec 'out of range" sous windows 10 - Forum Ecran
- [Ecran tft] "out of range au démarrage ✓ - Forum Matériel & Système
- Problème écran "out of range" au démarrage - Forum Windows
1 réponse
Utilisateur anonyme
Modifié par albkan le 27/06/2016 à 15:08
Modifié par albkan le 27/06/2016 à 15:08
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 :
tu devrais mettre :
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 :
à 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 :
-------------------------------------
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. 😊
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. 😊
Modifié par solidarinfo le 27/06/2016 à 16:35
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 ?
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 :
À te lire.