XL 2010 Problèmes avec la méthode Autofilter

Dolichotis

XLDnaute Occasionnel
Bonjour,

Je suis sur Excel 2010, j'ai fait une macro qui fait un filtre sur les données d'un tableau.

Comme je ne savais pas comment m'y prendre, j'ai testé avec l'enregistreur de macros.

A un moment, je filtre sur une colonne C : "choix1", "choix2", "choix3" mais le problème c'est que parfois le tableau peut avoir ces trois choix dans cette colonne C parfois il n'aura que "choix1" et "choix3" ou parfois juste "choix3".

Quand je mets ça :
Code:
 Worksheets("Sheet1").Range("A1").AutoFilter _
Criteria1:=Array("choix1", "choix2", "choix3"), field:=3

Si un des choix est absent dans cette colonne, aucune ligne n'est sélectionnée. Alors qu'il devrait retourner les lignes des "choix1" et "choix3" par exemple si choix 2 est absent...

Je voulais savoir s'il existe une option que je ne connaitrai pas qui permettrait de ne pas bloquer le filtre et retourner des lignes même si un choix est absent...?

Sinon je pourrai fait une boucle pour incrémenter un Array si le choix existe dans la colonne mais ça me semble assez lourd...

Merci d'avance pour vos conseils et vos idées,

bon dimanche
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Dolicothis

Bonjour DoubleZero :)

Quand tu pose une question soit plus clair. "A un moment, je filtre sur une colonne C"
Sur quelle colonne tu veux filtrer au juste???

2°) Le code que tu as mis est mal écrit.
Worksheets("Sheet1").Range("A1").AutoFilter Criteria1:=Array("choix1", "choix2", "choix3"), field:=3
M'étonne pas que ça plante. Tu met juste Range("a1") pour filtrer et ensuite tu lui impose la colonne C (3 en l'occurence).

Un Exemple. Et je ne suis pas 100% sûr, mais Excel n'accepte pas plus que 2 critères.

VB:
Sub test()
Dim plage As Range

With ("Sheet1")
Set plage = .Range("a1:n" & .Range("n" & Rows.Count).End(xlUp).Row)
plage.AutoFilter Field:=3, Criteria1:=Array("choix2"), Operator:=xlAnd, _
Criteria2:=Array("choix1", "choix3")
End With
End Sub

Comme tu peux le voir, c'est d'abord la plage, ensuite la colonne, et enfin le ou les crtitères.

À tester:
For i = 1 To 3
If IsEmpty("choix" & i) Then

End If
Next i
Le code xxxxxx
 
Dernière édition:

Dolichotis

XLDnaute Occasionnel
Bonjour,

J'ai trouvé une solution un peu lourde mais ça fonctionne.

Je teste si la valeur existe dans la colonne en question, si c'est le cas, je la mets dans un tableau que je recupère pour le mettre en paramètres dans criteria1.

Merci à tous pour votre aide ! (Comment mettre en résolu ?)
 

Discussions similaires

Réponses
7
Affichages
462
Réponses
18
Affichages
857

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 751
dernier inscrit
fred13340