Bonjour à tous,

je suis en train de développer une fonction permettant de mettre à jour des données dans un graphique (secteur) et étant donnée le nombre important de graphique que je dois traité j'ai préféré lui dédier une fonction spécifique.

je passe toutes la partie de recherche des valeurs et des calculs qui amène au résultat de ma fonction, ma fonction renvoi une variable tableau avec 6 valeurs.

la procédure appel la fonction et met à jour les valeurs du graph correspondant cependant lorsque je vérifie mon graph après l’exécution de ma procédure, j'ai une valeur de trop affiché et elle sont décalé par rapport à ce que j'attend.

Quelqu'un pourrait-il m'expliqué pourquoi ma fonction renvoie une valeur de trop SVP

je vous met la procédure qui appel la fonction et la fonction :

Procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Centreur()
'Calcul la répartition des temps pour la fabrication d'un centreur
Const CritèreFiltre As String = "CSID001", ColonneFiltre As Integer = 5
Const Article As String = "*centreur*", Graph As String = "Graphique 14"
 
Worksheets("TDB").Activate
ActiveSheet.ChartObjects(Graph).Activate
With ActiveChart
    .SeriesCollection(1).Values = CalculTaux(Article, ColonneFiltre, CritèreFiltre)
End With
Worksheets("TDB").Activate
End Sub
et la fonction Alléger
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function CalculTaux(Recherche As String, Colfiltre As Integer, CritèreFiltre As String) As Variant
For i = 1 To nbLigne
    Set Cellule = ActiveSheet.Columns(ColOF).Cells.Find(what:=OF(i))
    If Not Cellule Is Nothing Then
        tps(1) = tps(1) + Cells(Cellule.Row, 6) 'somme les temps de prod
        tps(2) = tps(2) + Cells(Cellule.Row, 7) 'somme les temps de regalage
        tps(3) = tps(3) + Cells(Cellule.Row, 9) 'somme les temps de pannes
        tps(4) = tps(4) + Cells(Cellule.Row, 10) 'somme les temps d'arret
        tps(5) = tps(5) + Cells(Cellule.Row, 14) 'somme les temps d'Etat CN prete
        tps(6) = tps(6) + Cells(Cellule.Row, 15) 'somme les temps de attente
    End If
Next i
 
CalculTaux = tps()
End Function