Comment perfectionner la fonction average sous vba...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

Dernière édition:
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é
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
3
Affichages
800
Retour