XL 2019 fonctions COUNTIF and COUNTIFS sur une plage de données filtrée en vba

SandraIng

XLDnaute Nouveau
Bonjour,

je suis débutante sur ce forrum et en vba (j'espère donc avoir votre patience, aide et bienveillance tant sur mon code que sur ma façon de poser ma question dans le forum).
J'ai une base donnée excel sur laquelle j'ai un filtre date.
J'utilise ensuite des fonctions countif and countifs pour obtenir le nombre de lignes correspondant aux critères demandés dans countif et countifs.
Mais voilà, cela fonctionne trés bien mis à part le fait que les résultats obtenus tiennent compte des cellules masquées du fait du tri (ce que bien entendu je ne souhaite pas).

Ci dessous la partie du code fonctionnant mais tenant compte des cellules masquées dans les résultats:

With Worksheets("IB_AB5")

Worksheets("FIMIS").Range("B23").Value = WorksheetFunction.CountIf(Range("AH10:AH" & DL), "=4") 'DOMI BE

Worksheets("FIMIS").Range("B33").Value = WorksheetFunction.CountIfs(Range("AF10:AF" & DL), "=4", Range("AH10:AH" & DL), "=4") 'PPE EN BE

End With


‘DL est la dernière ligne qui a été défini plus en amont du code

J’ai bien essayé de combiner ces lignes countif et countifs avec : « .SpecialCells(xlCellTypeVisible) » mais cela ne semble pas être permis et donne des messages d’erreur.

Je pensais alors à un code du genre :

With Worksheets("IB_AB5") 'feuille où sont les données

Worksheets("FIMIS").Range("B23").Value = WorksheetFunction.CountIf(Range("AH10:AH" & DL) .SpecialCells(xlCellTypeVisible), "=4") 'DOMI BE
'"FIMIS" est la feuille sur laquelle le résultats arrive et qui comprend le bouton de lancer la macro complète

Worksheets("FIMIS").Range("B33").Value = WorksheetFunction.CountIfs(Range("AF10:AF" & DL) .SpecialCells(xlCellTypeVisible), "=4", Range("AH10:AH" & DL) .SpecialCells(xlCellTypeVisible) , "=4") 'PPE EN BE

End With


Auriez vous la gentillesse de m’aiguiller afin que je puisse utiliser Countif and countifs uniquement sur les lignes non masquées suite à mon tri svp ?

A noter, que le tri est réalisé par un code vba et non manuel de type (juste pour info) :

critère = InputBox("Année à filtrer:", "FILTRE")

DateFin = CLng(DateValue(critère))

Plage.AutoFilter

Plage.AutoFilter field:=5, Criteria1:="<" & DateFin

Merci à vous tous (par avance)
 

xUpsilon

XLDnaute Accro
Bonjour,

A ma connaissance il n'y a pas de countif à proprement parler repérant les cellules cachées.
En revanche, pourquoi ne pas ajouter en paramètre de la ligne du COUNTIF le même filtre que celui que tu appliques à ton tableau ? Si tu affiches ce qui est "<" DateFin alors tu peux COUNTIFS(.............,Colonne Concernée, "<" & DateFin).
Sinon, tu peux boucler sur toutes tes lignes avec un For ou un While et tester la valeur "Range(___).Hidden". Si c'est FALSE, la ligne est visible, donc tu peux incrémenter une certaine valeur de comptage.

Bonne journée,
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Ceci fonctionne :
MaSomme = Application.SUBTOTAL(9,Range("Journal[Montant]"))
Où MaSomme est une variable déclarée en variant (elle pourrait contenir une valeur d'erreur xlCvErr)

Renvoie la somme de la colonne 'Montant' pour les lignes visibles après filtre du tableau structuré 'Journal'

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 971
Membres
101 852
dernier inscrit
dthi16088