Calcul de moyenne

Bonjour tout le monde ,

S'il vous plait je dispose de deux classeur , classeur 1 et classeur2 , le classeurs 1 contient les KPIs de 2022 et Classeur2 contient les KPIs de 2023 , à savoir que les deux classeurs ont la meme structure et les memes noms de pages. Le travail que je veux effectuer et d'inserer une colonneB dans le classeur2 qui contient la moyenne de classeur1 et cela pour chaque KPI. J'ai le code vba ci-dessous, hors le calcul de la moyenne pour des valeurs qui sont en pourcentage est éronné. Je veux un calcul fiable.

Voici le code :

Sub CalculerMoyennePourFeuilles()
Dim classeur2022 As Workbook
Dim feuille2022 As Worksheet
Dim feuille2023 As Worksheet
Dim derniereLigne As Long
Dim i As Long
Dim feuilles As Variant
feuilles = Array("KPIS1", "KPIs2", "KPIs3", "KPIs4", "KPIs5", "KPIs6", "KPIs7", "KPIs8", "KPIs9")

Set classeur2022 = Workbooks.Open(ThisWorkbook.Path & "\maintenance 2022.xlsx")

For Each feuille In feuilles
Set feuille2022 = classeur2022.Sheets(feuille)
Set feuille2023 = ThisWorkbook.Sheets(feuille)
derniereLigne = feuille2023.Cells(Rows.count, "A").End(xlUp).Row

feuille2023.Columns("B").Insert Shift:=xlToRight ' Insérer une colonne B vide

For i = 1 To derniereLigne
Dim somme As Double
Dim count As Long
somme = 0
count = 0
For Each cell In feuille2022.Range("B" & i & ":M" & i) ' Commencer à partir de la colonne C
If IsNumeric(cell.Value) Then
somme = somme + cell.Value
count = count + 1
End If
Next cell

If count > 0 Then
Dim moyenne As Double
moyenne = somme / 12 ' Correction de la formule de la moyenne

If moyenne <> 0 Then
With feuille2023.Cells(i, "B")
.Value = WorksheetFunction.Round(moyenne, 2)
.NumberFormat = feuille2022.Cells(i, "B").NumberFormat ' Copier le format de la cellule d'origine
End With
Else
feuille2023.Cells(i, "B").ClearContents
End If
End If
Next i
Next feuille

classeur2022.Close SaveChanges:=False
End Sub

Bonjour Kira,

un petit fichier stp
merci

Bonjour , voici un extrait de mes classeurs.

Merci en avance.

bonjour,

j'ai remarqué un problème : l'arrondi du pourcentage. Pour arrondir à 2 chiffres après la virgule, un nombre qui est affiché avec format pourcentage, il faut arrondir le nombre à 4 chiffres après la virgule.

2,03% correspond au nombre 0,0203.

Moi, je supprimerais cette instruction d'arrondi et gérerais l'affichage correct avec le format, par exemple "0,00%"

donc

.Value = moyenne

au lieu de

.Value = WorksheetFunction.Round(moyenne, 2)
Rechercher des sujets similaires à "calcul moyenne"