Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 04h11   #1
Invité régulier
 
Inscription : août 2011
Messages : 41
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 41
Points : 6
Points : 6
Par défaut Filtre et compteur

Salut À tous,
J'aimerais faire un filtre sur un critère dans la colonne B et un autre sur la colonne k et compter ensuite le nombre de lignes non vides de la colonne A.
Voici ce que j'ai fait de très simple sur une seule colonne, mais mon problème; le compteur s'applique sur toutes les lignes. (J'ai 8 lignes non vides mais seulement 3 lignes qui contiennent le chiffre 2, mais le résultat est 8)
Code :
1
2
3
4
5
6
7
8
9
10
Sub Macro2()
' macro faite avec enregistreur de macro
Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:="2"
cellule = WorksheetFunction.CountA(Range("A:A"))
Range("d1") = cellule - 1
 
' le -1 est pour enlever la ligne des titres de colonnes.
End Sub
GROS Merci!!!
moi244 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 12h26   #2
Membre éclairé
 
Inscription : mai 2006
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 335
Points : 326
Points : 326
Bonjour à tous
Bonjour moi244

A la place de :
Code :
1
2
cellule = WorksheetFunction.CountA(Range("A:A"))
Range("d1") = cellule - 1
tu écris ceci :
Code :
Range("D1")=Range("A2", ActiveSheet.Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells.Count
Si j'ai bien compris
Dis nous
Eric
edelweisseric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 18h49   #3
Invité régulier
 
Inscription : août 2011
Messages : 41
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 41
Points : 6
Points : 6
Merci, ça fonctionne très bien, un autre astuce dans le cerveau

Bonjour,
J''ai essayé, ça fonctionne très bien, mais je n'arrive pas à appliquer un deuxième filtre sur un autre critère dans la colonne B

Code :
1
2
3
4
5
6
7
8
Range("A1").Select
    Selection.AutoFilter
      ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:="2"
      Range("B1").Select
      ActiveSheet.Range("B:B").AutoFilter Field:=1, Criteria1:="2011-10-25"
 
 
Range("E5") = Range("A2", ActiveSheet.Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells.Count
Donc, on dirait qu'il fait le filtre sur "2" dans la colonne A, mais pas le filtre de "2011-10-25" dans la colonne B.

Merci encore
moi244 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 12h18   #4
Membre éclairé
 
Inscription : mai 2006
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2006
Messages : 335
Points : 326
Points : 326
Bonjour

Tu remplaces tout ton code par ceci :
Code :
1
2
3
4
5
   Dim maplage As Range
    Set maplage = Range("A1:F34")    ' A modifier
    maplage.AutoFilter Field:=1, Criteria1:="2"
    maplage.AutoFilter Field:=2, Criteria1:="2011-10-25"
    Range("E5") = Range("A2", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells.Count
Dans Field:=1, le 1 représente la colonne "A"
Dans Field:=2, le 2 représente la colonne "B"
Et ce sera 3 pour la colonne "C", .......

Eric
edelweisseric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 14h24   #5
Invité régulier
 
Inscription : août 2011
Messages : 41
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 41
Points : 6
Points : 6
Merci beaucoup. Ça marche à merveille.
moi244 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h11.


 
 
 
 
Partenaires

Hébergement Web