Macro filtre

Bonjour tout le monde,

Je tente de créer une Macro (à laquelle j'associerai un bouton) me permettant de filter dans une colonne.

Mon critère de filtrage est " Supérieur à 1 ou inférieur à -1". Précisement, j'aimerai savoir comment on traduit "OU" en VBA !

Voici ce à quoi j'ai pensé mais ça ne fonctionne pas:

Selection.AutoFilter Field:=7, Criteria1:=">1" Or_ Selection.AutoFilter Field:=7, Criteria1:="<-1"

Par ailleurs, est-il possible de définir comme critère de filtrage "begins with". Encore une fois, comment traduire "begins with" en VBA ?

D'avance, merci pour votre aide.

Boris.

Bonjour,

peut être comme cela

Selection.AutoFilter Field:=7, Criteria1:=">1", Operator:=xlOr, Criteria2:="<-1"

pour ta 2ème question

Selection.AutoFilter Field:=1, Criteria1:="=TonCritère*"

N'oublie pas l'étoile(*) a la fin de ton critère de recherche

Bonne Journée

Merci pour la réponse rapide.

Malheureusement, la 2è proposition ne fonctionne pas. Voici, ci-joint, le fichier sur lequel j'aimerai appliquer la fonction "begins with" (donc avec l'étoile si j'ai bien compris).

Code: Selection.AutoFilter Field:=4, Criteria1:="=103*"

Encore merci.

591test.zip (8.24 Ko)

Re,

La seule solution que j'ai pu trouver est de transformer tes valeurs de le Colonne D en texte

à la commande de ton bouton

Sub Button1_Click()
Dim C As Range
DerLig = Cells(Rows.Count, 1).End(xlUp).Row
For Each C In Range("D1:D" & DerLig)
    C = "'" & C
Next C
    Selection.AutoFilter Field:=4, Criteria1:="=103*"
End Sub

Mais nul doute que quelqu'un trouve une solution plus élégante

bonne Journée

Bonjour à tous,

Tu cherche à filtrer quoi exactement ?

ici, on filtre la colonne "D"

les 3 1er caractères = "H1"

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("h1")) Is Nothing Then

        On Error Resume Next
            ActiveSheet.ShowAllData
        On Error GoTo 0
        If Target = "" Then Exit Sub
        Range("a1:d" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=Range("k1:k2"), Unique:=False
    End If
End Sub

Amicalement

claude

465bahishak-filtre.zip (12.32 Ko)

Hi guys,

Encore une fois merci pour votre aide.

Je vais tenter de me faire plus claire. J'aimerai un bouton qui filtre:

* Dans la colonnes L (pour les éléments commençant par "103"), il faudrait un filtre comme suit: Selection.AutoFilter Field:=7, Criteria1:=">1", Operator:=xlOr, Criteria2:="<-1".

*Dans colonne L (pour tous les autres éléments, il faudrait un filtre comme suit: Selection.AutoFilter Field:=7, Criteria1:=">2", Operator:=xlOr, Criteria2:="<-2"

Selon moi, la structure serait comme suit:

If dans colonne L, elements commençant par "103", then

Selection.AutoFilter Field:=7, Criteria1:=">1", Operator:=xlOr, Criteria2:="<-1"

else:

Selection.AutoFilter Field:=7, Criteria1:=">2", Operator:=xlOr, Criteria2:="<-2"

Je pense avoir la strucutre, mais je bug grave sur le code

Ci-joint, l'extrait du fichier excel sur lequel j'aimerai ce bouton.

Vous m'avez déjà bcp aidé. Ce serait genial si vous pouviez encore m'aider, vraiment.

Bonne journée

Excel-ment votre.

Boris


C'est encore moi. Cette macro me prend vraiment la tête...

Petite question plus directe. Comment traduit-on l'opération "AND" en VBA ? Est ce que c'est "Operator=xlAnd" ???

Si je veux trier sur plusieurs colonnes en même temps, ça devrait donner:

Selection.AutoFilter Field:=7, Criteria1:=">1", Operator:=xlOr, Criteria2:="<-1", Operator:=xlAnd Selection.AutoFilter Field:=12, Criteria3:="=1036*"

J'aimerai donc que dans la colonne L (field 12), il filtre les éléments commençant par "1036".

Please heeeelp... j'ai bientôt plus de cheveux, lol.

183book1.zip (6.94 Ko)

Bonsoir,

Je ne sais pas utiliser les filtres Auto,

voici en filtre élaboré

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Application.Intersect(Target, Range("d2")) Is Nothing Then
        On Error Resume Next
        ActiveSheet.ShowAllData         'libère le filtre
        On Error GoTo 0
    If Target.Count > 1 Or Target = "" Then Exit Sub

    Range("r2") = _
    "=IF($d$2=1036,AND(LEFT(L6,4)*1=1036,OR(g6>1,g6<-1)),OR(g6>2,g6<-2))" 'critères

    Range("a5:o" & [a65000].End(xlUp).Row) _
    .AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("r1:r2"), Unique:=False
 End If
End Sub

Claude

300bahishak-filtre-2.zip (14.49 Ko)

Merci beaucoup Claude pour ta réponse.

Malheureusement, n'étant pas un maître en VBA, je ne comprend pas grand chose du code .

Merci quand même pour ta patience et réponse.

Boris

Bonjour,

Mais les résultats sont ceux attendus ?

Voici une autre version ou j'ai changé la formule des critères,

1) Tu peux taper les 4 premiers chiffres (1034 ou 1036 ou autres existants),

çà te sort les valeurs >1 ou <-1 avec le N° choisi

2) en tapant "Autre", çà te sort les valeurs >2 ou <-2 de tous les N°

çà m'étonnerais que tu puisse obtenir ces résultats avec un filtre auto !

Amicalement

Claude

416bahishak-filtre-3.zip (14.94 Ko)
Rechercher des sujets similaires à "macro filtre"