VBA - calculer la moyenne avec average ? mauvais résultat #DIV/0

bonjour ,

je cherche a calculer une MOYENNE dans une colonne ( colonne n° 13 ) ce qui correspond à la colonne "M"

j'ajoute des données via une boucle dans les cellules de cette même colonne " lig " par ligne

donc j'attend que la boucle se termine ( i =6 )

pour ensuite essayer de faire ma moyenne sur la lig en cours et les 5 précédentes cellules

une fois la moyenne obtenu on affiche le resultats en colonne (14 ) sur la ligne active

et ensuite je recommence l’opération pour d'autres valeurs

voici le résultat que j'obtiens "" "#DIV/0! " (pour info la valeur d'une cellule ( non vide ) peut être égale a 0 )

exemple de valeur ( 40 -50-10 -0-20-30 ) = moyenne de 25 alors que le résultat devrais être de 25 moi j'ai " "#DIV/0! "

du coup je sais pas trop comment résoudre ce souci , merci de votre aide

voici mon code vba

                                If i = 6 Then          

                               moy = Application.Average(Range(Cells(lig, 13), Cells(lig - 5, 13)))
                               '  MsgBox (moy)

                              .Cells(lig, 14) = moy  ' "moyenne"

                              end if 
 .....

Bonjour,

Ton code semble correct ... ce doit être autre chose dans ton fichier ...

Aurais-tu un bout de fichier pour tester où le souci s'avère ?

ric

pas simple de mettre le fichier , il s'agit de module imbriquées les uns dans les autres ....

du coup j'ai décomposer pour afficher les données ( histoire de voir si les valeurs sont bien prises en compte , les valeurs sont bonnes mais j'ai eu ce message d'erreur avec les quelques lignes suivantes cela m’écris " la méthode range de l'objet global échoué " ( je sais pas si cette information peux aider pour mon probleme originel )

 .Cells(lig, 14) = (Range(Cells(lig, 13)))
                            .Cells(lig, 15) = (Range(Cells(lig - 1, 13)))
                            .Cells(lig, 16) = (Range(Cells(lig - 2, 13)))
                            .Cells(lig, 17) = (Range(Cells(lig - 3, 13)))
                            .Cells(lig, 18) = (Range(Cells(lig - 4, 13)))
                            .Cells(lig, 18) = (Range(Cells(lig - 5, 13)))

Bonjour,

(Range(Cells(lig, 13))

Je ne connais pas cet utilisation que tu fais de range ...

Je connais Range(Cells(lig, 13), Cells(lig, 22)) ... où les 2 cellules composent les deux parties d'un Range ..

Sinon, utilise seulement Cells(lig, 13) ...

ric

Bonjour,

Peut-être avec :

moy = Application.Average(.Range(.Cells(lig, 13), .Cells(lig - 5, 13)))

bonjour

Merci Patrice cela fonctionne , c'est subtil j'aurai pas trouvé " . "

pour Ric << (Range(Cells(lig, 13))

""Je ne connais pas cet utilisation que tu fais de range"" ...>> moi non plus lol , je bricole le vba , et du coup parfois je fais un peu n’importe quoi

Rechercher des sujets similaires à "vba calculer moyenne average mauvais resultat div"