Application.WorksheetFunction.Large erreur

fb62840

XLDnaute Impliqué
Bonjour à toutes et à tous,

J'ai un problème pour procéder à un filtre multicritères avec le code ci-dessous
L'objectif est de ne retenir à l'affichage que les valeurs qui respectent les 2 critères
Le premier critère est l'identifiant id
Le second critère c'est la valeur maximum trouvée en colonne G

Code:
dl = .Cells(Application.Rows.Count, 1).End(xlUp).row 'définit la dernière ligne éditée dl de la colonne 1 (=A) de l'onglet
    Set pl = .Range("A2:G" & dl) 'définit la plage pl
    .Range("A1").AutoFilter 'lance le filtre automatique sur la colonne A
    .Range("A1").AutoFilter Field:=1, Criteria1:=id 'filtre la colonne 1 avec la valeur id comme critère (identifiant)
    .Range("G1").AutoFilter 'lance le filtre automatique sur la colonne G
    .Range("G1").AutoFilter , Field:=6, Criteria1:=Application.WorksheetFunction.Large(Columns(6), 1)
'la dernière ligne devrait filtrer la colonne G avec la valeur maximum trouvée en colonne G

L'erreur que j'obtiens est : "Impossible de lire la propriété Large de la classe WorksheetFunction"

Je sollicite donc votre aide pour solutionner ce problème qui me cause de sérieux soucis.
 
Dernière édition:

fb62840

XLDnaute Impliqué
Re : Application.WorksheetFunction.Large erreur

Bonjour

l'une ou l'autre
A priori la fonction de marche pas sur une colonne

answer = Application.WorksheetFunction.Max(Range("G2:G65536"))
answer = Application.WorksheetFunction.Large(Range("G2:G65536"), 1)

Bonjour,

Merci pour votre réponse très rapide

J'ai essayé ces 2 rédaction sans succès, mais j'ignore si c'est ce que vous suggériez
Code:
    .Range("G1").AutoFilter, Field:=6, Criteria1:=Application.WorksheetFunction.Max(Range("G2:G65536"))
    .Range("G1").AutoFilter, Field:=6, Criteria1:=Application.WorksheetFunction.Large(Range("G2:G65536"), 1)
Ai-je fais une erreur ?
 

fb62840

XLDnaute Impliqué
Re : Application.WorksheetFunction.Large erreur

Oui, Je comprends fort bien mais mon fichier même 'allégé' de la plus grande partie des données reste trop lourd même zipé pour être publié.

Je prépare une version allégé avec simplement le formulaire le plus simple possible. Je le dépose dans quelques minutes. Merci pour votre aide.
 

fb62840

XLDnaute Impliqué
Re : Application.WorksheetFunction.Large erreur

Bonjour
je crois comprendre
la fonction max ou large renvoie une valeur max de la colonne ( y compris lignes masquées) :range("G1:G65536")
or la valeur que tu veux filtrer n'est pas la valeur max car tu as déjà lancé un autre filtre sur une autre colonne.
mais tout cela n'est que supposition

C'est exactement ça, je souhaite ne retenir à l'affichage que les valeurs qui en colonne 1 ont une valeur égale à l'identifiant
et qui ont également en colonne G une valeur définie comme étant la valeur maximum déjà présente

Exemple :
Si j'ai en colonne A 3 lignes avec l'identifiant ID1 par exemple
Et qu'en colonne 3 la valeur maximale à la colonne G soit 2
Alors je ne veux retenir à l'affichage que 2 lignes
 

fb62840

XLDnaute Impliqué
Re : Application.WorksheetFunction.Large erreur

Bonsoir Jean-Marcel,

Merci pour ce coup de main.
J'adapterai à ma situation.
Mais je crois moi aussi qu'il doit être possible de faire mieux qu'avec une formule matricielle.

A+
 

fb62840

XLDnaute Impliqué
Re : Application.WorksheetFunction.Large erreur

Bonjour

résultat un peu tiré par les cheveux avec formule matricielle en I1
Il y a surement beaucoup mieux

Formule à adapter a ton fichier ( attention matricielle)

Bonjour Jean-Marcel,

La solution que vous m'avez apporté me convient parfaitement. Sans doute y-a-t-il moyen de faire "plus pro" notamment en passant par la construction d'un filtre élaboré. Toutefois cette solution est plutôt simple et fonctionnelle alors je m'en tiendrai à celle-ci.

Un grand merci, vous m'avez retiré une bel épine du pied !

Passez une excellente journée.
 

Discussions similaires

Réponses
22
Affichages
764

Statistiques des forums

Discussions
312 196
Messages
2 086 095
Membres
103 116
dernier inscrit
kutobi87