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

Correction moyenne VB

1 réponse
Avatar
mattparisien59
Bonjour,

J'ai une moyenne conditionnelle à faire sous VB, dont le code que j'ai fais est celui ci dessous mais celui-ci ne fonctionne pas comme je le souhaiterais, le résultat de ce code donne dans les cellules voulues par exemple =MOYENNE(SI(D8:D8<>0;D8:D8;"")) car il manque les incollades comme pour la formule excel que l'on fait avec MAJ+Ctrl+Entrée mais je ne souhaite pas revenir sur chaque cellule pour faire cette manipulation MAJ+Ctrl+Entrée. Si quelqu'un pouvait m'aider à corriger mon code s'il vous plait. Merci d'avance pour votre aide.

Sub aff_moyenne1()

j = 0

For i = 8 To 38
j = j + 1

cell_j = Cells(i, 1).Value

If cell_j = "D" Then
formule = "=AVERAGE(IF(R[" & (j - 1) * -1 & "]C:R[-1]C<>0,R[" & (j - 1) * -1 & "]C:R[-1]C,""""))"
Cells(i, 4) = formule
Cells(i, 5) = formule
Cells(i, 6) = formule
Cells(i, 7) = formule
Cells(i, 8) = formule
Cells(i, 9) = formule
Cells(i, 11) = formule
Cells(i, 12) = formule
Cells(i, 14) = formule

j = 0
End If

Next

End Sub

1 réponse

Avatar
michdenis
Bonjour,

Ta question, c'est du chinois pour moi.

A ) d'abord ta formule : =MOYENNE(SI(D8:D8<>0;D8:D8;""))
Je suppose que ce ne doit pas être très difficile de faire la moyenne d'une cellule!

B ) Ce type de formule : "=AVERAGE(IF(R[" & (j - 1) * -1 & "]C:R[-1]C<>0,R[" & (j - 1)
C'est à éviter...

C ) Quelle est la formule que tu veux copier et dans quelle plage de cellules ?
Utilise Range() ou Cells() ou l'adresse A1:C5 mais évite la syntaxe que tu as
proposée.



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

J'ai une moyenne conditionnelle à faire sous VB, dont le code que j'ai fais est
celui ci dessous mais celui-ci ne fonctionne pas comme je le souhaiterais, le
résultat de ce code donne dans les cellules voulues par exemple
=MOYENNE(SI(D8:D8<>0;D8:D8;"")) car il manque les incollades comme pour la
formule excel que l'on fait avec MAJ+Ctrl+Entrée mais je ne souhaite pas revenir
sur chaque cellule pour faire cette manipulation MAJ+Ctrl+Entrée. Si quelqu'un
pouvait m'aider à corriger mon code s'il vous plait. Merci d'avance pour votre
aide.

Sub aff_moyenne1()

j = 0

For i = 8 To 38
j = j + 1

cell_j = Cells(i, 1).Value

If cell_j = "D" Then
formule = "=AVERAGE(IF(R[" & (j - 1) * -1 & "]C:R[-1]C<>0,R[" & (j - 1)
* -1 & "]C:R[-1]C,""""))"
Cells(i, 4) = formule
Cells(i, 5) = formule
Cells(i, 6) = formule
Cells(i, 7) = formule
Cells(i, 8) = formule
Cells(i, 9) = formule
Cells(i, 11) = formule
Cells(i, 12) = formule
Cells(i, 14) = formule

j = 0
End If

Next

End Sub