Problème avec Average (moyenne)

Bonjour à toutes et à tous,

Voici un petit bout de code qui fonctionne très bien.

Sub testmoyenne()
Sheets("Feuil1").Select
Range("B25").Formula = "=Average(B1:B24)"
End Sub

ceci étant un test, je souhaite l'adapter pour un tableau variable.

D'habitude, je remplace range(B1:B24) par range(cells(1,2), cells(24,2)). Mon problème ici c'est que je n'y arrive pas. En effet, avec une telle écriture ( la mieux pour les variables ), il suffit de remplacer le chiffre 2 par "a" par exemple et en faisant varier "a", on change de plage.

Merci d'avance pour votre réponse.

Novice72

Bonsoir,

un test avec le Nb ligne de la colonne B

Sub testmoyenne()
dim i%
Sheets("Feuil1").Select
i = Range("b" & Rows.Count).End(xlUp).Row
i = Range(Cells(1, 2), Cells(i, 2))
Range("b25") = Application.WorksheetFunction.Average(i)
End Sub

Bonsoir M12,

Merci pour ta réponse rapide .

Je n'ai pas tout compris ton code. Pour faire simple :

i = Range("b" & Rows.Count).End(xlUp).Row '

Comment adapter cette ligne sachant que le coin (haut, gauche) est connu. Je connais aussi le nombre de lignes ( variable "j" ) et le nombre de colonnes ( variable " p ).

Ici tu vas jusqu'en bas tu comptes les lignes en montant ????? ( mon pseudo est NOVICE )

De même,

i = Range(Cells(1, 2), Cells(i, 2))

Comment "i" peut être à la fois à gauche et à droite du "=" ? n'as tu pas fait une erreur ( boucle sur elle-même )

Encore merci pour ton aide.

Novice72

(re)bonsoir M12,

J'ai copié/collé ton code dans une macro test.

Elle ne fonctionne pas ( elle bloque sur la 5ème ligne ( sur 7 ) ).

Peux-tu revenir sur mon post précédent ?

Cela m'éclairera un peu plus.

Merci d'avance

Novice72

Bonjour,

Effectivement une erreur de ma part

24novice72.xlsm (23.62 Ko)

Bonjour,

Très simple, la formule attend un String avec une adresse de plage donc tu utilises ce que tu connais c'est à dire Cells(). Pour mon test, la plage est A1:C24 et la formule en B25 :

Sub testmoyenne()

    Dim J As Integer
    Dim P As Integer

    Sheets("Feuil1").Select

    J = 24
    P = 3

    'en référence absolue
    Range("B25").Formula = "=Average(" & Range(Cells(1, 1), Cells(J, P)).Address & ")"

    'en référence relative (0, 0)
    'Range("B25").Formula = "=Average(" & Range(Cells(1, 1), Cells(J, P)).Address(0, 0) & ")"

End Sub

Bonjour,

Une autre proposition.

Cdlt

Public Sub DEMO()
Dim ws As Worksheet, n As Long, rng As Range
    Set ws = Worksheets("Feuil1")
    With ws
        n = .Cells(.Rows.Count, 2).End(xlUp).Row
        Set rng = .Cells(2).Resize(n)
        .Cells(n + 1, 2).Value = WorksheetFunction.Average(rng)
    End With
End Su
Rechercher des sujets similaires à "probleme average moyenne"