Boucle compteur sous conditions

Bonjour,

Je suis actuellement à la recherche d'aide pour comprendre une erreur sur une macro VBA qui est sensé me renvoyer une valeur moyenne de plusieurs cellules.

L'objectif de la macro est de remplir une case déterminé avec une valeur moyenne résultante d'un compteur d'un nombre de valeurs à prendre en compte. (Moyenne du temps du relai N°1, Moyenne du temps du relai N°2 etc...)

Dans l'image ci-joint, les colonnes surlignées sont les colonnes utiles pour la macro. Actuellement le compteur me renvoie le bon nombre de lignes a prendre en compte pour le relai 1 (22 temps à prendre en compte), mais la valeur moyenne calculée n'est pas bonne ...

Je me permets de vous joindre le fichier si jamais vous avez besoin de plus de renseignements. Il s'agit de la Macro du module 3 : Test_Relay

Merci d'avance pour l'aide ou les axes de réflexions que vous pourrez m'apporter !

Alex

Ps : Je suis nouveau dans le monde de la programmation et j'explique terriblement mal je suis désolé...

Sub Test_Relay()

Dim NbTr% 'Compteur du nombre de tour dans le relai
Dim Srelay As Double 'Valeur renvoyant la moyenne du relai

NbTr = 1
Srelay = 0

For i = 2 To 3054 'Nombre de lignes totales à balayer dans le tableau
    j = 2
    While Cells(j, "J") = Cells(j + 1, "J") 'La colonne J renvoie au numéro du relai
        NbTr = NbTr + 1
    j = j + 1
    Wend

    For y = i To NbTr
    Srelay = Srelay + Cells(y, "L") 'La colonne L renvoie au temps au tour du pilote
    Next y
    Srelay = Srelay / NbTr

        If Cells(i, "J") <> Cells(i - 1, "J") Then
        Cells(i, "O") = Srelay 'Case à remplir avec la valeur moyenne du relai
        End If

Srelay = 0
NbTr = 1

Next i

End Sub
image 2020 11 28 180858

Bonjour,

Je n'ai pas essayé de comprendre ton code. un essai:

Dim NbTr%, DL As Integer, TCumul As Double, i As Integer, CelDeb As Integer

DL = Range("A" & Rows.Count).End(xlUp).Row
NbTr = 0
TCumul = 0
CelDeb = 2
For i = 2 To DL
        NbTr = NbTr + 1
        TCumul = TCumul + Cells(i, 12)
    If Cells(i, 10).Value <> Cells(i + 1, 10).Value Then
        Cells(CelDeb, 15).Value = TCumul / NbTr
        CelDeb = i + 1
        NbTr = 0
        TCumul = 0
    End If
Next

A+

Tu es juste un génie merci je vais essayer de comprendre ce qui n'a pas marché dans le mien et comparer avec ce que tu as utilisé !
Bonne soirée !

Rechercher des sujets similaires à "boucle compteur conditions"