XL 2010 Filtre suivant une collone autre Feuil

Bens7

XLDnaute Impliqué
Bonjour a tous !
Etant complètement novice VBA (et après recherche Google et enregistreur VBA)
J'aurais besoin d'aide ... Je souhaite appliquer un filtre sur une feuil par apport au valeur présente dans une colonne et d'une autre feuil ...
voila j'ai mis un petit fichier plus simple
Merci d'avance
 

Pièces jointes

  • FILTRE COLLONE.xlsm
    19.9 KB · Affichages: 31

job75

XLDnaute Barbatruc
Bonjour Bens7,

Ce n'est pas le filtre automatique mais le filtre avancé qu'il faut utiliser :
Code:
Private Sub CommandButton1_Click()
If CommandButton1.Caption = "FILTRER" Then
  CommandButton1.Caption = "AFFICHER"
  With [A1].CurrentRegion
    .Cells(2, .Columns.Count + 1) = "=SUMPRODUCT(COUNTIF(Feuil2!A:A," & .Rows(2).Address(0) & "))" 'critère
    .AdvancedFilter xlFilterInPlace, .Cells(1, .Columns.Count + 1).Resize(2)
    .Cells(2, .Columns.Count + 1) = ""
  End With
Else
  CommandButton1.Caption = "FILTRER"
  If FilterMode Then ShowAllData
End If
End Sub
En Feuil1 les textes filtrés peuvent être dans n'importe quelle colonne.

Si le nom "Feuil2" est modifié il faut le modifier dans la formule du critère.

Fichier joint.

A+
 

Pièces jointes

  • FILTRE COLONNE(1).xlsm
    33.7 KB · Affichages: 26

job75

XLDnaute Barbatruc
Bonjour Bens7, le forum,

Avec la macro précédente la recherche se faisait sur toutes les colonnes du tableau.

Avec celle-ci elle se fait uniquement sur les colonnes de la sélection en cours :
Code:
Private Sub CommandButton1_Click()
Dim c As Range, col$, a$
If CommandButton1.Caption = "FILTRER" Then
  CommandButton1.Caption = "AFFICHER"
  With [A1].CurrentRegion
    For Each c In .Columns
      If Not Intersect(c, Selection.EntireColumn) Is Nothing Then col = col & ";" & c.Column
    Next
    col = IIf(col = "", 0, "{" & Mid(col, 2) & "}") 'matrice sous forme de texte
    a = .Rows(2).Address(0)
    .Cells(2, .Columns.Count + 1) = "=SUMPRODUCT(COUNTIF(Feuil2!A:A," & a & ")*(COLUMN(" & a & ")=" & col & "))" 'critère
    .AdvancedFilter xlFilterInPlace, .Cells(1, .Columns.Count + 1).Resize(2)
    .Cells(2, .Columns.Count + 1) = ""
  End With
Else
  CommandButton1.Caption = "FILTRER"
  If FilterMode Then ShowAllData
End If
End Sub
On fabrique une matrice (vecteur colonne) qui est utilisée dans la formule du critère.

Fichier (2).

Edit : j'ai mis la police de la cellule AH2 en blanc...

Bonne journée.
 

Pièces jointes

  • FILTRE COLONNE(2).xlsm
    36.2 KB · Affichages: 23
Dernière édition:

Discussions similaires

Réponses
15
Affichages
666
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 740
Messages
2 082 047
Membres
101 880
dernier inscrit
Anton_2024