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 !