Calcul de moyenne (nombres de valeurs variabl
Résolu
RomainG
-
RomainG -
RomainG -
Bonjour,
Dans le cadre d'un projet, je souhaiterai effectuer l'opération suivante.
1 140
1 120
1 160
2 145
2 126
2 130
2 170
3 125
3 135
Calculer à l'aide d'une macro vba, la moyenne des valeurs de la colonne 2 qui sont affectés à un 1 en colonne 1. La moyenne des valeurs de la colonne 2 affecté à un 2 en colonne 1 et la moyenne des valeurs de la colonne 2 effecté à un 3 en colonne 1. Toute ces moyennes seraient regroupés dan sune 3ème colonne. Le principale problème résidant dans le fait que le nombre de valeurs à inclure dans la moyenne est variable.
Ceci n'est qu'un échantillon, en réalité je dois étendre ca à une centaine de valeur environ. Pour l'instant tout ce que j'ai pu écrire est cela :
Sub moyenne()
For i = 1 To 9 Step 1
If Cells(i, 1).Value = Cells(i + 1, 1).Value Then Cells(i, 3).Value = Average(Cells(i, 2).Value, Cells(i + 1, 2).Value)
Else: Cells(i, 3).Value = ""
Next
End Sub
Naturellement la fonction average n'existe pas (hélas), il faut la définir mais je ne vois pas trop comment faire.
Merci d'avance aux internautes qui voudront bien m'aider.
Romain
Dans le cadre d'un projet, je souhaiterai effectuer l'opération suivante.
1 140
1 120
1 160
2 145
2 126
2 130
2 170
3 125
3 135
Calculer à l'aide d'une macro vba, la moyenne des valeurs de la colonne 2 qui sont affectés à un 1 en colonne 1. La moyenne des valeurs de la colonne 2 affecté à un 2 en colonne 1 et la moyenne des valeurs de la colonne 2 effecté à un 3 en colonne 1. Toute ces moyennes seraient regroupés dan sune 3ème colonne. Le principale problème résidant dans le fait que le nombre de valeurs à inclure dans la moyenne est variable.
Ceci n'est qu'un échantillon, en réalité je dois étendre ca à une centaine de valeur environ. Pour l'instant tout ce que j'ai pu écrire est cela :
Sub moyenne()
For i = 1 To 9 Step 1
If Cells(i, 1).Value = Cells(i + 1, 1).Value Then Cells(i, 3).Value = Average(Cells(i, 2).Value, Cells(i + 1, 2).Value)
Else: Cells(i, 3).Value = ""
Next
End Sub
Naturellement la fonction average n'existe pas (hélas), il faut la définir mais je ne vois pas trop comment faire.
Merci d'avance aux internautes qui voudront bien m'aider.
Romain
A voir également:
- Calcul de moyenne (nombres de valeurs variabl
- Calcul moyenne excel - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Calcul km marche à pied gratuit - Télécharger - Sport
- Nombre de jours entre deux dates excel - Guide
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Musique / Radio / Clip
5 réponses
Bonjour,
si ton tableau est déjà trié comme tu l'as fait :
Sub moyenne()
i=1
a=1
do while cells(i,1) <> ""
valeur = cells(i,1)
compteur = 1
total = cells(i,1)
do while cells(i+1,1) = valeur
total = total + cells(i+1,j)
compteur = compteur +1
i=i+1
loop
cells(a,3) = total/compteur
a=a+1
loop
End Sub
si ton tableau est déjà trié comme tu l'as fait :
Sub moyenne()
i=1
a=1
do while cells(i,1) <> ""
valeur = cells(i,1)
compteur = 1
total = cells(i,1)
do while cells(i+1,1) = valeur
total = total + cells(i+1,j)
compteur = compteur +1
i=i+1
loop
cells(a,3) = total/compteur
a=a+1
loop
End Sub
Bonjour,
Es tu obligé d'utiliser VBA ?
car, sinon, un tableau croisé dynamique résout tranquillement le problème.
pj: un tu exemple fait en 5 minutes
https://www.cjoint.com/?3EAosOeCoTW
Michel
Es tu obligé d'utiliser VBA ?
car, sinon, un tableau croisé dynamique résout tranquillement le problème.
pj: un tu exemple fait en 5 minutes
https://www.cjoint.com/?3EAosOeCoTW
Michel
Re-Bonjour,
Merci pour votre aide Melanie. Valeur et total sont les mêmes d'après vous? J'aurai plutôt mis total = Cells(i,2). Est ce cela ?
Lorsque j'exécute le programme, excel me dit "incompatiblité de type 13", j'ai vu que c'était un problème assez répandu concernant un problème de variable (chaine de caractère à la place de variable ou problème du genre).
Voyez vous dans ce que vous avez écrit quelque chose suscpetible d'être innaproprié ?
Merci
Romain
Merci pour votre aide Melanie. Valeur et total sont les mêmes d'après vous? J'aurai plutôt mis total = Cells(i,2). Est ce cela ?
Lorsque j'exécute le programme, excel me dit "incompatiblité de type 13", j'ai vu que c'était un problème assez répandu concernant un problème de variable (chaine de caractère à la place de variable ou problème du genre).
Voyez vous dans ce que vous avez écrit quelque chose suscpetible d'être innaproprié ?
Merci
Romain
Bonjour,
Oui une petite erreur de frappe et tu as raison ;
Sub moyenne()
i = 1
a = 1
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 1)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
a = a + 1
Loop
End Sub
Oui une petite erreur de frappe et tu as raison ;
Sub moyenne()
i = 1
a = 1
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 1)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
a = a + 1
Loop
End Sub
j'ai fait une autre erreur, celui-ci fonctionne :
Sub moyenne()
i = 1
a = 1
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 1)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
Cells(a, 3).Select
i = i + 1
Loop
End Sub
Sub moyenne()
i = 1
a = 1
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 1)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
Cells(a, 3).Select
i = i + 1
Loop
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re-Bonjour,
A priori la boucle tourne à l'infini et bloque excel. Y'aurait il une condition à rajouter ?
Merci
A priori la boucle tourne à l'infini et bloque excel. Y'aurait il une condition à rajouter ?
Merci
Bonjour michel,
Je ne l'ai vu qu'après coup c'est vrai. Les tableau croisé dynamique sont certes plus rapides mais dans mon cas, l'utilisation de vba est plus approprié. Il s'agit de donnée que je souhaiterai classer (calcul de moyenne) puis exporter dans un autre logiciel et ceci pour un grands nombres de fichiers. Une macro pouvant réaliser cette opération pour tout mes fichiers me faciliterait grandement la tâche.
Merci néanmoins pour l'info !
Romain
Je ne l'ai vu qu'après coup c'est vrai. Les tableau croisé dynamique sont certes plus rapides mais dans mon cas, l'utilisation de vba est plus approprié. Il s'agit de donnée que je souhaiterai classer (calcul de moyenne) puis exporter dans un autre logiciel et ceci pour un grands nombres de fichiers. Une macro pouvant réaliser cette opération pour tout mes fichiers me faciliterait grandement la tâche.
Merci néanmoins pour l'info !
Romain
as-tu pris le code qui était en commentaire?
Sub moyenne()
i = 1
a = 1
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 1)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
Cells(a, 3).Select
i = i + 1
Loop
End Sub
Sub moyenne()
i = 1
a = 1
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 1)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
Cells(a, 3).Select
i = i + 1
Loop
End Sub
Non à ce moemnt là je ne l'avais pas pris. Celui en commentaire me donne un seul résultat tout en haut de la colonne 3. Le chiffre donnée (si je reprends les valeur numériques que j'ai donné en haut de page( est 64. Cela ne semble correpondre à aucune moyenne. Ce qui m'étonne c'est que 3 résultats sont sensé apparaitre et que un seul ne s'affiche.
Romain
Romain
Pardonne moi suis en train de faire la sieste :
Sub moyenne()
i = 2
a = 2
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 2)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
Cells(a, 3).Select
i = i + 1
a = a + 1
Loop
End Sub
Sub moyenne()
i = 2
a = 2
Do While Cells(i, 1) <> ""
valeur = Cells(i, 1)
compteur = 1
total = Cells(i, 2)
Do While Cells(i + 1, 1) = valeur
total = total + Cells(i + 1, 2)
compteur = compteur + 1
i = i + 1
Loop
Cells(a, 3) = total / compteur
Cells(a, 3).Select
i = i + 1
a = a + 1
Loop
End Sub