Filtre à partir d'un choix multiple à travers une liste ds Usf
Bonjour,
J'ai quelques pb avec mon code ; j'ai repris celui de Delfphine : [URL="http://www.developpez.net/forums/d967997/logiciels/microsoft-office/excel/macros-vba-excel/filtre-plusieurs-criteres/#post5431951"]http://www.developpez.net/forums/ano...a4ad7da073f879[/URL]
1 - J'ai voulu ajouter une ligne pour supprimer les filtres existants, cela ne fonctionne pas à chaque fois et bugue si le filtre est vide (sélectionner tout est décoché et toutes les données sont également décochées - la table ne contient donc que les titres)
Pourtant j'ai déjà utilisé ce code et il fonctionnait ; faut-il s'y prendre autrement ?
Code:
1 2
| 'Supprime les filtres existants
If Sheets("BdD").FilterMode = True Then Sheets("BdD").ShowAllData |
j'ai également essayé
Code:
ActiveSheet.ShowAllData
Message d'erreur : "La méthode ShowAllData a échoué"
2- Si dans ma zone de critère, j'ai un chiffre et qu'il est sélectionné, il n'est pas pris dans le filtre ; je ne comprends pas pourquoi, car en mode pas à pas, il est bien intégré dans la variable tableau(j)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub CbtOk_Click()
Dim Nb As Byte, i As Byte, j As Byte
Dim tableau(1 To 100) As Variant
'Supprime les filtres existants
If Sheets("BdD").FilterMode = True Then Sheets("BdD").ShowAllData
'Calcul du Nb de ligne de la liste
Nb = UserForm1.ListBox1.ListCount
j = 1 'index des sélections
For i = 0 To Nb - 1 'Pour chaque ligne de la liste
'si elle est sélectionnée
If UserForm1.ListBox1.Selected(i) Then 'Boolean
'on cré un tableau virtuel des sélections
tableau(j) = UserForm1.ListBox1.List(i)
j = j + 1
End If
Next i
'si aucune sélection n'est faite, on considère qu'elles le sont toutes
If j = 1 Then MsgBox "faites un choix ou annuler": Exit Sub
'Debug.Print tableau.Value
Worksheets(1).Range("BdD").AutoFilter Field:=3, Criteria1:=tableau, Operator:=xlFilterValues
End Sub |
Merci pour votre aide