XL 2013 FILTRE & VBA

mcj1997

XLDnaute Accro
Bonjour,

En PJ, questions sur filtres et VBA,

Merci d'avance,
 

Pièces jointes

  • 30102017.xlsx
    11.8 KB · Affichages: 68

mcj1997

XLDnaute Accro
Private Sub Worksheet_Calculate()
[e3] = [SUBTOTAL(103,e6:e5000)]
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
If Target.Column = 5 And Target.Row > 5 Then [e3] = [SUBTOTAL(103,e6:e5000)]
With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub


Merci c'est parfait, j'ai réussi à automatiser en VBA pour les 3 formules.
 

mcj1997

XLDnaute Accro
Bonjour à tous,

Un autre essai qui utilise une fonction personnalisée LigAff(xplage As Range).
Cette fonction renvoie un tableau dont chaque élément i est égal :
  • à 1 si la i ème ligne de la xplage est visible
  • à 0 si la i ème ligne de la xplage est masquée
Ce tableau est un tableau est en "colonne". xplage doit être une plage de cellules contiguës. Cela fonctionne aussi s'il n'y qu'une cellule dans xplage.

Cette fonction est utilisable dans une expression de type SOMMEPROD ==> voir cellules C3 et E3.

Dans le tableau, les cellules fusionnées ont été "dé-fusionnées". Les cellules vides ont été "re-vidées".
Le filtre a été appliqué sur la zone A5:E30.


Merci je vais tester.
 

mcj1997

XLDnaute Accro
Re.
Place ceci dans le module de la feuille en question
Eventuellement adapter la plage

Code:
Private Sub Worksheet_Calculate()
[e3] = [SUBTOTAL(103,e6:e5000)]
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
If Target.Column = 5 And Target.Row > 5 Then [e3] = [SUBTOTAL(103,e6:e5000)]
With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
End Sub


Connaissez vous des sites pour apprendre à rédiger en VBA ?
 

mcj1997

XLDnaute Accro
Bonjour à tous,

Un autre essai qui utilise une fonction personnalisée LigAff(xplage As Range).
Cette fonction renvoie un tableau dont chaque élément i est égal :
  • à 1 si la i ème ligne de la xplage est visible
  • à 0 si la i ème ligne de la xplage est masquée
Ce tableau est un tableau est en "colonne". xplage doit être une plage de cellules contiguës. Cela fonctionne aussi s'il n'y qu'une cellule dans xplage.

Cette fonction est utilisable dans une expression de type SOMMEPROD ==> voir cellules C3 et E3.

Dans le tableau, les cellules fusionnées ont été "dé-fusionnées". Les cellules vides ont été "re-vidées".
Le filtre a été appliqué sur la zone A5:E30.

Je n'arrive pas à faire fonctionner votre formule en VBA.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir mcj1997,

Je n'arrive pas à faire fonctionner votre formule en VBA.

Je ne comprend pas la question. Le VBA n'est là que pour définir la fonction personnalisée LigAff(). Ensuite, on utilise cette fonction sur la feuille de calcul au sein des fonctions SOMMEPROD.

Au besoin, si votre est tableau est grand, on peut, dans les formules, agrandir les plages. Par exemple remplacer la valeur 30 par 5000.


Mais
si vous désirez n'afficher que les valeurs des totaux, voir la version v2.

Les codes sont dans les modules de code de : Feuil1, de module1 (code de la fonction modifiée) et de ThisWorkbook.
On met les totaux de la ligne 3 de Feui1 quand :
  1. on ouvre le classeur
  2. on active la feuille Feuil1 du classeur
  3. on recalcule la feuille Feuil1
  4. une valeur est modifiée au sein du tableau filtré de la feuille Feuil1
rem : il y a une petite différence en E3 par rapport à jacky67. Ma formule compte le nombre de "x" alors que celle de jacky67 compte le nombre de cellule non vide. Ce n'est pas la même chose si la colonne E peut contenir d'autres valeurs que "x" sinon c'est du pareil au même.
 

Pièces jointes

  • mcj1997- 30102017- v2.xlsm
    23.1 KB · Affichages: 39

Si...

XLDnaute Barbatruc
Bon_joir

Je m'incris toujours au(x) Tableau(x) (noirs pour certains, d'honneur pour Ma pomme et mapomme ;)).

Mj13
, pour ne pas parler dans le vide et pour exemples, j'en joins 2, l'un avec seulement 2 petites formules, l'autre plus complet quant à la question de filtrer donc avec des macros plus élaborées ;)
 

Pièces jointes

  • Tableau Filtre VBA (Variants).xlsm
    26.7 KB · Affichages: 32
  • Filtre Tableau.xlsm
    12 KB · Affichages: 28

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 250
Membres
102 836
dernier inscrit
Ali Belaachet