Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule de calcul de moyenne...trop compliqué!

  • Initiateur de la discussion Initiateur de la discussion paul87
  • Date de début Date de début

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 !

paul87

XLDnaute Impliqué
bonjour à tous, bonjour le Forum...
je dois effectuer un calcul de moyenne des valeurs des reponses à un questionnaire.
cette moyenne doit s'afficher dans une cellule.
les cellules de la feuille sont remplie par un UF de saisie.
Mais si c'était un calcul de moyenne simple, ce serait terminé....seulement.
il faut:
que pour les questions sans réponses, (il peut y en avoir), la valeur soit remplacée par la moyenne des réponses aux autres questions.
et là, je ne sais pas faire....
A l'aide svp.
cela peut-il se faire directement sur la feuille ?
on peut passer par le vba?..avec un bouton qui lancera le calcul après le remplissage de la feuille?
ou faire le calcul dans le UF et remplir la cellule en quittant..?
suis paumé..?
je joint mon fichier de travail...pour conseils..
merci par avance
 

Pièces jointes

Re : Formule de calcul de moyenne...trop compliqué!

Bonjour,

Une approche avec cette formule :

Code:
=(SOMME(C4:L4)+(MOYENNE(C4:L4)*NB.VIDE(C4:L4)))/10

Essaye et dis nous

Bon app

@+
 
Re : Formule de calcul de moyenne...trop compliqué!

Salut Paul87, Tibo ,le forum,

Afin d'éviter référence circulaire, je te proposes de traiter l'info dans une autre feuille vois le fichier joint.

ps : j'ai supprimé le userform car fichier trop volumineux.
Zeb
 

Pièces jointes

Re : Formule de calcul de moyenne...trop compliqué!

Bonjour,

Ou bien je n'ai pas compris, ou bien il me semble que cela ne sert à rien.

Dans le report des valeurs saisies, ton application ne met rien dans les cellules s'il n'y a rien dans l'USF. Or la fonction MOYENNE fait la moyenne sans compter les cellules vides. Si tu ajoutes cette moyenne comme valeur à la place d'un "trou", cela ne change pas la moyenne. S'il y avait eu des zéros dans les cellules la moyenne calculée aurait été différente car EXCEL les prends en compte :

- moyenne de 1 3 vide 5 6 5 = 20/5 = 4
- moyenne de 1 3 4 5 6 5 = 24/6 = 4

mais :

- moyenne de 1 3 0 5 6 5 = 20/6 = 3,333

...à moins que ce ne soit un poisson d'avril pour voir si l'on suit 😀

Cordialement
 
Re : Formule de calcul de moyenne...trop compliqué!

Bonjour à tous et Re aux autres.

Un complément d'explication :

Quand tu écris
Dim derli, a, b, c, d, e, f, g, h, i, j As Integer,
seul j est déclaré comme entier donc initialisé à 0, et, sans changement, Q10 sera égal à 0 en faussant le calcul de la moyenne.
En supprimant As Integer, toutes les variables sont de type Variant (cela réclame plus de plus de mémoire) et seront vides au départ. Tu retrouves la remarque de Mécano.


D'où la nécessité de faire très attention aux types de variables !
 
Re : Formule de calcul de moyenne...trop compliqué!

Bonsoirà tous,
Merci à tous...!!!
ça marche...
effectivement en modifiant le type de variable de integer à variant..c'est nettement mieux...je l'ai plus la valeur 0..
je ne savais pas d'ou cela provenait...
Mais est-il necessaire de modifier aussi le type de la variable derli..?
 
Re : Formule de calcul de moyenne...trop compliqué!

de plus, lors de la fermeture du UF ..click sur bouton valider, je souhaiterai avoir une msgbox qui afficherai un message d'alerte si
la moitié ou plus.(>=5) des questions n'est pas renseignée...
est-ce possible..?
Merci
 
Re : Formule de calcul de moyenne...trop compliqué!

Bonsoir Paul,

même réponse que Mecano, je te propose cette formule en M4:
=SI(ESTERREUR(SOMME(C4:L4)/NB.SI(C4:L4;">0"));"";SOMME(C4:L4)/NB.SI(C4:L4;">0"))
Tirer vers le bas

JHA
 
Re : Formule de calcul de moyenne...trop compliqué!

Pour le test tu peux mettre ceci dans la feuille en N4 et tirer vers le bas :

=SI(NB.VIDE(C4:L4)>5; VRAI;FAUX)

et dans le code avant : Unload UserForm1 :

If Range("n" & derli).Value = True Then
MsgBox "blablabla"
End If


Cordialement
 
Re : Formule de calcul de moyenne...trop compliqué!

Bonsoir et encore une fois merci à tous.
ta formule, JHA permet de ne pas avoir le désagréable #DIV/0!
effectivement aussi mécano41, je ne savais pas que la fonction MOYENNE ne comptait pas les cellules vides..!!!
on aurait finalement pu obtenir le meme résultat juste avec la fonction MOYENNE seule!!
Si quelq'un avait une idée pour ma question posée plus haut, pour la msgbox...
Merci par avance
 
Re : Formule de calcul de moyenne...trop compliqué!

Re à tous et aux autres.

Avec une nouvelle numérotation des boutons pour réduire le code par des boucles.
Le calcul de la moyenne est inclus dans celui-ci donc il n'y aura pas de cellules à tirer.
Le message propose de compléter ou de continuer.
 

Pièces jointes

Re : Formule de calcul de moyenne...trop compliqué!

bonjour à tous, Bonjour le Forum
Merci à toi Excel_lent..c'est beaucoup plus pointu que la version que j'ai faite...un peu trop ardu pour mon niveau..mais j'y travaille🙂
En fait j'ai oublié quelque chose dans mon appli,...😱
c'est la possibilité de modifier les données déja stockées en utilisant le UF..
est-il possible juste en cliquant sur le NOM d'une personne, de réouvrir le UF avec les renseignements correspondants à ce nom...et de pouvoir les modifier?
Dans mon exemple joint, ça peu paraître ridicule vu le nombre de case à documenter, mais dans mon appli finale, c'est plus de 120 cases et/ou boutons....donc pouvoir rappeler le UF pour des mofifs serai un super gain de tps
Merci pour vos idées
 
Re : Formule de calcul de moyenne...trop compliqué!

re
de plus, il y a un dysfonctionnement avec la msgbox.
si on répond "oui" pour faire des modifs..et donc atteindre le nombre minimun de réponses requises..
ça passe bien les test mais cela ajoute une ligne à la feuille .xls alors que cela devrait modifier ou mettre a jour celle en cours
cela vien du fait que si à la vbYesNo la reponse est "6" cela relance à

Code:
derli = Sheets("ARCHIVE").Range("A65536").End(xlUp).Row + 1
comment faire..?svp
 
- 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

Discussions similaires

Réponses
1
Affichages
188
W
Réponses
2
Affichages
168
Réponses
13
Affichages
850
Réponses
3
Affichages
209
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…