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
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
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.
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

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 168
dernier inscrit
isidore33