Filtrer une colonne VBA

Résolu
DavyB_6434 Messages postés 4 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
Dans une colonne, j'ai des cellules contenant des valeurs de 0 et 5. Cette colonne peut-être filtrer
La formule qui découle de l'enregistreur de macro marche seulement quand la colonne contient des valeurs entre 1 et 5 :
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=41, Criteria1:=Array("1", "2", "3", "4", "5") Operator:=xlFilterValues
Néanmoins si un jour, si l'une des cellules dans cette colonne contient une valeur égale à 6 ou supérieure, ca ne fonctionnera plus car cette valeur ne sera pas détecté automatiquement. Ce problème je pense est du à l'array qui m'oblige donc à rajouté après la valeur , "5"la valeur , "6") et ainsi de suite pour que cela continue de fonctionner.

Je désir connaitre la commande qui permet de retirer de ma colonne la valeur 2 et 3 directement sans faire : array("1","4","5",) Operator:=xlFilterValues

Je vous remercie de votre aide.
Cordialement

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Peut être comme ceci, obtenu avec l'editeur de macros
    Selection.AutoFilter Field:=3, Criteria1:="=1", Operator:=xlOr, Criteria2:=">=4"

    Cdlmnt
    0
    1. DavyB_6434 Messages postés 4 Statut Membre
       
      Merci mais ta solution utilise l'opérateur OU, cependant si j'ai X valeurs cette macros ne fonctionne plus.

      Exemple si dans ma colonne j'ai 0.1.2.3.4.5.6.9..... et je veux retirer les 5,8,11,50 comment je fais ?
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Peut être avec une petite macro
    https://mon-partage.fr/f/Gfqxll2a/

    Cdlmnt
    0
    1. DavyB_6434 Messages postés 4 Statut Membre
       
      J'ai pas accès au lien à cause de McAfee Web Gateway , peux tu la copier sur le forum directement :)

      Désolée,

      Merci.
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Option Explicit
    
    Const liste = "2,5,8,10,11,15,18"   ' liste a filtrer
    Const cofiltre = 3                  ' colonne filtre
    Const lideb = 2                     ' premiere ligne
    
    Public Sub filtrer()
    Dim li As Long, lifin As Long, tf, k As Long
    Application.ScreenUpdating = False
    lifin = Cells(Rows.Count, cofiltre).End(xlUp).Row
    tf = Split(liste, ",")
    For li = lideb To lifin
      For k = 0 To UBound(tf)
        If Cells(li, cofiltre).Value = CInt(tf(k)) Then Rows(li).EntireRow.Hidden = True: Exit For
      Next k
    Next li
    End Sub
    0
    1. DavyB_6434 Messages postés 4 Statut Membre
       
      Merci pour ton aide.
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      De rien
      Si c'est fini, peux tu mettre le sujet à résolu (en haut à droite, la roue dentée)
      Cdlmnt
      0