La question étant très simple cette macro l'est aussi :est-il possible de me rectifier un code vba pour filtrer mes données
Private Sub TextBox1_Change()
ThisWorkbook.Names.Add "Crit1", "*" & TextBox1 & "*" 'nom défini
ThisWorkbook.Names.Add "Crit2", "*" & TextBox2 & "*" 'nom défini
ThisWorkbook.Names.Add "Crit3", "*" & TextBox3 & "*" 'nom défini
[M6] = "=COUNTIF(C6,Crit1)*COUNTIF(D6,Crit2)*COUNTIF(E6,Crit3)" 'critère
With Sheets("Liste")
.UsedRange.Delete xlUp 'RAZ
[B5].CurrentRegion.AdvancedFilter xlFilterCopy, [M5:M6], .[A1:J1] 'filtre avancé
[M6] = ""
With .[A1].CurrentRegion
If .Rows.Count > 1 Then ListBox1.RowSource = .Offset(1).Resize(.Rows.Count - 1).Address(External:=True) _
Else ListBox1.RowSource = ""
End With
End With
End Sub
merci beaucoup cela fonctionne très bienBonjour,
Fait avec un pgm générique.
Boisgontier
BonjourBonjour yahya.be, JB,
La question étant très simple cette macro l'est aussi :
On utilise la propriété RowSource de la ListBox ce qui permet d'afficher les en-têtes des colonnes.VB:Private Sub TextBox1_Change() ThisWorkbook.Names.Add "Crit1", "*" & TextBox1 & "*" 'nom défini ThisWorkbook.Names.Add "Crit2", "*" & TextBox2 & "*" 'nom défini ThisWorkbook.Names.Add "Crit3", "*" & TextBox3 & "*" 'nom défini [M6] = "=COUNTIF(C6,Crit1)*COUNTIF(D6,Crit2)*COUNTIF(E6,Crit3)" 'critère With Sheets("Liste") .UsedRange.Delete xlUp 'RAZ [B5].CurrentRegion.AdvancedFilter xlFilterCopy, [M5:M6], .[A1:J1] 'filtre avancé [M6] = "" With .[A1].CurrentRegion If .Rows.Count > 1 Then ListBox1.RowSource = .Offset(1).Resize(.Rows.Count - 1).Address(External:=True) _ Else ListBox1.RowSource = "" End With End With End Sub
A+