filtrage avec Autofilter

B

brett

Guest
salut à tous,

je ne sais pas comment tester que le résultat de mon filtrage sur une valeur de colonne (codage VBA sur une feuille de calcul) ne renvoie aucune occurence (feuille vide avec le filtre!)

quelqu'un connait une solution à mon pb?

d'avance, merci.

brett
 
T

Thierry

Guest
Bonjour Brett,


En enregistrant une macro, le code VBA d'un auto-filter donne çà :

Selection.AutoFilter Field:=2, Criteria1:="X"

Est-ce que tu as quelque chose de ressemblant ?

Il est certain que si tu n'as pas de "x" dans la colonne "B" tu n'auras aucune occurence...

Essaie d'être plus détaillé dans ta question....

@+Thierry
 
B

brett

Guest
mon pb n'est pas le codage du filtre, mais je veux pouvoir tester que le filtre ne renvoi aucune valeur

dans ton exemple, si ma colonne ne contient aucune ligne à 'X', le résultat sur la feuille est : aucune ligne restituées sur la feuille, ok?

mais moi ce que je veux, c'est tester qu'il n'y a aucune ligne résultat en VBA !! et là je sais pas comment faire !! help !!
j'ai essayé en rusant, c'est à dire en codant un specialcells pour atteindre la dernière cellule de ma feuille, mais ça ne marche pas, excel garde trace de la derière cellule activé auparavent (sur une ancienne requête de filtrage par exemple)

c'est pas si simple à tester croyez moi, car les lignes non sélectionnées sont seulement masquées, donc si j'ai par exemple 8 lignes sur ma feuilles, l'indice de la 1ère ligne (qui est vide si mon filtre renvoie rien du tout) n'est pas 1 mais 9 !!! donc je suis pas capable de dire en testant Selection.Row
de dire si le filtre à retourné des lignes ou pas.

Y a -t-il un pro des codages de filtre en VBA ici ?

d'avance merci pour son aide :eek:)

brett
 
T

Thierry

Guest
Re Salut Brett,

Oui je comprends mieux,

regarde ce fichier que j'ai mis à dispostion sur le forum avec ce lien :

http://www.excel-downloads.com/html/French/forum/download.php/1,6182,402/Mail100LigneFilter.xls

Là tu trouveras cette instruction mis en oeuvre...
SpecialCells(xlCellTypeVisible)

Je pense que la clef de ta solution est là...

Regarde ce fichier, je pense que tu trouveras ta solution, sinon fait moi signe...

Bonne Nuit
@+Thierry
 
T

Ti

Guest
tu peux tout simplement utiliser la fonction sous.total. Dans VBA tu peux l'appeler avec Worksheetfunction :


Sub test()
Dim RangeTest As Range, NbItem As Double
Set RangeTest = Range("A1:A15")
NbItem = Application.WorksheetFunction.Subtotal(3, RangeTest)
MsgBox NbItem
End Sub


si ta liste filtrée est en A1:A15, Subtotal te renvoie le nombre d'éléments trouvés (ça marche, qu'il y ait un filtre ou non). Il faut penser à Sous.Total chaque fois qu'on veut faire un opération (somme, moyenne etc) sur les seuls éléments filtrés d'une liste.
 

Discussions similaires

Statistiques des forums

Discussions
312 184
Messages
2 086 006
Membres
103 088
dernier inscrit
Psodam