Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transposition d'une plage de critères pour une filtre elaboré

14 réponses
Avatar
John Fuss
Bonjour à tous,

j'ai un soucis avec une plage de critères d'un filtre élaboré (construit en
VBA), il arrive que je me retrouve avec trop de colonnes pour Excel.

Ma plage peut ressembler à ça :

Produit Produit Produit Produit
<>123 <>124 <>125 <>126

y a t'il un autre moyen de construire ma plage ?

Merci d'avance

John

10 réponses

1 2
Avatar
AV
En supposant tes valeurs en A2 :Ax
Etiquette en A1 ("Produit")
C1 est à laisser vide et en C2 :
=ET(A2<>123;A2<>124;A2<>124;A2<>125)

PS : C1:C2 est la zone de critères pour le filtre élaboré
AV
Avatar
John Fuss
Je risque d'être bloqué avec le nombre de caractère max ds les cellules Cx,
Non ?

John

"AV" a écrit dans le message de
news:
En supposant tes valeurs en A2 :Ax
Etiquette en A1 ("Produit")
C1 est à laisser vide et en C2 :
=ET(A2<>123;A2<>124;A2<>124;A2<>125)

PS : C1:C2 est la zone de critères pour le filtre élaboré
AV





Avatar
AV
Je risque d'être bloqué avec le nombre de caractère max ds les cellules Cx,


???
Heu...Je vois absolument pas pourquoi !
Tu as testé ?

AV

Avatar
John Fuss
j'ai entre 200 et 800 Produits à filtrer (critères ds ma plage de critères)
arrivé à 256 Excel peut plus donc ça bride un peu mon programme, j'ai testé
avec une boucle mais c'est trop long, je crois que le nombre de caractère
dans une cellule est limité à 256 aussi donc je veux rapidement atteindre
cette limite aussi.

John

"AV" a écrit dans le message de
news:
Je risque d'être bloqué avec le nombre de caractère max ds les cellules
Cx,



???
Heu...Je vois absolument pas pourquoi !
Tu as testé ?

AV





Avatar
AV
Reprenons...
Tu as un champ nommé "Produit" situé en A2:Ax avec étiquette en A1 (c'est un
exemple) et tu souhaites filtrer, à l'aide du filtre élaboré, les produits <>123
ET <>124 ET <>125 ET <>126
Tu fais exactement ce que j'ai précédemment indiqué et je ne vois absolument pas
pourquoi le nbre de caractères de la formule située en C2 bougerait !
Il s'agit là d'un critère calculé ce qui explique que C1, qui est inclus dans la
zone de critère (C1:C2), est laissé vide (tu peux aussi renseigner la cel avec
toute chaîne différente des noms de champs)

Je te réitère mon invite à tester la proposition
AV
Avatar
John Fuss
Ok, je vais essayer (je me fourvois peut-être) mais 'les produits <>123 <>
ET <>124 ET <>125 ET <>126' n'est qu'un echantillon des environ 600 produits
que je dois gérer.

John
"AV" a écrit dans le message de
news:%
Reprenons...
Tu as un champ nommé "Produit" situé en A2:Ax avec étiquette en A1 (c'est
un

exemple) et tu souhaites filtrer, à l'aide du filtre élaboré, les produits
<>123

ET <>124 ET <>125 ET <>126
Tu fais exactement ce que j'ai précédemment indiqué et je ne vois
absolument pas

pourquoi le nbre de caractères de la formule située en C2 bougerait !
Il s'agit là d'un critère calculé ce qui explique que C1, qui est inclus
dans la

zone de critère (C1:C2), est laissé vide (tu peux aussi renseigner la cel
avec

toute chaîne différente des noms de champs)

Je te réitère mon invite à tester la proposition
AV




Avatar
AV
Ok, je vais essayer (je me fourvois peut-être) mais 'les produits <>123 <>
ET <>124 ET <>125 ET <>126' n'est qu'un echantillon des environ 600 produits
que je dois gérer.


J'en suis à me demander ... "quelle est la question ?"
AV

Avatar
John Fuss
Je reformule :

J'ai une macro avec une grille de données je souhaite filtrer cette grille
pour ne conservé de visible que les références de produits (1 des colonnes
de ma grille) différents des produits d'une autre grille.

Connaissant un peu les filtres élaborés je récupère les Produits que je ne
veux pas voir affichés, je les mets en lignes avec un '<>' devant pour
obtenir quelque chose comme ça :

Produit Produit Produit Produit Produit etc.
<>123 <>128 <>258 <>1578 <>845 etc.

J'ai régulièrement un volume de produit caché dans ma grille d'origine qui
varie entre 100 produits et 800 produits. La plage de critères du filtre
élaboré se construisant (dans mon cas) en ligne je dépasse les 256 colonnes
dispo.

Comment m'en sortir.

John.

"AV" a écrit dans le message de
news:
Ok, je vais essayer (je me fourvois peut-être) mais 'les produits <>123
<>


ET <>124 ET <>125 ET <>126' n'est qu'un echantillon des environ 600
produits


que je dois gérer.


J'en suis à me demander ... "quelle est la question ?"
AV





Avatar
AV
Si tu as vraiment bcp de tests logiques à faire (supérieur au nbre de colonnes
si tu les mets en colonnes ou, qui avec le critère calculé (formule donnée
précédemment) seraient susceptibles de dépasser les 1024 caractères dans la
formule.
Tu pourrais faire un tableau des valeurs à tester et boucler dessus par un
filtre personnalisé
Exemple pour le champ à filtrer en A2:Ax(produits) et les valeurs à tester en
IV1:IVx (produits à exclure du filtre) (à adapter)

Sub zz_Filtre()
Application.ScreenUpdating = False
x = [IV65536].End(3).Row
For i = 1 To x
[A:A].AutoFilter Field:=1, Criteria1:="<>" & Cells(i, "IV")
Next
End Sub

AV
Avatar
John Fuss
Merci AV,

j'avais effectivement développé une fonction de ce type (sans utilisation de
filtre) qui prend beaucoup (trop) de temps. Donc j'en déduis qu'avec un
filtre élaboré 'classique' je ne peux solutionner mon problème. Du cou pje
vais m'atteler à 1. tester ta fonction 2.trouver une méthode en VBA qui
prenne pas des heures.

Merci pour ta patience et tes conseils.

John

"AV" a écrit dans le message de
news:
Si tu as vraiment bcp de tests logiques à faire (supérieur au nbre de
colonnes

si tu les mets en colonnes ou, qui avec le critère calculé (formule donnée
précédemment) seraient susceptibles de dépasser les 1024 caractères dans
la

formule.
Tu pourrais faire un tableau des valeurs à tester et boucler dessus par un
filtre personnalisé
Exemple pour le champ à filtrer en A2:Ax(produits) et les valeurs à tester
en

IV1:IVx (produits à exclure du filtre) (à adapter)

Sub zz_Filtre()
Application.ScreenUpdating = False
x = [IV65536].End(3).Row
For i = 1 To x
[A:A].AutoFilter Field:=1, Criteria1:="<>" & Cells(i, "IV")
Next
End Sub

AV





1 2