Et il possible de faire un autofilter sur plus de 2 variables?

57.scheider

XLDnaute Junior
Hello,

je voudrais réaliser un filtre sur plus de 2 variables mais cela n'a pas faire de marcher...
Selection.AutoFilter Field:=12, Criteria1:=ListTyp(7), _
Operator:=xlOr, Criteria2:=ListTyp(8), _
Operator:=xlOr, Criteria3:=ListTyp(9)

Pour 2 variables cela marche pais pour 3 je n'arrive pas ...

merci
 

Excel-lent

XLDnaute Barbatruc
Re : Et il possible de faire un autofilter sur plus de 2 variables?

Bonjour 57.Scheider,

Nous sommes bien d'accord, tu souhaite mettre plus de 2 conditions sur UN filtre, par exemple celui de la colonne A?

Manuellement, on ne peut pas en mettre plus de deux! Donc je doute qu'on puisse le faire via VBA (du moins en utilisant AutoFilter).

Mais si c'est bien ce que tu veux faire, tu peux très bien le faire de la façon ci-jointe.

A adapter à ton cas.

A te lire

Cordialement
 

Pièces jointes

  • PlusDeDeuxConditions.xls
    28.5 KB · Affichages: 115

57.scheider

XLDnaute Junior
Re : Et il possible de faire un autofilter sur plus de 2 variables?

merci pour le fichier excel :)
Par contre chez moi cela fait disparaitre juste la dernière ligne du tableau

Sinon j'ai encore d'autres questions:
- Et il important de mettre cette ligne? "Application.ScreenUpdating = False"
- Comment rajouter un bouton pour exécuter la macro?
- et encore une derniere, connais un livre sympa pour les debutants assez facile à lire ("le VBA pour les nuls", est il bien?)

Merci :)

Ok pour la 2eme question: tu as crée une image puis tu l'as affecté a une macro :)
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Et il possible de faire un autofilter sur plus de 2 variables?

Bonsoir 57.Scheider,

57.scheider à dit:
chez moi cela fait disparaitre juste la dernière ligne du tableau

Normal, j'ai fais une erreur en allant trop vite!!! J'ai mis le code :
Code:
Cells.EntireRow.Hidden = False

à l'intérieur de la boucle au lieu de la mettre avant!

Ci-joint le fichier corrigé!


57.scheider à dit:
Et il important de mettre cette ligne? "Application.ScreenUpdating = False"

Tout d'abord quelques explications sur son utilisation et son but.
Au début de la macro, il faut mettre la ligne suivante :
Code:
Application.ScreenUpdating = False
Cela signifie que tout ce qui va se faire en dessous de ce code sera invisible pour l'utilisateur.

A la fin de la macro, il faut mettre la ligne ci-dessous :
Code:
Application.ScreenUpdating = True

Pour indiquer à Excel qu'à partir de là, il doit à nouveau montrer à l'utilisateur tout ce qu'il ferra!

Cette astuce est très pratique pour deux raisons :
-> cela évite à l'utilisateur de voir l'image sur son écran clignoter, bouger, ...
Pour t'en convaincre, essaye la macro sans ces deux lignes, puis avec

-> cela permet à la macro de tourner plus vite!

57.scheider à dit:
- et encore une derniere, connais un livre sympa pour les debutants assez facile à lire ("le VBA pour les nuls", est il bien?)

Tout dépend de ton niveau, de ta faciliter à assimiler, de ton budget, du niveau que tu veux atteindre.

Bref l'idéal c'est qu'il soit agréable à potasser. Car un encyclopédie du VBA, c'est complet et très détaillé, mais tellement rébarbatif que tu risque d'abandonner très vite. Donc le mieux, c'est de les feuilleter et regarder s'il y a beaucoup d'exemples et s'ils sont bien expliqués.

Bonne fin soirée
 

Pièces jointes

  • PlusDeDeuxConditionsCorrigé.xls
    28.5 KB · Affichages: 80

ledzepfred

XLDnaute Impliqué
Re : Et il possible de faire un autofilter sur plus de 2 variables?

Bonsoir Schneider, Excel lent,

juste un bref passage pour dire que l'instruction Application.ScreenUpdating= True est inutile en fin de code puisque le rafraichissement de l'écran est réactivé automatiquement à la fin de la procédure.

Cette instruction n'est utile que si on veut rétablir le rafraichissement en cours de code.

A+
 

57.scheider

XLDnaute Junior
Re : Et il possible de faire un autofilter sur plus de 2 variables?

Merci pour la nouvelle version mais je vois pas vraiment la différence dans le code, je viens de rentrer ce code pour le filtre et cela ne marche pas?
Code:
'avant je réalise un autofiltre sur 2 colonnes

               For ligne = 4 To [B65536].End(xlUp).Row
                    If Cells(ligne, 12) <> List(7) And _
                       Cells(ligne, 12) <> List(8) And _
                       Cells(ligne, 12) <> List(9) And _
                       Cells(ligne, 12) <> List(10) And _
                       Cells(ligne, 12) <> "AA" And _
                       Cells(ligne, 12) <> List(11) Then
                
                            Rows(ligne).EntireRow.Hidden = True
                    End If
                Next ligne


Lorsque je place mon curseur sur les variable je vois bien 2 fois les mêmes valeur :/


pour info: je compare sur une variable string qui récupère les valeurs sur un autre fichier excel dont voici le code
Code:
Windows(Ref).Activate
Sheets("Ref").Select
Derniereligne = Range("C65536").End(xlUp).Row
ReDim List(7 To Derniereligne) As String
For Num = 7 To Derniereligne
    List(Num) = Cells(Num, 3).Value
Next Num
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 971
Messages
2 094 046
Membres
105 927
dernier inscrit
rayade baali