Réduction du code

Bonjour

y a t'il une possibilité de réduire le code ci-dessous :

With ActiveSheet.ListObjects("Tableau2")
'--- Comptage Nb/Horaire/Zone/pièces
    .Range.AutoFilter Field:=4, Criteria1:="1"       'Type Usager
    .Range.AutoFilter Field:=1, Criteria1:="Pièces"  'Type paiement
    .Range.AutoFilter Field:=3, Criteria1:="Zone 1"  'Type Zone
    nbHpZ1 = WorksheetFunction.Subtotal(3, .ListColumns(1).DataBodyRange)
    MsgBox "Nombre de pièce Z1 Horaire = " & nbHpZ1

    .Range.AutoFilter Field:=4, Criteria1:="1"       'Type Usager
    .Range.AutoFilter Field:=1, Criteria1:="Pièces"  'Type paiement
    .Range.AutoFilter Field:=3, Criteria1:="Zone 2"  'Type Zone
    nbHpZ2 = WorksheetFunction.Subtotal(3, .ListColumns(1).DataBodyRange)
    MsgBox "Nombre de pièce Z2 Horaire = " & nbHpZ2

    .Range.AutoFilter Field:=4, Criteria1:="1"       'Type Usager
    .Range.AutoFilter Field:=1, Criteria1:="Pièces"  'Type paiement
    .Range.AutoFilter Field:=3, Criteria1:="Zone 3"  'Type Zone
    nbHpZ3 = WorksheetFunction.Subtotal(3, .ListColumns(1).DataBodyRange)
    MsgBox "Nombre de pièce Z3 Horaire = " & nbHpZ3
end with

Sachant que la ligne ou je sélectionne la Zone est la seule qui change à chaque fois

Bonjour Quattro, bonjour le forum,

Peut-être comme ça :

With ActiveSheet.ListObjects("Tableau2")
'--- Comptage Nb/Horaire/Zone/pièces
    .Range.AutoFilter Field:=4, Criteria1:="1"       'Type Usager
    .Range.AutoFilter Field:=1, Criteria1:="Pièces"  'Type paiement
    .Range.AutoFilter Field:=3, Criteria1:="Zone 1"  'Type Zone
    nbHpZ1 = WorksheetFunction.Subtotal(3, .ListColumns(1).DataBodyRange)
    MsgBox "Nombre de pièce Z1 Horaire = " & nbHpZ1
    .Range.AutoFilter Field:=3, Criteria1:="Zone 2"  'Type Zone
    nbHpZ2 = WorksheetFunction.Subtotal(3, .ListColumns(1).DataBodyRange)
    MsgBox "Nombre de pièce Z2 Horaire = " & nbHpZ2
    .Range.AutoFilter Field:=3, Criteria1:="Zone 3"  'Type Zone
    nbHpZ3 = WorksheetFunction.Subtotal(3, .ListColumns(1).DataBodyRange)
    MsgBox "Nombre de pièce Z3 Horaire = " & nbHpZ3
End With

Merci

c'est bon

une autre question.

Je voudrais faire la SOMME de ma colonne B

 With ActiveSheet.ListObjects("Tableau2")
    .Range.AutoFilter Field:=4, Criteria1:="2"       'Type Usager
    .Range.AutoFilter Field:=2, Criteria1:="20"       'Type Montant
    .Range.AutoFilter Field:=1, Criteria1:="MPP"  'Type paiement
    .Range.AutoFilter Field:=3, Criteria1:="Zone 1"  'Type Zone
end with

Ci-dessus, Field:=2, et correspond donc à ma col B.

Est ce que je peux insérer du code pour faire la somme de cette colonne ?

Ici la somme sera uniquement de 20€, mais il y des moments ou la somme pourra varié : 2€, 1,5€, 2,20€ etc...

Rechercher des sujets similaires à "reduction code"