VBA _ utilisation criteria pour filtre

Sansandrine Messages postés 94 Statut Membre -  
eriiic Messages postés 24581 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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

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

    eric
    0
  2. Sansandrine Messages postés 94 Statut Membre
     
    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
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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