Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

moyenne particulière

3 réponses
Avatar
mattparisien59
Bonjour,

Je me suis mal fais comprendre sur mon explication hier, alors je repost un nouveau message.

Sur la ligne 3, j'ai les jours L, M, Mer, J, V, S, L, M,Mer,J,V,S,..(plage allant de C3 jusque HI3). qui sont en fonction de la date de la cellule d'en dessous.
Sur la ligne 13, je saisie chaque jour le chiffre d'affaire.

Ailleurs dans un autre tableau, je souhaite faire des statistiques moyennes, sur le chiffre d'affaire moyen en fonction du jour, c'est à dire une moyenne de tous les lundis, une moyenne pour tous les mardis.... et ces moyennes se mettent à jour en fonction de la saisie du jour. Par exemple si je saisie le chiffre d'affaire ce soir (jeudi) il met à jour la moyenne du jeudi. Pour cela j'ai fais un code vb mais j'ai des erreurs pourriez vous y regarder pour les corriger svp

Sub Lundi()
Range("C3:HI3").Select

Dim Compteur As Integer
Dim CompteurNb As Integer
j = 0

For j = 1 To 100

If ActiveCell.Value = "L" Or ActiveCell.Value = "L" Then
If Cells(13, j).Value <> 0 Or Cells(13, j).Value <> " " Then


Compteur = Compteur + Cells(13, j).Value
CompteurNb = CompteurNb + 1
End If
End If
Next j

Range("IE18").Value = Compteur / CompteurNb

End Sub


J'aurais savoir s'il était plus judicicieux de faire soit un code VB ou une fonction excel pour l'exemple proposé et serait il possible d'en donner soit la formule ou le code VB svp Merci d'avance pour votre aide.

3 réponses

Avatar
Caetera
Sur la ligne 3, j'ai les jours L, M, Mer, J, V, S, L, M,Mer,J,V,S,..(plage
allant de C3 jusque HI3). qui sont en fonction de la date de la cellule d'en
dessous.
Sur la ligne 13, je saisie chaque jour le chiffre d'affaire.

Ailleurs dans un autre tableau, je souhaite faire des statistiques moyennes,
sur le chiffre d'affaire moyen en fonction du jour, c'est à dire une moyenne
de
tous les lundis, une moyenne pour tous les mardis.... et ces moyennes se
mettent
à jour en fonction de la saisie du jour. Par exemple si je saisie le chiffre
d'affaire ce soir (jeudi) il met à jour la moyenne du jeudi.



*********************************

C4:HI4 étant des vrais dates
Pour le CA moyen des lundis :

=MOYENNE(SI(JOURSEM(C4:HI4)=2;C13:HI13))
{Matricielle à valider par ctrl+maj+enter}

Pour les mardis remplacer =2 par =3
Etc... pour les autres jours

Etc
Avatar
tfj57
Bonjour,

Est ce que vous êtes obligé d'organiser les données comme vous le décrivez ?
En organisant les données autrement, tout sera bien plus facile et adapté à
Excel.
Par exemple :
- colonne A : Date
- colonne B : Jour (formule qui affiche le jour selon Date)
- colonne C : Chiffre d'affaire.
Ensuite, à l'aide d'un tableau croisé dynamique, on peut faire toutes les
statistiques souhaitées, sans utiliser de code vb.

Sinon, si les données doivent être organisées comme vous le décrivez, les
formules nb.si et somme.si peuvent vous aider :
Par exemple, en IE18 mettre la formule :
= somme.si(C3:HI3;"L";C13:HI13)/nb.si(C3:HI3;"L")

Salutations,

François


"mattparisien59" a écrit dans le message
de news:
Bonjour,

Je me suis mal fais comprendre sur mon explication hier, alors je repost
un
nouveau message.

Sur la ligne 3, j'ai les jours L, M, Mer, J, V, S, L, M,Mer,J,V,S,..(plage
allant de C3 jusque HI3). qui sont en fonction de la date de la cellule
d'en
dessous.
Sur la ligne 13, je saisie chaque jour le chiffre d'affaire.

Ailleurs dans un autre tableau, je souhaite faire des statistiques
moyennes,
sur le chiffre d'affaire moyen en fonction du jour, c'est à dire une
moyenne de
tous les lundis, une moyenne pour tous les mardis.... et ces moyennes se
mettent
à jour en fonction de la saisie du jour. Par exemple si je saisie le
chiffre
d'affaire ce soir (jeudi) il met à jour la moyenne du jeudi. Pour cela
j'ai fais
un code vb mais j'ai des erreurs pourriez vous y regarder pour les
corriger svp


Sub Lundi()
Range("C3:HI3").Select

Dim Compteur As Integer
Dim CompteurNb As Integer
j = 0

For j = 1 To 100

If ActiveCell.Value = "L" Or ActiveCell.Value = "L" Then
If Cells(13, j).Value <> 0 Or Cells(13, j).Value <> " " Then


Compteur = Compteur + Cells(13, j).Value
CompteurNb = CompteurNb + 1
End If
End If
Next j

Range("IE18").Value = Compteur / CompteurNb

End Sub


J'aurais savoir s'il était plus judicicieux de faire soit un code VB ou
une
fonction excel pour l'exemple proposé et serait il possible d'en donner
soit la
formule ou le code VB svp Merci d'avance pour votre aide.
Avatar
LSteph
Bonjour,

Supposons cet autre tableau en A1
04/01/2010 à recopier vers droite 05/01/2010...etc
au format jjj ce qui donne Lundi Mardi ...
en A2 ma formule (qui fait attention au dollards) à entrer en
matricielle Ctrl+Maj+Entrée
et ensuite seulement la recopier vers la droite.

=MOYENNE(SI(JOURSEM($C$4:$HI$4)=JOURSEM(A1);$C$13:$HI$13)

--
LSteph

On 29 avr, 12:52, mattparisien59
wrote:
Bonjour,

Je me suis mal fais comprendre sur mon explication hier, alors je repost un
nouveau message.

Sur la ligne 3, j'ai les jours L, M, Mer, J, V, S, L, M,Mer,J,V,S,..(plag e
allant de C3 jusque HI3). qui sont en fonction de la date de la cellule d 'en
dessous.
Sur la ligne 13, je saisie chaque jour le chiffre d'affaire.

Ailleurs dans un autre tableau, je souhaite faire des statistiques moyenn es,
sur le chiffre d'affaire moyen en fonction du jour, c'est à dire une mo yenne de
tous les lundis, une moyenne pour tous les mardis.... et ces moyennes se mettent
à jour en fonction de la saisie du jour. Par exemple si je saisie le ch iffre
d'affaire ce soir (jeudi) il met à jour la moyenne du jeudi. Pour cela j'ai fais
un code vb mais j'ai des erreurs pourriez vous y regarder pour les corrig er svp

Sub Lundi()
Range("C3:HI3").Select

Dim Compteur As Integer
Dim CompteurNb As Integer
j = 0

For j = 1 To 100

If ActiveCell.Value = "L" Or ActiveCell.Value = "L" Then
    If Cells(13, j).Value <> 0 Or Cells(13, j).Value <> " " Then

Compteur = Compteur + Cells(13, j).Value
CompteurNb = CompteurNb + 1
    End If
End If
Next j

Range("IE18").Value = Compteur / CompteurNb

End Sub

J'aurais savoir s'il était plus judicicieux de faire soit un code VB ou une
fonction excel pour l'exemple proposé et serait il possible d'en donner soit la
formule ou le code VB svp Merci d'avance pour votre aide.