Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compter le nombre de ligne masquée ?

6 réponses
Avatar
sylvie.laurent82
Bonsoir,

Je traite un petit morceau de fichier,

j'ai besoin de v=E9rifier que le filtre auto est enclench=E9 sur la
feuille active, j'utilise donc:

If ActiveSheet.AutoFilterMode =3D False Then Exit Sub

'si non on sort,

Maintenant je pense qu'il faut v=E9rifier le nombre de ligne masqu=E9e,
est si =E9gale ou sup=E9rieur =E0 1 sur la feuille active alors faire le
traitement, sinon Exit sub !!

En fait si le mode filtre auto est enclench=E9, la macro se d=E9roule m^me
si aucune ligne n'est masqu=E9e, alors je pense qu'il faut ajouter ce
test

Qu'en pensez vous ?

Je vous remercie d'avance et je reste attentive aux suggestion(s)

SylVBA

6 réponses

Avatar
isabelle
bonjour SylVBA,

x = Application.Subtotal(3, Range("A:A"))
y = Application.CountA(Range("A:A"))
LigneMasquées = y - x

isabelle

a écrit :
Bonsoir,

Je traite un petit morceau de fichier,

j'ai besoin de vérifier que le filtre auto est enclenché sur la
feuille active, j'utilise donc:

If ActiveSheet.AutoFilterMode = False Then Exit Sub

'si non on sort,

Maintenant je pense qu'il faut vérifier le nombre de ligne masquée,
est si égale ou supérieur à 1 sur la feuille active alors faire le
traitement, sinon Exit sub !!

En fait si le mode filtre auto est enclenché, la macro se déroule m^me
si aucune ligne n'est masquée, alors je pense qu'il faut ajouter ce
test

Qu'en pensez vous ?

Je vous remercie d'avance et je reste attentive aux suggestion(s)

SylVBA



Avatar
sylvie.laurent82
Merci Isabelle,

N'y a t'il pas une commande du type

msgbox ( nombre de ligne masquée de la feuille active .count)
??

Merci à vous,

SylVBA
Avatar
MichDenis
Bonjour Sylvie,

2 lignes de code :

Retourne vrai ou faux ...
x = worksheets("Feuil1").AutoFilterMode
Détermine si les boutons d'un filtre automatique sont présents dans la
feuille, et ce, même si un filtre est en place ou non.

Retourne vrai ou faux...
z = worksheets("Feuil1").FilterMode
selon qu'il y a un filtre appliqué sur la plage. Ici, un filtre doit être en
application sur les données. Cela est vrai pour un filtre automatique ou
élaboré.

Cependant, dans un filtre automatique, tu peux avoir un filtre en
application et que toutes les entrées répondent au critère ... par exemple
>0 , la conséquence est qu'il est possible pour un filtre automatique d'être
en application, mais n'avoir aucune ligne masquée, car toutes les lignes
répondent au critère du filtre. Dans ce cas, même si aucune ligne est
masquée, la ligne de code retourne True.
Dans le cas d'un filtre élaboré, s'il n'y a pas de lignes masquées résultat
de l'application du filtre, la ligne de code retourne False. En
conséquence,, pour un filtre élaboré, si les données ne sont pas filtrées
sur place, la ligne de code retournera toujours false car aucune ligne sera
masquée.

Et si tu préfères compter les lignes masquées, tu peux utiliser la fonction
Sous.Total().




a écrit dans le message de groupe de
discussion :

Bonsoir,

Je traite un petit morceau de fichier,

j'ai besoin de vérifier que le filtre auto est enclenché sur la
feuille active, j'utilise donc:

If ActiveSheet.AutoFilterMode = False Then Exit Sub

'si non on sort,

Maintenant je pense qu'il faut vérifier le nombre de ligne masquée,
est si égale ou supérieur à 1 sur la feuille active alors faire le
traitement, sinon Exit sub !!

En fait si le mode filtre auto est enclenché, la macro se déroule m^me
si aucune ligne n'est masquée, alors je pense qu'il faut ajouter ce
test

Qu'en pensez vous ?

Je vous remercie d'avance et je reste attentive aux suggestion(s)

SylVBA


Avatar
MichDenis
Bonjour Isabellle,

Qu'est-ce qui se passe, si un filtre est vraiment en application mais
que tous les enregistrements répondent au critère. Dans ce cas
aucune ligne sera masquée mais un filtre est quand même en
application. Non ? C'est ce pourquoi, je dis que cette approche
a une limite ... ! Bon, c'est selon ce que le demandeur recherche.




"isabelle" a écrit dans le message de groupe de discussion :

bonjour SylVBA,

x = Application.Subtotal(3, Range("A:A"))
y = Application.CountA(Range("A:A"))
LigneMasquées = y - x

isabelle

a écrit :
Bonsoir,

Je traite un petit morceau de fichier,

j'ai besoin de vérifier que le filtre auto est enclenché sur la
feuille active, j'utilise donc:

If ActiveSheet.AutoFilterMode = False Then Exit Sub

'si non on sort,

Maintenant je pense qu'il faut vérifier le nombre de ligne masquée,
est si égale ou supérieur à 1 sur la feuille active alors faire le
traitement, sinon Exit sub !!

En fait si le mode filtre auto est enclenché, la macro se déroule m^me
si aucune ligne n'est masquée, alors je pense qu'il faut ajouter ce
test

Qu'en pensez vous ?

Je vous remercie d'avance et je reste attentive aux suggestion(s)

SylVBA





Avatar
isabelle
bonjour SylVBA,

MsgBox Application.CountA(Range("A:A")) - Application.Subtotal(3,
Range("A:A"))

isabelle

a écrit :
Merci Isabelle,

N'y a t'il pas une commande du type

msgbox ( nombre de ligne masquée de la feuille active .count)
??

Merci à vous,

SylVBA





Avatar
Excel
Bonjour Sylvie,

De passage, que penses tu de cette idée:

Pour compter le nombre de ligne masquée :
msgbox Range("A:A").SpecialCells(xlCellTypeVisible).Count

Suivant ta demande:
"Maintenant je pense qu'il faut vérifier le nombre de ligne masquée,
est si égale ou supérieur à 1 sur la feuille active alors faire le
traitement, sinon Exit sub !! "

Si au moins une ligne masquée alors sortir de la procédure:
If ActiveSheet.Rows.Count > Range("A:A").SpecialCells
(xlCellTypeVisible).Count Then Exit Sub

Cela répond t'il à ta demande

Bonne lecture

Pat Rednef



On 11 mai, 23:40, isabelle wrote:
bonjour SylVBA,

MsgBox Application.CountA(Range("A:A")) - Application.Subtotal(3,
Range("A:A"))

isabelle

a écrit :



> Merci Isabelle,

> N'y a t'il pas une commande du type

> msgbox ( nombre de ligne masquée de la feuille active .count)
> ??

> Merci à vous,

> SylVBA- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -