XL 2010 Filtre suivant une collone autre Feuil

  • Initiateur de la discussion Initiateur de la discussion Bens7
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
3 K
Retour