Calcul de moyenne sur plage de cellules
Bonjour à tous.
Dans le cadre de ma formation, je dois mettre à jour une base de données et l'automatiser afin que les opérateurs travaillant dessus n'aient que peu d'efforts à fournir afin d'obtenir des résultats. Pour illustrer mes propos, je vais donc prendre l'exemple d'une de mes feuilles qui correspond à un suivi de matériaux pour des efforts de traction.
Il y a différentes colonnes pour différentes contraintes appliquées, dans lesquelles les opérateurs inscrivent leurs valeurs.
L'automatisation est la suivante :
Sélectionner une plage de cellules
Calculer sa moyenne et son écart-type
Définir la conformité de chacune des valeurs de la plage ( moyenne - 2 * écart-type >= valeur =< moyenne + 2 * écart-type ) alors conforme, sinon non conforme.
Mes connaissances en VBA étant limitées, j'avais souhaité utiliser des formules simples mais j'ai rapidement rencontré des problèmes avec les calculs de moyennes.
ci-dessous la macro que j'utilise afin de calculer la moyenne et l'écart-type d'une plage de cellules, de la cellule A3 à la dernière non vide.
Sub moyenne()
Dim p As Range
Set p = Range("A3:b" & Range("A3").End(xlDown).Row)
Debug.Print Application.WorksheetFunction.Average(p)
Range("B3") = Application.WorksheetFunction.Average(p)
Debug.Print Application.WorksheetFunction.StDev(p)
Range("D3") = Application.WorksheetFunction.StDev(p)
End SubTout fonctionne bien, jusqu'à ce que je laisse une cellule vide dans ma plage. Comme prévu avec la formulation End.xlDown, le calcul s'arrête. Mais je souhaiterai qu'il ne prenne pas en compte les cellules vides dans ma plage de données.
J'ai donc reformulé ma macro :
Sub selectionplagededonnees()
Dim p As Range
Set p = Range("A3", ActiveCell).Select
Debug.Print Application.WorksheetFunction.Average(p)
Range("B3") = Application.WorksheetFunction.Average(p)
End SubMais ça ne fonctionne pas, "erreur 424" et je souhaiterai savoir d'où vient le problème et comment le résoudre.
Si vous pensez qu'il est nécessaire que je vous fournisse le fichier excel, je le ferai. Je suis sous Excel 2013.
En vous remerciant de votre attention, Greggy.
PS : Je vais sûrement avoir besoin de votre aide tout au long des jours à venir, notamment dans la réalisation d'une carte de données pour ces mêmes valeurs
Greggy a écrit :ci-dessous la macro que j'utilise afin de calculer la moyenne et l'écart-type d'une plage de cellules, de la cellule A3 à la dernière non vide.
Sub moyenne() Dim p As Range Set p = Range("A3:b" & Range("A3").End(xlDown).Row) Debug.Print Application.WorksheetFunction.Average(p) Range("B3") = Application.WorksheetFunction.Average(p) Debug.Print Application.WorksheetFunction.StDev(p) Range("D3") = Application.WorksheetFunction.StDev(p) End SubTout fonctionne bien, jusqu'à ce que je laisse une cellule vide dans ma plage. Comme prévu avec la formulation End.xlDown, le calcul s'arrête. Mais je souhaiterai qu'il ne prenne pas en compte les cellules vides dans ma plage de données.
Essaie :
Set p = Range("A3:b" & Range("A65000").End(xlUp).Row)Je viens d'essayer et ça fonctionne parfaitement.
Merci de votre aide Steelson.
J'aurais sans doute d'autres questions d'ici peu de temps.