VBA : Moyenne d'une partie de ligne

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

J'ai posté un message un peu plus tôt dans la journée au sujet de calcul de moyennes sous vba.
Post résolu, cependant, j'ai un autre petit problème que je souhaite vous soumettre.
J'aimerais réaliser une moyenne d'un bout de ligne.
Globalement, pour k allant de 4 à 10, calculer moy((cellule(1,4),cellule(1,5)...cellule(1,k)).
Je pense que cela est simple, mais n'étant pas un expert, je galère un peu.

Accessoirement, je veux faire ça jusqu'à la dernière ligne de mon tableau (mais ça j'y arriverai je pense ;-))

Voilà ce que j'ai pour l'instant

Sub Bouton18_QuandClic()

Dim dercol5 As Byte
Dim derline5 As Byte
dercol5 = Range("B4").End(xlToRight).Column
derline5 = Range("B4").End(xlDown).Row


Cells(4, dercol5).Value = Application.Average(Range("B" & 6 : "B" & dercol5-1))
Next


End Sub


Merci d'avance et bon aprem

5 réponses

  1. Utilisateur anonyme
     
    Bonjour à tous,

    Je me permets de réitérer ma demande.
    Je suis un peu bloqué sans cela à vrai dire.

    Merci beaucoup aux aideurs
    0
  2. Utilisateur anonyme
     
    Bon ben j'ai opté pour la bonne vieille solution de la somme puis de la division.

    Dim dercol5 As Byte
    Dim derline5 As Byte
    dercol5 = Range("B4").End(xlToRight).Column
    derline5 = Range("B4").End(xlDown).Row
    
    Dim somme As Integer
    Dim moyenne As Integer
    
    somme = 0
    
    Dim b As Byte
    For b = 6 To dercol5 - 1
    
    somme = somme + Cells(4, b).Value
    
    Next
    moyenne = somme / (dercol5 - 1 - 5)
    Cells(4, dercol5).Value = moyenne


    ça fonctionne, mais quand même, si certains peuvent me donner la syntaxe à utiliser pour faire directement la moyenne, pour ma culture...merci
    0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Salut,
    Je ne connait pas la fonction :
    Application.Average
    mais perso, pour une moyenne je ferais comme ceci : !!! Il se peux que je n'ai rien compris à ton souhait. Pense donc à tester cette macro sur une copie de ton fichier...

    Sub Bouton18_QuandClic() 
    Dim dercol5, derline5, i, j ,nbre As Integer 
    Dim moyenne As Double
    dercol5 = Range("B4").End(xlToRight).Column 
    derline5 = Range("B4").End(xlDown).Row 
    For i = 5 To derline5 'boucle sur toutes les lignes à partir de 5 
    If dercol5 - 1 < 2 then Exit Sub 
    nbre = dercol5 - 3 
    For j = 2 To dercol5 - 1 'boucle des colonnes B à dercol5 - 1 
    moyenne = moyenne + Cells(i, j).Value 
    Next j 
    Cells(i, dercol5).Value = CDbl(moyenne / nbre)
    Next i 
    End Sub


    Cordialement,
    -- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
    0
  4. Utilisateur anonyme
     
    Merci pour ta réponse Pijaku,

    Mais le bout de code que j'ai proposé au dessus règle déjà mon problème.
    Je me demandais juste s'il existait une fonction permettant de faire directement une moyenne sur un morceau de ligne, et je m'explique car effectivement je ne suis pas forcément très clair.

    En gros faire la moyenne de F4 à F(dercol5-1).
    Je ne peux pas écrire average(F4 : F#) puisque dercol5-1 est variable et c'était mon soucis.

    Mais j'ai ce que j'ai besoin maintenant merci quand même !

    Petite question subsidiaire quand même si tu me le permets.
    Comment fait-on pour définir une variable en fonction d'une autre ?

    Je veux que pour t allant de 4 à derline5, j'obtienne la moyenne dans la dernière case.
    J'ai maintenant ma moyenne (code précédent), est ce possible d'écrire quelquechose comme somme(t) = blablabla ?

    Désolé, je suis encore débutant sous vba et merci pour ton aide.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Pour la moyenne essaye ceci :
      Cells(4, dercol5).Value = Application.Average(Range("F4:F" & dercol5-1))

      A toi de définir au préalable dercol5
      0
    2. Utilisateur anonyme
       
      Je vais tester ça merci !
      0
    3. Utilisateur anonyme
       
      apparemment ça ne fonctionne pas...
      C'est bizarre, j'obtiens une valeur assez incompréhensible.
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      quel c** je fais...
      Ben oui on calcule la moyenne entre F4 et F... Donc c'est po ça... Essaye :
      Cells(4, dercol5).Value = Application.Average(Range(Cells(4, 6), Cells(4, dercol5 - 1)))

      Excuse moi encore, par moment ça crève l'écran et on ne voit rien...
      0
    5. Utilisateur anonyme
       
      héhé, pas de soucis ;-)
      Comme je le disais j'ai opté pour la solution "longue" de calcul de somme puis la diviser.
      Mais c'est très bien comme ça.
      Je vais quand même essayer ta solution pour la "culture" et juste pour dire aux autres si ça fonctionne.

      Merci en tous cas
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    Et bien pour info, ça fonctionne.
    Merci Pikaju
    Au plaisir
    0