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 ?
j'ai également essayé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Supprime les filtres existants If Sheets("BdD").FilterMode = True Then Sheets("BdD").ShowAllDataMessage d'erreur : "La méthode ShowAllData a échoué"
Code : Sélectionner tout - Visualiser dans une fenêtre à part ActiveSheet.ShowAllData
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)
Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager