Bonjour les forumeurs,
j'ai un problème dans une de mes macros.
En fait je souhaiterai réaliser une moyenne de données présentes dans différents onglets suivants des critères.
Ma Macro tourne correctement, les formules s'inscrivent bien dans les formules adéquates. Dans la cellule désirée je retrouve bien ma moyenne comme si je devais la taper à la main. Mais j'ai une erreur #VALEUR! alors que la formule est correcte. De plus, lorsque je vais sur la cellule (F2) et que j'exécute avec la touche Entrée ma formule, la valeur renvoyée correspond bien à la moyenne demandée.
Pourquoi cette exécution ne se fait pas avec la macro ?
Voici mon code :
Merci par avance
j'ai un problème dans une de mes macros.
En fait je souhaiterai réaliser une moyenne de données présentes dans différents onglets suivants des critères.
Ma Macro tourne correctement, les formules s'inscrivent bien dans les formules adéquates. Dans la cellule désirée je retrouve bien ma moyenne comme si je devais la taper à la main. Mais j'ai une erreur #VALEUR! alors que la formule est correcte. De plus, lorsque je vais sur la cellule (F2) et que j'exécute avec la touche Entrée ma formule, la valeur renvoyée correspond bien à la moyenne demandée.
Pourquoi cette exécution ne se fait pas avec la macro ?
Voici mon code :
Code:
Option Explicit
Sub Moyenne()
Dim Sem1, Sem2 As String 'Valeur des semaines initiale et finale
Dim Ws As Worksheet
Dim PlageSem, ResultSem1, ResultSem2 As Range
Dim c, j As Integer
Dim oSem1, oSem2 As Object
Dim PlageFiliale, ResultFiliale As Range
Dim Fil As Object
Sem1 = Sheets("Moyenne").Range("C6").Value
Sem2 = Sheets("Moyenne").Range("H6").Value
For Each Ws In Worksheets
If Ws.Name <> "Moyenne" And Ws.Name <> "Synthèse" And Ws.Name <> "Graphs" Then
c = Ws.Range("A65536").End(xlUp).Row + 1
Set PlageSem = Ws.Range("A3:A" & c)
For Each oSem1 In PlageSem 'Recherche de la semaine de début
Set ResultSem1 = PlageSem.Find(What:=Sem1, LookIn:=xlValues, LookAt:=xlPart)
If ResultSem1 Is Nothing Then
'MsgBox "Aucune donnée pour la semaine de début sélectionnée pour l'agence " & Ws.Name & ", veuillez en sélectionner une autre et relancer le calcul", vbOKOnly + vbInformation
GoTo Suite
Else
Set ResultSem2 = PlageSem.Find(What:=Sem2, LookIn:=xlValues, LookAt:=xlPart) 'Recherche de la semaine de fin
If ResultSem2 Is Nothing Then
'MsgBox "Aucune donnée pour la semaine de fin sélectionnée pour l'agence " & Ws.Name & ", veuillez en sélectionner une autre et relancer le calcul", vbOKOnly + vbInformation
GoTo Suite
Else
Set PlageFiliale = Sheets("Moyenne").Range("A12:A37") 'se placer sur la filiale concernée
For Each Fil In PlageFiliale
Set ResultFiliale = PlageFiliale.Find(What:=Ws.Name, LookIn:=xlValues, LookAt:=xlPart)
If Not ResultFiliale Is Nothing Then
For j = 1 To 8
[B]ResultFiliale.Offset(0, j + 1).Formula = "=MOYENNE('" & Ws.Name & "'!" & ResultSem1.Offset(0, j).Address & ":'" & Ws.Name & "'!" & ResultSem2.Offset(0, j).Address & ")"
ResultFiliale.Offset(1, j + 1).Formula = "=MOYENNE('" & Ws.Name & "'!" & ResultSem1.Offset(0, j + 8).Address & ":'" & Ws.Name & "'!" & ResultSem2.Offset(0, j + 8).Address & ")"[/B]
Next
End If
Next Fil
End If
End If
Next
End If
Suite:
Next Ws
End Sub
Dernière édition: