Bonjour,
Je cherche =E0 faire une moyenne sur une plage de donn=E9es variables.
La plage est variables car par macro je viens ins=E8rer de nouvelles
donn=E9es par insertion de lignes sous une ent=EAte situ=E9e au milieu de
feuille.
J'ai d'abord utiliser la fonction excel : Moyenne (nomplage) ou
nomplage est un nom d=E9fini par la formule :
=3DDECALER('feuille'1!$E$13;;;NBVAL('feuille'1!$E:$E)-1)
Le probl=E8me est qu'=E0 l'insertion d'une nouvelle donn=E9e, Excel
modifie automatiquement la formule d'une ligne et je me retrouve avec
nomplage =3DDECALER(feuille1!$E$14;;;NBVAL(feuille1!$E$E)-1)
Donc pas de mise =E0 jour de la moyenne.
Je me suis donc tourn=E9 vers VBA et la petite macro suivante :
sub a()
Dim E13 As Range
Dim L As Long
Set E13 =3D Sheets("feuille1").Range("E13")
L =3D E13.End(xlDown).Row
R =3D Sheets("feuille1").Range("E13:E" & L)
Sheets("feuille1").Range("C4").Value =3D WorksheetFunction.Average(R)
end sub()
J'=E9tais assez satisfait du r=E9sultat jusqu'=E0 ce que je test avec des
cases vides entre certaines donn=E9es.
Le probl=E8me est que l'astuce End(xlDown) s'arr=E8te =E0 la premi=E8re
case vide rencontr=E9e m=EAme si sur les lignes en dessous de cette case
vide il y a des valeurs. Donc en cas d'erreur lors de l'insertion des
nouvelles donn=E9es cette solution ne fonctionnerait pas.
1/ Y a t'il une alternative simple =E0 End(xlDown) dans ce cas ?
2/ Quelle solution privil=E9gier ? VBA ou une solution Excel ?
3/ Pour la mise =E0 jour apr=E8s insertion des donn=E9es, vaut-il mieux
passer par une sub situ=E9e dans mon module que j'appelle juste apr=E8s
l'insertion ou par une sub d'=E9v=E9nement change situ=E9e dans la feuille
?
Merci de votre aide et de vos conseils (les questions 2 et 3 =E9tant =E0
titre indicatif afin d'all=E8ger le classeur qui a d=E9j=E0 beaucoup de
proc=E8dures)