VBA _ utilisation criteria pour filtre

Sansandrine Messages postés 88 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un tableau avec des filtres et j'aurais aimé savoir si avec VBA il était possible de faire un tri (donc avec criteria:="") mais par rapport à la valeur d'une autre cellule.

Par exemple en A2 et A3 j'ai des valeurs, et j'aimerais que la colonne (field=20) soit filtrée pour être supérieure à la valeur en A2 et inférieure ou égale à la valeur en A3.

Pour l'instant j'ai ça, mais je ne sais pas comment compiler la valeur d'une case avec criteria
Selection.AutoFilter Field:=20, Criteria1:=">a2" , Operator:=xlAnd, _
Criteria2:="<=a3"

Merci d'avance

3 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

essaie avec ..., Criteria1:=">" & [a2].value, ....
à condition d'être sur la même feuille, sinon il faudra indiquer la feuille.

eric
0
Sansandrine Messages postés 88 Date d'inscription   Statut Membre Dernière intervention  
 
En fait maintenant il me met erreur autofilter n'a pas pu s'exécuter.

Voici le code que j'ai essayé de mettre :

Selection.AutoFilter Field:=20, Criteria1:=">" & Sheets("men_ext").Range("$j$13").Value, Operator:=xlAnd, _
Criteria2:="<=" & Sheets("men_ext").Range("$l$13").Value
Selection.AutoFilter Field:=21, Criteria1:=">" & [$j$14].Value, Operator:=xlAnd, _
Criteria2:="<=" & [$l$14]

Et voici mon fichier : http://www.cijoint.fr/cjlink.php?file=cj201006/cij3nDGLTY.xls

Aussi ou faut-il que je mette la macro pour qu'elle s'exécute automatiquement mais qu'elle n'interfère pas avec les autres classeurs ?
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonsoir,

Avant ton filtre sélectionne une cellule lui appartenant, par exemple [A21].select.
Et si tu veux que ce soit plus propre mémorise la cellule active lors de l'appel pour la restaurer ensuite (enfin là ça ne se voit pas trop car plus loin tu sélectionnes W21...).
Ce qui peut donner :
Sub filtre()
    Dim memcell As Range
    Application.ScreenUpdating = False
    Set memcell = ActiveCell
        [A21].Select
        Selection.AutoFilter Field:=20, Criteria1:=">" & [$j$13].Value, Operator:=xlAnd, _
                             Criteria2:="<=" & [$l$13].Value
        Selection.AutoFilter Field:=21, Criteria1:=">" & [$J$14].Value, Operator:=xlAnd, _
                             Criteria2:="<=" & [$L$14]
        memcell.Select
        Application.ScreenUpdating = True
End Sub


eric
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
PS: ne met pas de commentaires sur ta question mais plutôt sur les réponses pour que ce ne soit pas trop désordonné.
0