XL 2013 FILTRE & VBA

  • Initiateur de la discussion Initiateur de la discussion mcj1997
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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.
 
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 ?
 
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.
 
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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
187
  • Question Question
Microsoft 365 Formule Excel
Réponses
4
Affichages
271
Réponses
30
Affichages
786
Retour