VBA filtre multi critères

Alban.aktisea

XLDnaute Nouveau
Bonjour,

J'ai un filtre à réaliser avec des critères que je dois pouvoirs saisir dans différentes cellules d'un tableau.

Pour l'instant j'ai fait ça :

'Sheets("Listing entreprises").Range("$A$3:$Z$10000").AutoFilter Field:=5, Criteria1:=Array(Sheets("Rapport").Range("K3").Value, Sheets("Rapport").Range("L3").Value, Sheets("Rapport").Range("M3").Value, Sheets("Rapport").Range("N3").Value), Operator:=xlFilterValues
End Sub

Ça fonctionne mais je me dis qu'il y a peut-être un moyen d'optimiser cette macro en précisant une plage de cellule à prendre en compte. ex : cellule K3:R5 dans mon cas.


Si vous avez des idées ou des conseils je suis preneur. J'ai trouvé que des choses qui me semblent assez compliqués sur le forum
 

Alban.aktisea

XLDnaute Nouveau
Re : VBA filtre multi critères

Bonjour Paritec,

Merci pour ta réponse, j'ai essayé comme ceci et en enlevant "Operator:=xlFilterValues"

Sheets("Listing entreprises").Range("$A$3:$Z$10000").AutoFilter Field:=5, Criteria1:=Sheets("Rapport").Range("K3:R5"), Operator:=xlFilterValues

mais j'ai l'erreur suivante : erreur d'execution 1004 : Impossible de définir la propriété NumberFormat de la classe Range.

Est-ce parce que dans mes cellules j'ai du texte? parce que j'ai des cellules vides?
 

Alban.aktisea

XLDnaute Nouveau
Re : VBA filtre multi critères

Non toujours pareil, avec Operator:=xlFilterValues j'ai eu un message l'objet s'est déconnecté de ses clients???

Sans Operator:=xlFilterValues j'ai la méthode Range a échoué.

Je pense que la macro ne comprend pas qu'il faut regarder le contenu de chaque cellule de la plage ou que le format attendu n'est pas du texte...
 

Backhandshot

XLDnaute Occasionnel
Re : VBA filtre multi critères

Bonjour Alban, Paritec et tout le forum. Je ne sais pas si mon filtre que j'utilise pour ma loterie pourrait faire l'affaire...Je me sers d'un compte pour trouver les valeurs voulues dans ma liste.
Range("A4:V" & [A65000].End(xlUp).Row).Name = "ListeBanco"
If Application.CountA(Range("C2")) = 1 Then
Range("m2").FormulaR1C1 = _
"=COUNTIF(R[3]C3:R[3]C22,R2C3)=1"
Range("ListeBanco").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range( _
"m1:m2"), Unique:=False
[m2].Clear
End If

Ici c'est seulement pour trouver 1 valeur. En espérant que cela puisse t'aider.
Bonne journée
 

Statistiques des forums

Discussions
312 295
Messages
2 086 960
Membres
103 406
dernier inscrit
elliott.joliman@bforbank.