Comment perfectionner la fonction average sous vba...

SERIEUXETCOOL

XLDnaute Occasionnel
Bonsoir le Forum,

Voila mon petit souci du soir...Dans une première feuille Excel j'ai mis dans la colonne A1 une série de données. Ces valeurs sont mises dans la colonne A et démarrent en A1.

Je cherche à faire la moyenne de ces valeurs ET d'en afficher le résultat dans une deuxième feuille Excel.

Pour ce faire, j'ai deux stratégies qui fonctionnent partiellement. Mais je ne parviens pas à obtenir la solution que je veux. C'est à dire que si je modifie mes données de ma première feuille, alors j'aimerais que la moyenne soit automatiquement calculée dans la feuille numéro deux.

Et sa, je n'y parviens pas encore.

Je post ci après mon code actuel de test. Et je met en pièce jointe le fichier Excel (2003) pour ceux que sa intéresse.

Le code :

Code:
Sub CalculMoyenne()
    
Dim n As Long, b As Range

n = Sheets("Feuil1").UsedRange.Rows.Count

Sheets("Feuil2").Range("B4") = WorksheetFunction.Average(Range("A1" & ":A" & n))

Sheets("Feuil2").Range("B5") = "=AVERAGE(" & Range("A1" & ":A" & n).Address & ")"

End Sub


Les divers problèmes :

-Avec "WorksheetFunction.Average" sa marche bien. Sauf que si je change les valeur de la feuille 1 alors la moyenne ne se recalcule pas.

-Avec "AVERAGE", la moyenne se calcule et si je change les données alors la moyenne se met à jour automatiquement. Sauf que la moyenne ne se calcul pas en feuille 2 !!!

Moi je veux calculer la moyenne de la feuille 1, la faire afficher sur la feuille 2 et que cette moyenne soit actualisée si je change les données.

Que manque t'il à mon programme ?


Merci à ceux qui pourront m'aider en cette heure tardive...

André
 

Pièces jointes

  • CHARGE REGLEE.xls
    33.5 KB · Affichages: 52
  • CHARGE REGLEE.xls
    33.5 KB · Affichages: 56
  • CHARGE REGLEE.xls
    33.5 KB · Affichages: 55

Excel-lent

XLDnaute Barbatruc
Re : Comment perfectionner la fonction average sous vba...

Bonsoir SérieuxEtCool,

Concernant ta macro, quelques p'tites modifications pour rendre tout cela opérationnel!

Premier point : pour que ta macro se lance automatiquement à chaque changement de valeur, il faut créer une macro commençant non pas par :
Sub MaMacro()
...
End Sub


Mais par :
Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub


Deuxième point : il ne faut pas placer la macro dans "Module1" mais sur la "Feuil1", ainsi à chaque changement de valeur dans la "feuil1" (et uniquement celle-ci) ta macro se lancera toute seul, automatiquement.

Troisième point :
corriger ta macro. La voici ci-dessous corrigé :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim n As Long, b As Range

n = Sheets("Feuil1").UsedRange.Rows.Count

Sheets("Feuil2").Range("B4") = WorksheetFunction.Average(Range("A1" & ":A" & n))

Sheets("Feuil2").Range("B5") = "=AVERAGE(" & "Feuil1!" & Range("A1" & ":A" & n).Address & ")"

End Sub


Comme tu peux le voir, je me suis juste contenté de rajouter ceci. Car tout le reste est ok : ça fonctionne.

Voici ci-joint ton fichier corrigé.

A+
 

Pièces jointes

  • CHARGE REGLEE.xls
    31.5 KB · Affichages: 63
  • CHARGE REGLEE.xls
    31.5 KB · Affichages: 62
  • CHARGE REGLEE.xls
    31.5 KB · Affichages: 70
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Comment perfectionner la fonction average sous vba...

Bonjour le Forum, Bonjour Excel-lent,

Et bien ta solution fonctionne parfaitement en effet. Sa me conviendra très bien comme sa. Mon erreur se situait sur la syntaxe de la fonction Average avec les variables.

Maintenant sa marche^^

Merci en tout cas. C'est sympa.

A bientôt...

André
 

Discussions similaires

Statistiques des forums

Discussions
312 516
Messages
2 089 240
Membres
104 075
dernier inscrit
christophe.lienard.974