Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour toutes et tous,
D'abord bonne année 2010.
Ma moyenne sur plusieurs feuilles (en cellule E6) dont la Feuil3 contient un "0" ne retourne aucun résultat. Merci de m'aider à améliorer ma formule.
fonctionne parfaitement dès lors que la formule n'est pas inscrite dans l'une des quatre cellules concernées.
Ce qui coince ici est la partie Feuil1:Feuil4!E6<>0.
Sauf à laisser la cellule vide au lieu d'y mettre 0, je ne vois pas de solution évidente pour ce point.
fonctionne parfaitement dès lors que la formule n'est pas inscrite dans l'une des quatre cellules concernées.
Ce qui coince ici est la partie Feuil1:Feuil4!E6<>0.
Sauf à laisser la cellule vide au lieu d'y mettre 0, je ne vois pas de solution évidente pour ce point.
Bonsoir Job et Roger,
Merci d'avoir regardé mon pb.
Lorsque je fais la moyenne MOYENNE(Feuil1:Feuil4!E6) sans le "0" j'obtiens bien mon résultat soit 3,666. Or je souhaitais mettre "0" comme résultat dans ma feuil3. Sinon je le remplacerai par un tiret.
Je repris directement la formule sur mon fichier de base et çà marche je te confirme. Je vais chercher une formule plus courte car je vais avoir toutes les semaines de l'année.
Merci.
Comme le 0 ne semble pas être le résultat d'une formule car tu as écrit:
"Sinon je le remplacerai par un tiret", ajoute seulement un apostrophe devant ton zéro.
Avec 52 feuilles, je ne vois pas de solution simple par formule.
Alors voici une fonction VBA :
Code:
Function MOY(ref As Variant) As Double
Dim ws As Worksheet, v As Variant, s As Double, n As Integer
Application.Volatile
ref = ref.Address [COLOR="Red"]'l'argument doit être une référence[/COLOR]
For Each ws In Worksheets
If ws.Name <> "Moyenne" Then
v = ws.Range(ref)
If IsNumeric(v) And v <> 0 Then s = s + v: n = n + 1
End If
Next
MOY = s / n
End Function
Ceci présente un inconvénient : à la fermeture du fichier, un message demande l'enregistrement des modifications.
Voici une fonction non volatile, mais avec un argument pour forcer le recalcul si les cellules sont modifiées :
Code:
Function MOY(plage As Variant, ref As Variant) As Double [COLOR="Red"]'le 1er argument pour forcer le recalcul[/COLOR]
Dim ws As Worksheet, v As Variant, s As Double, n As Integer
ref = ref.Address [COLOR="red"]'le 2ème argument doit être une référence[/COLOR]
For Each ws In Worksheets
If ws.Name <> "Moyenne" Then
v = ws.Range(ref)
If IsNumeric(v) And v <> 0 Then s = s + v: n = n + 1
End If
Next
MOY = s / n
End Function
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD