Moyenne dans une macro VBA quand valeur dans feuille de donnée est vide

Bonjour,

j'ai besoin de votre aide pour cette macro. En effet pour le calcul de la moyenne, si les données de la feuille wbSource sont vides, la macro renvoie une erreur. La seule solution que j'ai trouvé est de remplacer les cellules vide par 0.

Avez vous une autre solution?

Sub Mensuel_SM()

' Définir les variables pour les classeurs et les feuilles

    Dim wsSource As Worksheet

    Dim wsMois As Worksheet
    Dim wsCible As Worksheet
    Dim rangeSource As Range
    Dim rangeCible As Range
    Dim Moyenne As Double
    Dim Somme As Double
    Dim Col1 As String
    Dim Col2 As String

    Set wsSource = Sheets("production endoQMSM hebdo")
    Set wsCible = Sheets("production endoQMSM Mensuel ")
    Set wsMois = Sheets("répartition semaines")

'janvier SM'
    Col1 = wsMois.Range("U9")
    Col2 = wsMois.Range("V9")
 'NB ETP direct présent'
        Moyenne = Application.WorksheetFunction.Average(wsSource.Range(Col1 & "80:" & Col2 & "80"))
        wsCible.Range("c80").Value = Moyenne
     'NB ETP direct inscrit'
        Moyenne = Application.WorksheetFunction.Average(wsSource.Range(Col1 & "81:" & Col2 & "81"))
        wsCible.Range("C81").Value = Moyenne
    'Polyvalence'
        Moyenne = Application.WorksheetFunction.Average(wsSource.Range(Col1 & "82:" & Col2 & "82"))
        wsCible.Range("c82").Value = Moyenne
    'Nb ETP indirect présent'
        Moyenne = Application.WorksheetFunction.Average(wsSource.Range(Col1 & "83:" & Col2 & "83"))
        wsCible.Range("c83").Value = Moyenne
    'NB ETP indirect inscrit'
        Moyenne = Application.WorksheetFunction.Average(wsSource.Range(Col1 & "84:" & Col2 & "84"))
        wsCible.Range("C84").Value = Moyenne

Merci de votre aide,

Philippe

bonjour,

le problème est évoqué dans le post suivant

https://forum.excel-pratique.com/excel/calcul-de-moyenne-avec-cellule-vide-ou-valeur-0-104237

Bonjour,

cela ne correspond pas à ma demande. Dans mon exemple si les valeurs sont vides, la macro se bloque. Et sur ce point que j'ai besoin d'aide.

Mais merci pour votre info

Philippe

Mais sauf erreur de ma part, si ta macro se bloque c'est qu'il y a une erreur (division par 0 car toutes tes cellules sont vides)
Donc il faut gérer cette erreur par exemple avec la formule SIERREUR

bonjour,

sauf que c'est la macro qui va générer la moyenne des cellules qui sont prises dans un onglet excel (ou les nombres sont par semaines) pour en faire une moyenne dans un autre onglet qui me sert de suivi de KPI mensuel.

bonjour chabeaud, Jacky

Sub M_Moyenne()

     'méthode1
     Dim Moyenne As Variant
     On Error Resume Next 'continuer en cas d'erreur
     Moyenne = "-": Moyenne = WorksheetFunction.Average(Range("B20:B30"))
     On Error GoTo 0
     If IsNumeric(Moyenne) Then MsgBox "okay" & vbLf & Moyenne Else MsgBox "erreur" ' si la moyenne est un chiffre, okay, autrement ...

     'méthode2
     Dim c As Range
     Set c = Range("B20:B30") 'votre plage
     If WorksheetFunction.Count(c) > 0 Then MsgBox WorksheetFunction.Average(c) Else MsgBox "erreur"

End Sub
Rechercher des sujets similaires à "moyenne macro vba quand valeur feuille donnee vide"