VBA calculer la moyenne d'une colonne après filtre

Bonjour,

j'ai un petite problème dans ma macro.

cette macro fait deux filtre sur la colonne S puis colonne O. sur "S" elle sélectionne la semaine -1 et sur "O" elle désélectionne les cellule vides.

en suite elle calcul la moyenne sur les colonne O. cependant la commande qui calcul la moyenne généré une erreur qui dis : erreur 13 incompatible type.

voici le code ci dessous, SVP aidez moi a résoudre ce blem. je vous remercie d'avance .

Sub Moyenne_ER()
'
' Macro2 Macro
'

'
    ActiveSheet.Range("$A$7:$AG$76").AutoFilter FIELD:=23, Criteria1:=Format(datetest, "ww", vbMonday, vbFirstFourDays - 1)

    ActiveSheet.Range("$A$7:$AG$76").AutoFilter FIELD:=15, Criteria1:="<>"
     Dim x As Long

    x = Application.Subtotal(1, Columns("O"))
    MsgBox "la moyenne des Ecart de reprise est de " & x

'If Worksheets("fichier suivi").AutoFilterMode Then
    ' Worksheets("Fichier suivi").AutoFilterMode = False
'End If
End Sub

bonjour

pourquoi du VBA alors qu'Excel est un tableur ?

sur Word par contre, il faudrait VBA.

jmd a écrit :

bonjour

pourquoi du VBA alors qu'Excel est un tableur ?

sur Word par contre, il faudrait VBA.

bonjour,

en fait mon responsable veut que j'automatise ça grâce a une macro il clique il aura sa moyenne.

du coup faudrait que je réussisse a l'exécuter.

tu veux exécuter ton responsable ?

un exemple de moyenne après "filtrage" (je triche avec des SI)

même pas besoin de cliquer une touche (comme ton chef le fait sur sa calculatrice des années bissextiles)

évite le VBA à tout prix

55test.xlsx (8.71 Ko)

Bonjor,

A tester.

Cdlt.

Public Sub Moyenne_ER()
Dim rng As Range, rng2 As Range
Const LCOL As Byte = 14
Dim m As Double
    With ActiveSheet
        If .FilterMode Then .ShowAllData
        With .Range("$A$7:$AG$76")
            .AutoFilter field:=23, Criteria1:=Format(datetest, "ww", vbMonday, vbFirstFourDays - 1)
            .AutoFilter field:=15, Criteria1:="<>"
        End With
        With .AutoFilter.Range
            On Error Resume Next
            Set rng = .Offset(1, LCOL).Resize(.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
            On Error GoTo 0
        End With
        If rng Is Nothing Then
            MsgBox "Il n'y a pas de cellules correspondantes...", vbInformation
            .ShowAllData
            Exit Sub
        Else
            m = WorksheetFunction.Average(rng)
            Set rng = Nothing
        End If
    End With
    MsgBox "La moyenne des écarts de reprise est de " & Format(m, "#,##0.00")
End Sub
Rechercher des sujets similaires à "vba calculer moyenne colonne filtre"