Calcul moyenne d'une ligne sans la première cellule de la ligne

Bonjour,

Je dois calculer la moyenne d'une ligne sur Excel. Les valeurs correspondent à des indicateurs qui sont liés à des dates.

Le problème est que lorsque je calcule la moyenne la date est prise en compte et fausse donc le calcul.

image

Il faudrait donc que donc mon code je dise que ma moyenne concerne la ligne 2 sans sa première cellule !

image

Merci pour votre aide !

Bonjour

s'il n'y a pas de trous dans la liste

=MOYENNE(DECALER($A2;;1;;NBVAL(2:2)-1))

sans VBA

Édit : Steelson trop rapide

en VBA

Application.Average(Range(Cells(2, 2), Cells(2, Columns.Count).End(xlToLeft)))

Bonjour Batoutz !

Merci beaucoup mais il faut absolument que cela soit en VBA, car dans mon cas pratique il y a des centaines de valeurs avec des trous entre elles !

une idée ?

C'est fait, regarde le post juste avant le tien !

En réalité le problème est un peu plus complexe car il faut que je détermine les lignes avec plus de 20 valeurs et ensuite il faut que je calcule la moyenne des lignes ayant plus de 20 valeurs.

image

Voici mon code pour l'instant

image

Non, je ne travaille pas avec des images, mets ton code entre balises </> et joins un fichier STP

Merci

Très bien !
Voici les données..

/>
sub projet()

Dim S As Integer
For i = 1 To 10

S = Application.WorksheetFunction.CountA(Rows(i))

If S > 5 Then
MsgBox ("il y a " & S & " valeurs dans la ligne " & i)

Dim M As Currency
M = Application.Average(Rows(i))
MsgBox ("La moyenne de la ligne " & i & " est de " & M)

</>
6projet-2-2.xlsm (15.63 Ko)

Il me semble que mon dernier message n'était pas clair et je n'ai pas mis le code en entier. J'ai commencer ce code avec un fichier excel avec peu de valeurs pour vérifier si il marchait et j'ai pris un seuil de 5 et non de 20 pour commencer.

Voici le code plus clair

</>

sub projet()

Dim S As Integer
For i = 1 To 10

S = Application.WorksheetFunction.CountA(Rows(i))

If S > 5 Then
Dim M As Currency
M = Application.Average(Rows(i))

end if

next

end sub

</>

voici mes pistes pour le moment;

Je souhaiterais garder la fonction average pour plus d'élégance.

Car certes l'utilisation de la fonction isdate est utile mais je suis assuré dans tous les cas que la date est dans la première cellule de la ligne.

Je pensais utiliser la propriétés columnindex de la fonction rows mais je ne parviens pas à le faire sans message d'erreur.

image

et l'utiliser de cette façon

image

Auriez-vous une idée ?

voici mes pistes pour le moment;

Je souhaiterais garder la fonction average pour plus d'élégance.

Car certes l'utilisation de la fonction isdate est utile mais je suis assuré dans tous les cas que la date est dans la première cellule de la ligne.

Je pensais utiliser la propriétés columnindex de la fonction rows mais je ne parviens pas à le faire sans message d'erreur.

image

et l'utiliser de cette façon

image

Auriez-vous une idée ?

code mal indenté malheureusement !

j'ai ajouté plage

Sub projet()

Dim S As Integer, plage As Range
For i = 1 To 10
Set plage = Range(Cells(i, 2), Cells(i, Columns.Count).End(xlToLeft))
S = Application.WorksheetFunction.CountA(plage)

If S > 5 Then
MsgBox ("il y a " & S & " valeurs dans la ligne " & i)

Dim M As Currency
M = Application.Average(plage)
MsgBox ("La moyenne de la ligne " & i & " est de " & M)

Dim E As Currency
E = Application.WorksheetFunction.StDev(plage)
MsgBox ("L'écart type de la ligne " & i & " est de " & E)

Dim quantile(2.5) As Currency
quantile(2.5) = Application.WorksheetFunction.Percentile(plage, 0.025)
MsgBox ("le quantile de la ligne " & i & " à 2,5% est de " & quantile(2.5))

Dim quartile(1) As Currency
quartile(1) = Application.WorksheetFunction.quartile(plage, 0.1)
MsgBox ("Le premier quartile de la ligne " & i & " est de " & quartile(1))

Dim médiane As Currency
médiane = Application.WorksheetFunction.Median(plage)
MsgBox ("La médiane de la ligne " & i & " est de " & médiane)

Dim troisièmequartile As Currency
troisièmequartile = Application.WorksheetFunction.quartile(plage, 3)
MsgBox ("Le troisième quartile de la ligne " & i & " est de " & troisièmequartile)

Dim quantileà97 As Currency
quantileà97 = Application.WorksheetFunction.Percentile(plage, 0.975)
MsgBox ("le quantile de la ligne " & i & " à 97,5% est de " & quantileà97)

End If
Next
End Sub
7projet-2-2.xlsm (14.67 Ko)

Cela fonctionne parfaitement merci pour votre compétence et votre temps !

J'ai seulement une dernière interrogation concernant la fonction rows.

A quoi sert l'argument columnindex ?

Je n'arrive pas à l'utiliser et je ne retrouve pas sa trace sur internet

image

Encore merci !

je ne sais pas !

Rechercher des sujets similaires à "calcul moyenne ligne premiere"