Coder sur un tableau filtré
Résolu/Fermé
A voir également:
- Coder sur un tableau filtré
- Code ascii tableau - Guide
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Trier un tableau excel - Guide
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
24 mars 2017 à 11:02
24 mars 2017 à 11:02
Bonjour Embre, bonjour le forum,
Un exemple :
Dans l'onglet Feuil1 d'un fichier Excel, en A1 le mot : Données
de A2 à A29 des valeurs au hasard dont 7 fois la valeur 20
Puis le code ci-dessous à adapter à ton cas :
Le premier message affichera 28 et le second 7...
Un exemple :
Dans l'onglet Feuil1 d'un fichier Excel, en A1 le mot : Données
de A2 à A29 des valeurs au hasard dont 7 fois la valeur 20
Puis le code ci-dessous à adapter à ton cas :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglet) Dim DL As Long 'déclare la variable DL (Dernière Ligne) Dim PL As Range 'déclare la variable PL (PLage) Set O = Worksheets("Feuil1") 'définit l'onglet O DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée de la colonne "A" de l'onglet O Set PL = O.Range("A2:A" & DL) 'défini la palge PL MsgBox "Nombre total de lignes : " & PL.Cells.Count 'message O.Range("A1").AutoFilter Field:=1, Criteria1:=20 'fitre la colonne 1 avec 20 comme critère MsgBox "Nombre de lignes filtrées : " & PL.SpecialCells(xlCellTypeVisible).Cells.Count 'message End Sub
Le premier message affichera 28 et le second 7...
MERCI BEAUCOUP ! Désolée je crie mais tu me sauve :) Une erreur de compilation est survenue a cause du field qui apparement doit avoir une fin mais je ne vois pas laquelle.. Voici la ligne au cas où :
O.Range("GO5").AutoFilter Field:=1, Criteria1:= Criteres, Operator:=xlFilterValues
Sachant que j'ai remplacé evidemment ton Criteria1:=20 par pleeeeeins de criteres que j'ai donc mis dans une "variable" Criteres As Variant :)
Merci encore :) !
O.Range("GO5").AutoFilter Field:=1, Criteria1:= Criteres, Operator:=xlFilterValues
Sachant que j'ai remplacé evidemment ton Criteria1:=20 par pleeeeeins de criteres que j'ai donc mis dans une "variable" Criteres As Variant :)
Merci encore :) !
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
5 avril 2017 à 19:38
5 avril 2017 à 19:38
Bonjour Embre, bonjour le forum,
Je ne pense pas que tu puisses remplacer impunément le critère par plein de critères à moins que ce ne soit un tableau Array forcément de type Variant. Mais je t'avoue que je ne ne suis pas top dans ce domaine. Utilise l'enregistreur de macro. Fait le filtre automatique à la main et regarde le résultat qu'il propose et compare avec le tien. C'est comme ça que je fais...
Je ne pense pas que tu puisses remplacer impunément le critère par plein de critères à moins que ce ne soit un tableau Array forcément de type Variant. Mais je t'avoue que je ne ne suis pas top dans ce domaine. Utilise l'enregistreur de macro. Fait le filtre automatique à la main et regarde le résultat qu'il propose et compare avec le tien. C'est comme ça que je fais...
Du coup j'ai fait ça au départ mais ca posait des soucis alors au lieu de les résoudre en bonne flemmarde j'ai changé en faisant autrement.
Du coup mon code final donne ça (pour les prochains à poser le même genre de questions :
Sub MacroTest()
Dim O As Worksheet
Dim DLC As Long
Dim PL As Range
Dim RP As Long
Dim RN As Long
Set O = Worksheets("Demandes")
DLC = O.Cells(Application.Rows.Count, "C").End(xlUp).Row
Set PL = O.Range("C5:C" & DLC) 'défini la palge PL
MsgBox "Nombre total de demandes : " & PL.Cells.Count
O.Range("$A$4:$IK$3355").AutoFilter Field:=199, Criteria1:="<>"
'MsgBox "Nombre de lignes filtrées : " & PL.SpecialCells(xlCellTypeVisible).Rows.Cells.Count 'message
RP = ((100 * (PL.SpecialCells(xlCellTypeVisible).Rows.Cells.Count)) / (PL.Cells.Count))
RN = 100 - RP
MsgBox "Pourcentage de réponses positives = " & RP
MsgBox "Pourcentage de réponses négatives = " & RN
End Sub
Merci encore ThauTheme tu m'as sauvé :) !
Du coup mon code final donne ça (pour les prochains à poser le même genre de questions :
Sub MacroTest()
Dim O As Worksheet
Dim DLC As Long
Dim PL As Range
Dim RP As Long
Dim RN As Long
Set O = Worksheets("Demandes")
DLC = O.Cells(Application.Rows.Count, "C").End(xlUp).Row
Set PL = O.Range("C5:C" & DLC) 'défini la palge PL
MsgBox "Nombre total de demandes : " & PL.Cells.Count
O.Range("$A$4:$IK$3355").AutoFilter Field:=199, Criteria1:="<>"
'MsgBox "Nombre de lignes filtrées : " & PL.SpecialCells(xlCellTypeVisible).Rows.Cells.Count 'message
RP = ((100 * (PL.SpecialCells(xlCellTypeVisible).Rows.Cells.Count)) / (PL.Cells.Count))
RN = 100 - RP
MsgBox "Pourcentage de réponses positives = " & RP
MsgBox "Pourcentage de réponses négatives = " & RN
End Sub
Merci encore ThauTheme tu m'as sauvé :) !