Moyenne de cellules de différents fichiers
Bonjour à toutes et à tous,
Après avoir trouvé comment faire la somme de cellules de différents fichiers, je reviens vers vous car je dois faire la moyenne des cellules.
En effet dans mon tableau, je dois additionner la plupart des cellules, mais certaines contiennent déjà des moyennes, or additionner des moyennes c'est pas top.
Il faut donc que je fasse la moyenne de ces moyennes. La démarche est la même sauf qu'au lieu d'additionner les cellules A3 de tous les fichiers, je souhaite faire la moyenne des cellules A3 de mes fichiers.
Voici le bout de code concernant la somme. Je ne vois pas où caler mon "average".
Merci de votre aide
Workbooks(NomFichier).Sheets(1).Range("B71:M71").Copy
ThisWorkbook.Sheets(1).Range("B71:M71").PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
bonjour,
tu comptes le nombre de fichiers que tu as ouverts et tu divises le total de chaque cellule par ce nombre
Bonjour,
Oui j'y ai pensé, mais si certains fichiers n'ont pas la donnée, il faut aller vérifier etc.
Ou si le nombre de fichier varie.
Sinon suite à la formule de somme, faire une formule de moyenne qui divise la somme par le nombre de fichiers qui a été ouvert du style "NB fichier ouvert"
C'est pas compliqué d'aller voir bien sûr, mais s'il y a moyen d'automatiser et simplifier je suis preneur
Bonjour,
une solution possible.
Sub Macro1()
Dim NomFichier As String, CheminFichier As String, i&, j&
Dim FichierOpen As String 'Pour le chemin avec le fichier à ouvrir
CheminFichier = " " 'Chemin du répertoire des fichiers ex "c:\Excel\
NomFichier = Dir(CheminFichier & "\*.xlsx")
fo = 0 'compte le nombre de fichiers pris en compte
Do While NomFichier <> "" ' parcours la liste de tes fichiers d'extension .xls
FichierOpen = CheminFichier & NomFichier
Workbooks.Open FichierOpen 'Ouverture du fichier à lire
fo = fo + 1
'Copie dans la cellule C3 (du nouveau fichier) la cellule C3 du fichier xls additionnée du contenu
'A adapter avec le format de ta feuille excel et à copier autant de fois pour toutes les cellules à copier
Workbooks(NomFichier).Sheets(1).Range("C3:F6").Copy
ThisWorkbook.Sheets(1).Range("C3:F6").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False
Workbooks(NomFichier).Close
NomFichier = Dir
Loop
If fo > 0 Then 'si nombre de fichiers pris en compte > 0 on calcule la moyenne
saveA1 = Sheets(1).Range("A1").Formula
ThisWorkbook.Sheets(1).Range("A1") = fo
ThisWorkbook.Sheets(1).Range("A1").Copy
ThisWorkbook.Sheets(1).Range("C3:F6").PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide, SkipBlanks:= _
False, Transpose:=False
Sheets(1).Range("A1").Formula = saveA1
End If
Application.CutCopyMode = False
End Sub