Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 VBA filtre plusieurs colonne a partir d'une donnée (sous combobox)

DeeRose

XLDnaute Nouveau
Bonjour,

j'ai un tableau excel ou je souhaite faire apparaitre une donnée. Celle ci apparait dans plusieurs colonnes.

J'ai utilisé le code ci dessous, qui me permet de filtre qu'une colonne de mon tableau alors que la colonne J et K sont aussi a rechercher.

Private Sub ComboBox1_Change()

If ComboBox1.ListIndex = -1 Then
Exit Sub
End If
MONFILTRE = ComboBox1.Value

ActiveSheet.Range("$A$3:$F$1311").AutoFilter Field:=9, Criteria1:=MONFILTRE

End Sub

Pouvez vous m'aider a la réalisation de ce code svp ? sachant que je suis un noob.

Merci d'avance pour votre aide
 

job75

XLDnaute Barbatruc
Bonsoir DeeRose, Bernard,

Avec le filtre avancé c'est vraiment très simple, le code de la feuille :
VB:
Private Sub ComboBox1_Change()
If FilterMode Then ShowAllData 'affiche tout
If ComboBox1.ListIndex = -1 Then Exit Sub
ThisWorkbook.Names.Add "CB", Val(ComboBox1) 'nom défini
[M2] = "=OR(I2=CB,J2=CB,K2=CB)" 'critère
[A1].CurrentRegion.AdvancedFilter xlFilterInPlace, [M1:M2] 'filtre avancé
[M2] = ""
End Sub
Bonne nuit.
 

Pièces jointes

  • Filtre avancé(1).xlsm
    20.5 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour le forum,

Avec NB.SI c'est plus simple :
VB:
[M2] = "=COUNTIF(I2:K2,CB)" 'critère avec NB.SI
A+
 

Pièces jointes

  • Filtre avancé(2).xlsm
    21 KB · Affichages: 1
  • Filtre avancé(2 bis).xlsm
    21.3 KB · Affichages: 3

job75

XLDnaute Barbatruc
Si les données peuvent être des nombres ou des textes on utilisera SOMMEPROD :
VB:
Private Sub ComboBox1_Change()
If FilterMode Then ShowAllData 'affiche tout
If ComboBox1.ListIndex = -1 Then Exit Sub
ThisWorkbook.Names.Add "CB", "=""" & ComboBox1 & """" 'nom défini
[M2] = "=SUMPRODUCT(N(""""&I2:K2=CB))" 'critère avec SOMMEPROD
[A1].CurrentRegion.AdvancedFilter xlFilterInPlace, [M1:M2] 'filtre avancé
[M2] = ""
End Sub
 

Pièces jointes

  • Filtre avancé(3).xlsm
    21.3 KB · Affichages: 7

DeeRose

XLDnaute Nouveau
MErci pour votre retour.
J'au un point bloquant au niveau : [A1].CurrentRegion.AdvancedFilter xlFilterInPlace, [M1:M2] 'filtre avancé
Pouvez vous me traduire cette ligne svp ?
 

Dranreb

XLDnaute Barbatruc
Ma fonction SujMultiCol a l'avantage de proposer pour la ComboBox une liste classée et sans doublon des différentes valeurs trouvées dans les colonnes concernées.
Avec seulement de quoi filtrer la liste d'après le choix, il faut préalablement constituer cette liste par une autre voie.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…