Calcul moyenne boucle

Bonjour,

Je suis débutant en VBA et je souhaiterai avoir une aide sur un calcul de moyenne en boucle.

J'ai 116 lignes pour un nombre de colonne aléatoire selon les jours, je souhaiterai savoir comment on peut calculer une moyenne pour chaque lignes tout en mettant en place le système de "cellule vide".

J'arrive a calculer une moyenne mais seulement pour une seule case, mais en boucle je tourne un peu en rond...

Je vous remercie d'avance pour votre réponse.

Bonjour,

116 lignes pourquoi vouloir faire ça en VBA

Bonjour ,

Oui je sais qu'on peut faire ça rapidement via excel seulement, mais c'est uniquement pour un gain de temps

#demandeprofessionnelle

Bonjour,

tout en mettant en place le système de "cellule vide".

C'est quoi un -- système de "cellule vide" -- ?

Bonjour Theze,

Quand je dis système de cellules vide c'est qu'étant donné que mes colonnes varient selon les jours, il faudrait que j'utilise la fonction cellule vide pour détecter la première cellule vide qui arretera ma boucle de calcul.. Tu vois ?

Re,

Quand je dis système de cellules vide c'est qu'étant donné que mes colonnes varient selon les jours, il faudrait que j'utilise la fonction cellule vide pour détecter la première cellule vide qui arretera ma boucle de calcul.. Tu vois ?

Perso, je ne comprend pas

Sinon pour la moyenne il suffit d'utiliser une fonction dans une colonne qui ne sera jamais atteinte et de mettre en AA2 par exemple :

=MOYENNE.SI(B2:Z2;"<>";B2:Z2)

A+

Re,

Pour faire simple, tous les jours j’extrais des données d'un logiciel. En tout j'ai 116 variables avec une donnée toutes les 30 min.

Seulement, certains jours je vais avoir que 4 données et d'autres 60. Ca dépend de la production.

Donc je voulais calculer la moyenne de chaque variables, en fonction du nombre de colonne que j'ai ce jour la, sans refaire une macro a chaque fois.

Si tu le veux en VBA, voici :

Sub Moyenne()

    Dim Tbl() As Double
    Dim Col As Integer
    Dim Lig As Integer
    Dim I As Integer
    Dim J As Integer
    Dim Max As Integer

    With ActiveSheet

        Lig = .Cells(.Rows.Count, 1).End(xlUp).Row 'sur colonne A
        Col = .Cells(1, .Columns.Count).End(xlToLeft).Column

        For I = 2 To Lig

             Col = .Cells(I, .Columns.Count).End(xlToLeft).Column
             If Col > Max Then Max = Col
             J = J + 1: ReDim Preserve Tbl(1 To J)
             Tbl(J) = Application.Average(.Range(.Cells(I, 1), .Cells(I, Col)))

        Next I

        'résultat dans le colonne la plus à droite après la ligne la plus longue
        .Range(.Cells(2, Max + 1), .Cells(2, Max + 1).Resize(UBound(Tbl))).Value = Application.Transpose(Tbl)

    End With

End Sub

mais comme dit Bruno , je ne vois pas l'utilité d'un telle procédure ? De toute façon, la fonction MOYENNE() ne prend pas en compte les cellules vides !

Re,

Je sais mais c'est une demande pro je n'y peux rien.

Merci pour votre aide en tout cas.

Cldt

Bonjour,

Oui je sais qu'on peut faire ça rapidement via excel seulement, mais c'est uniquement pour un gain de temps

à-priori totalement erroné.

Si tu as un processeur avec 8 threads, sur feuille 8 calculs sont réalisés simultanément.

VBA n'utilise qu'un seul thread et donc un seul calcul à la fois...

Non seulement tu te compliques la vie, avec une méthode que tu ne maitrises pas, mais en plus tu rigidifies ta feuille et tu la ralentis.

Commence par apprendre les bases d'excel, ça te sera plus profitable.

eric

bonjour à tous

la demande "pro" met la pression

cependant, et justement en milieu pro, il faut faire simple et fiable. Donc ici avec une ou des formules basiques.

amitiés à tous

Rechercher des sujets similaires à "calcul moyenne boucle"