Macros pour recalcule de moyenne après création onglet [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 25 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011
-
nathan145
Messages postés
6
Date d'inscription
mercredi 25 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011
-
Salut tout le monde

je suis encore débutant niveau macros excel.

Voici ce que j'aimerais faire :

* J'ai plusieurs onglets correspondant aux différents mois de l'année (janvier, février...).
* Dans chacun de ces onglets, je rentrerai chaque mois une valeur A.
* J'ai créé un fichier récapitulatif dans lequel je souhaite calculer la moyenne de ces valeurs A sur l'ensemble de l'année.

* Y a-t-il possibilité de créer une macro qui me recalculera automatiquement cette moyenne à chaque fois qu'un nouvel onglet "mois" sera créé ??
pour ne pas avoir à aller rechercher manuellement la valeur (ce qui prendra du tps car j'ai plusieurs moyennes à calculer)

Merci bcp pour votre aide!

Nat

5 réponses

Messages postés
27644
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
324
Bonjour,

Sub Calc_Moy_onglets()
Application.Volatile

'Declaration des variables
Dim nom_cellule  As String
    nom_cellule = "A1" 'cellule ou prendre les valeurs
Dim pre_form As String
    pre_form = ""
Dim formule  As String
    formule = ""
Dim Nombre_Onglets  As Integer
    
'recherche le Nombre de feuilles dans le classeur
Nombre_Onglets = ThisWorkbook.Sheets.Count

'Boucle sur chaque feuille (sauf la dernière)
For s = 1 To Nombre_Onglets - 1
    Nom_Feuille = Sheets(s).Name ' Nom de la feuille
    'je concatene chaque nom de feuille + cellule dans la variable
    ' Pre_form
    pre_form = pre_form & "," & Nom_Feuille & "!" & nom_cellule
Next

pre_form = Mid(pre_form, 2, Len(pre_form) - 1) ' suppression du premier ","

'j'ecris la formule de la forme :
'=AVERAGE("Feuil!A1,Feuil2!A2 ..)
formule = "=AVERAGE(" & pre_form & ")"

'Insertion de la formule dans la cellule active
ActiveCell.Formula = formule
'Si tu veux indiquer en dur dans quelle cellule ecrire,
' tu peux utiliser la syntaxe :
' Sheets("Nom de la feuille").range("Nom_de_cellule").formula = formule
' En modifiant le nom de la feuille et celui de la cellule

End Sub


Si tu rencontres toujours un souci, pourrais-tu executer la macro en mode pas à pas (F8) et m'indiquer où ça bloque ?


Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
Messages postés
27644
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
324
Bonjour,

comme ça vite fait..
(en partant du principe que tu places tes moyennes sur ta derniere feuille )


Sub Calc_Moy_onglets()
nom_cellule = "A1"
Application.Volatile
pre_form = ""
Nombre_Onglets = ThisWorkbook.Sheets.Count

For s = 1 To Nombre_Onglets - 1
Nom_Feuille = Sheets(s).Name
pre_form = pre_form & "," & Nom_Feuille & "!" & nom_cellule
Next
pre_form = Mid(pre_form, 2, Len(pre_form) - 1)
formule = "=AVERAGE(" & pre_form & ")"
ActiveCell.Formula = formule
End Sub




Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
Messages postés
6
Date d'inscription
mercredi 25 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011

Salut,

Merci pour ta réponse.
Mais ça ne marche pas. J'ai remplacé le nom de cellule "A1" par la cellule où sera ma moyenne.. Y a-t-il autre chose à adapter ?

Dsl en fait j'aurais du dire "je suis zéro en macros" :-)


Autre chose, est-ce que tu pourrais me mettre en vert à côté de chaque ligne l'effet de chacune des actions ds la macro ?? histoire de comprendre

Merci pour tes précisions !!

Nat
Messages postés
6
Date d'inscription
mercredi 25 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011

ça me met un message d'erreur : 400 avec une croix rouge...
Messages postés
6
Date d'inscription
mercredi 25 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011

Finalement ça marche très bien. L'erreur venait du fait que j'avais un espace ds le nom d'une de mes feuilles.
Les explications sont très claires. C'est nickel, merci bcp !!!

Nat