Petite question sur moyenne si
Sto -
dachiasse Messages postés 1709 Date d'inscription Statut Membre Dernière intervention - 21 avril 2021 à 01:22
dachiasse Messages postés 1709 Date d'inscription Statut Membre Dernière intervention - 21 avril 2021 à 01:22
Bonjour, je découvre actuellement libre office calc et je dois réaliser un tableau de moyenne, sur ce tableau il y'a plusieurs notes, avec le même coef ( pour ça y'a pas de problème particulier ), le souci est que sur deux des matières, je dois les compter uniquement si la note est supérieur ou égal à 10 .
Déjà j'ai du mal à comprendre la fonction moyenne.si, je ne peux pas mettre 9.9999 ou ≥ 10, ensuite si je met > 10 elle marche uniquement si parmi les deux matières une note est supérieur à la moyenne mais sinon si les deux sont plus petit que 10 il me met #div/0
j'utilise la formule =MOYENNE.SI(X5:Y5;"> 10") mais elle doit être complétement fausse, merci d'avance ^^'
Déjà j'ai du mal à comprendre la fonction moyenne.si, je ne peux pas mettre 9.9999 ou ≥ 10, ensuite si je met > 10 elle marche uniquement si parmi les deux matières une note est supérieur à la moyenne mais sinon si les deux sont plus petit que 10 il me met #div/0
j'utilise la formule =MOYENNE.SI(X5:Y5;"> 10") mais elle doit être complétement fausse, merci d'avance ^^'
Configuration: Windows / Firefox 87.0
A voir également:
- Moyenne libre office calc
- Microsoft office - Guide
- Cette technique secrète permet d'avoir Windows et Microsoft Office gratuitement et à vie - Accueil - Bureautique
- Open office gratuit - Télécharger - Suite bureautique
- Libre office en francais - Télécharger - Suite bureautique
- Excel moyenne - Guide
8 réponses
Salut,
Même si c’est pour Excel, ça devrait fonctionner pareil. La fonction porte sur la somme mais ça devrait être équivalent avec la moyenne : https://www.excel-pratique.com/fr/fonctions/somme_si
Même si c’est pour Excel, ça devrait fonctionner pareil. La fonction porte sur la somme mais ça devrait être équivalent avec la moyenne : https://www.excel-pratique.com/fr/fonctions/somme_si
merci mais malheureusement ça ne me convient pas, c est pas vraiment ce que je cherche, déjà je n'ai pas de plage, ensuite ici il n y'a que du vide, moi je cherche comment entrer plus grand ou égal à 10 :/
Bonjour sto.
Si tu veux de l'aide, envoie ton fichier Calc.
La fonction MOYENNE.SI ne convient pas dans ce cas de figure ; en effet si la cellule X5 ou Y5 est <10 elle est considérée comme une valeur nulle ; donc si l'une des cellules est >=10, ça marche ; si les 2 sont <10, la fonction tombe sur une division par zéro et te l'affiche !
Si tu veux de l'aide, envoie ton fichier Calc.
1) Tu vas dans https://www.ct.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Ct]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message tu fais "Coller".
=>Voir la fiche https://commentcamarche.telechargertorrent.org/faq/29493-utiliser-ct-pour-heberger-des-fichiers
Il existe aussi :
1) https://mon-partage.fr/
2) https://www.transfernow.net/
La fonction MOYENNE.SI ne convient pas dans ce cas de figure ; en effet si la cellule X5 ou Y5 est <10 elle est considérée comme une valeur nulle ; donc si l'une des cellules est >=10, ça marche ; si les 2 sont <10, la fonction tombe sur une division par zéro et te l'affiche !
J'en bave encore. Je déteste VBA et Basic qui est l'équivalent VBA de LibreOffice. Mais, j'ai bien avancé. Mon code est mal fichu, mais, en un clic sur un bouton, après avoir sélectionné à la souris la plage de cellules des notes. Le calcul des moyennes se fait correctement.
Il me faut gérer les absences. Je viens de tester et ça ne recalcule pas correctement les moyennes. J'ai fait une erreur de sémantique dans mes conditions.
Il me faut gérer les absences. Je viens de tester et ça ne recalcule pas correctement les moyennes. J'ai fait une erreur de sémantique dans mes conditions.
Il faut sélectionner la plage des notes à la souris et uniquement les notes (absences comprises). Puis cliquer sur le bouton Calculer moyennes.
https://mon-partage.fr/f/AzbVaCO8/
https://mon-partage.fr/f/AzbVaCO8/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question Salutations à tous
Sto si je comprends bien ta demande tu dois sommer les nombres >=10 et faire la moyenne uniquement de ces nombres.
Si les deux nombres sont >=10 somme des deux nombres / 2 ; si un seul est >=10 ce nombre / 1 ; si aucun des deux n'est >=10 alors 0.
MOYENNE.SI ne marche pas à cause de la division par 0, alors une autre formule
Les deux nombres en A1 et A2 :
Si c'est un autre calcul des précisions sont attendues en même temps que le fichier demandé.
Cordialement
Sto si je comprends bien ta demande tu dois sommer les nombres >=10 et faire la moyenne uniquement de ces nombres.
Si les deux nombres sont >=10 somme des deux nombres / 2 ; si un seul est >=10 ce nombre / 1 ; si aucun des deux n'est >=10 alors 0.
MOYENNE.SI ne marche pas à cause de la division par 0, alors une autre formule
Les deux nombres en A1 et A2 :
=SI(NB.SI(A1:A2;">=10")>0;SOMME.SI(A1:A2;">=10")/NB.SI(A1:A2;">=10");0)
Si c'est un autre calcul des précisions sont attendues en même temps que le fichier demandé.
Cordialement
Salut Luc,
"si je comprends bien ta demande tu dois sommer les nombres >=10 et faire la moyenne uniquement de ces nombres."
Je ne comprends pas ça. Je crois que Sto veut inclure les notes conditionnées si elles sont supérieures à 10. Dans ta compréhension, tu fais fi des autres notes non conditionnées.
J'avais fait un code basic, mais, à force de modifications je l'ai cassé. J'essaierai de l'arranger.
"si je comprends bien ta demande tu dois sommer les nombres >=10 et faire la moyenne uniquement de ces nombres."
Je ne comprends pas ça. Je crois que Sto veut inclure les notes conditionnées si elles sont supérieures à 10. Dans ta compréhension, tu fais fi des autres notes non conditionnées.
J'avais fait un code basic, mais, à force de modifications je l'ai cassé. J'essaierai de l'arranger.
Le code comporte des erreurs. La ligne 65 bogue, je ne trouve pas pourquoi.
Je poste le classeur :
https://mon-partage.fr/f/CIUhmJVf/
Je poste le classeur :
https://mon-partage.fr/f/CIUhmJVf/
option explicit option compatible option VBA 1 Sub calcul_moyenne 'déclarer les variables dim classeur as object, feuille as object, plage as object dim cellule_remarque as object, cellule_en_cours as object dim cellule_moyenne as object dim compteur as integer dim indice_ligne as integer, indice_colonne as integer dim indice_ligne_debut as integer, indice_colonne_debut as integer dim indice_ligne_fin as integer, indice_colonne_fin as integer dim ligne_en_traitement as integer, colonne_en_traitement as integer dim note_minimale as integer, note_maximale as integer dim note_facultative as integer dim position_relative_ligne_remarque as integer dim decalage_moyenne as integer dim nombre_apres_virgule as integer dim indice_ligne_remarque dim note as double, moyenne as double dim facultatif as string 'attribuer les valeurs aux variables facultatif = "F" note_facultative = 10 note_minimale = 0 note_maximale = 20 position_relative_ligne_remarque = 1 decalage_moyenne = 1 nombre_apres_virgule = 2 classeur = thisComponent feuille = classeur.currentController.activeSheet 'plage aura comme valeur la plage sélectionnée à la souris 'cette plage correspond aux notes (absences comprise) plage = classeur.currentSelection 'ses valeurs vont permettre de parcourir les cellules de la plage 'et d'y effectuer les traitements (moyenne sous conditions) indice_ligne_debut = plage.rangeAddress.startRow indice_colonne_debut = plage.rangeAddress.startColumn indice_ligne_fin = plage.rangeAddress.endRow indice_colonne_fin = plage.rangeAddress.endColumn indice_ligne_remarque = indice_ligne_debut - position_relative_ligne_remarque for ligne_en_traitement = indice_ligne_debut to indice_ligne_fin 'pour chaque nouvelle ligne, on réinitialise note et compteur à 0 note = 0 compteur = 0 for colonne_en_traitement = indice_colonne_debut to indice_colonne_fin cellule_remarque = feuille.getCellByPosition(colonne_en_traitement, indice_ligne_remarque) cellule_en_cours = feuille.getCellByPosition(colonne_en_traitement, ligne_en_traitement) cellule_moyenne = feuille.getCellByPosition(indice_colonne_fin + decalage_moyenne, ligne_en_traitement) if cellule_en_cours.type = com.sun.star.table.CellContentType.VALUE _ and cellule_en_cours.value >= note_minimale and cellule_en_cours.value <= note_maximale _ and cellule_remarque.value <> facultatif _ or cellule_remarque.value = facultatif and cellule_en_cours.value >= note_facultative _ and celule_en_cours.value <= note_maximale then compteur = compteur + 1 note = note + cellule_en_cours.value end if next moyenne = note / compteur cellule_moyenne.value = round(moyenne, nombre_apres_virgule) next End Sub
Bonjour,
Ajouter une ligne 6 avec : A6=A5, B6=B5, ...X6=Si(X5>=10; X5;"") ,Y6=Si(Y5>=10; Y5;"") Z6=Z5.
Calculer sur la ligne 6: =Moyenne(A6:Z6)
Ajouter une ligne 6 avec : A6=A5, B6=B5, ...X6=Si(X5>=10; X5;"") ,Y6=Si(Y5>=10; Y5;"") Z6=Z5.
Calculer sur la ligne 6: =Moyenne(A6:Z6)
Salut,
J'ai réussi à régler mon problème sémantique. Je ne maîtrise pas les booléens en basic.
Voici le code :
Si on ne modifie aucun paramètre, il faut que les notes d'un élève se suivent sur une ligne. Il faut aussi que la remarque (contrôle facultatif) soit sur la même colonne de la note et la ligne des remarques soit juste au-dessus des notes du premier élève.
La colonne, en suivant à droite des notes, est la colonne des moyennes conditionnées.
On a une ligne par élève.
Chez moi, sur la ligne 1, j'ai :
en A : rien, en B : note 1, en C : note 2 ... en F : note 5 (la dernière), en G : moyenne
ligne 2 :
en A : remarque, en B : F et pareil en C. Ces 2 notes sont facultatives donc prises en compte si la note est supérieure ou égale à 10. Rien après
ligne 3 :
en A : le nom de l'élève 1, en B : sa note au contrôle (note 1) et ainsi de suite
ligne 4 : l'élève 2
et ainsi de suite.
On crée un bouton "calculer moyennes" qu'on mettra sur la feuille à un endroit visible et qui ne gène pas.
Pour ce faire :
Insertion > Contrôle de formulaire > Bouton
On place le bouton et on le dimensionne
On le renomme en cliquant droit dessus : Contrôle
à l'onglet Général : on entre un nom à l'étiquette : calculer moyennes
à l'onglet Événements : à Exécuter l'action : on clique sur les (...) et on va récupérer la macro
On quitte le mode conception :
Affichage > Barres d'outils > Contrôle de formulaires (doit être coché)
On déselectionne le bouton "mode conception" pour rendre le bouton actif.
Pour que la macro fonctionne et inscrive les moyennes, il faut :
1/ sélectionner la plage de TOUTES les notes à la souris. Donc, de la note 1 du premier élève à la dernière note du dernière élève, absences comprises.
2/ cliquer sur le bouton "calculer moyennes" et laisser faire la magie !
Attention, il n'y a pas de gestion d'erreur, si la valeur est incohérente, exemple la note est 25 alors que le max est 20, la note ne sera pas prise en compte mais l'erreur ne sera pas indiquée.
J'envoie le lien :
https://mon-partage.fr/f/l7MbswN5/
J'ai réussi à régler mon problème sémantique. Je ne maîtrise pas les booléens en basic.
Voici le code :
function arrondirV2(valeur as double, apresVirgule as integer) as double dim baseDecimale as integer, reference as integer, moitie as integer baseDecimale = 10 reference = 0 moitie = 2 valeur = valeur * (baseDecimale^apresVirgule) valeur = valeur + (baseDecimale^reference) / moitie arrondirV2 = fix(valeur) / (baseDecimale^apresVirgule) end function function Traitement(cellule as object, _ celluleRemarque as object, _ noteMin as double, _ noteMax as double, _ noteMinFac as double, _ remarque as string) as boolean if cellule.getType = 1 then if celluleRemarque.string = remarque then if cellule.value >= noteMinFac then if cellule.value <= noteMax then Traitement = True end if end if end if end if if cellule.getType = 1 then if celluleRemarque.string <> remarque then if cellule.value >= noteMin then if cellule.value <= noteMax then Traitement = True end if end if end if end if end function Sub Moyenne dim classeur as object, feuille as object, plageDesNotes as object dim celluleEnCours as object, celluleRemarque as object dim celluleMoyenne as object dim noteMinimale as double, noteMaximale as double dim noteMinimaleFacultative as double, cumul as double, moyenne as double dim compteur as integer, premiereLigne as integer, derniereLigne as integer dim premiereColonne as integer, derniereColonne as integer dim ligne as integer, colonne as integer, ligneRemarque as integer dim colonneMoyenne as integer, apresVirgule as integer dim absence as string, remarque as string classeur = thisComponent feuille = classeur.currentController.activeSheet plageDesNotes = classeur.currentSelection premiereLigne = plageDesNotes.rangeAddress.startRow derniereLigne = plageDesNotes.rangeAddress.endRow premiereColonne = plageDesNotes.rangeAddress.startColumn derniereColonne = plageDesNotes.rangeAddress.endColumn ligneRemarque = premiereLigne - 1 colonneMoyenne = derniereColonne + 1 apresvirgule = 2 noteMinimale = 0 noteMaximale = 20 noteMinimaleFacultative = 10 'absence = "abs" remarque = "F" for ligne = premiereLigne to derniereLigne compteur = 0 cumul = 0 celluleMoyenne = feuille.getCellByPosition(colonneMoyenne, ligne) for colonne = premiereColonne to derniereColonne celluleEnCours = feuille.getCellByPosition(colonne, ligne) celluleRemarque = feuille.getCellByPosition(colonne, ligneRemarque) if Traitement(celluleEnCours, _ celluleRemarque, _ noteMinimale, _ noteMaximale, _ noteMinimaleFacultative, _ remarque) then compteur = compteur + 1 cumul = cumul + celluleEnCours.value end if next if compteur > 0 then moyenne = cumul / compteur moyenne = arrondir(moyenne, apresVirgule) celluleMoyenne.value = moyenne end if next End Sub
Si on ne modifie aucun paramètre, il faut que les notes d'un élève se suivent sur une ligne. Il faut aussi que la remarque (contrôle facultatif) soit sur la même colonne de la note et la ligne des remarques soit juste au-dessus des notes du premier élève.
La colonne, en suivant à droite des notes, est la colonne des moyennes conditionnées.
On a une ligne par élève.
Chez moi, sur la ligne 1, j'ai :
en A : rien, en B : note 1, en C : note 2 ... en F : note 5 (la dernière), en G : moyenne
ligne 2 :
en A : remarque, en B : F et pareil en C. Ces 2 notes sont facultatives donc prises en compte si la note est supérieure ou égale à 10. Rien après
ligne 3 :
en A : le nom de l'élève 1, en B : sa note au contrôle (note 1) et ainsi de suite
ligne 4 : l'élève 2
et ainsi de suite.
On crée un bouton "calculer moyennes" qu'on mettra sur la feuille à un endroit visible et qui ne gène pas.
Pour ce faire :
Insertion > Contrôle de formulaire > Bouton
On place le bouton et on le dimensionne
On le renomme en cliquant droit dessus : Contrôle
à l'onglet Général : on entre un nom à l'étiquette : calculer moyennes
à l'onglet Événements : à Exécuter l'action : on clique sur les (...) et on va récupérer la macro
On quitte le mode conception :
Affichage > Barres d'outils > Contrôle de formulaires (doit être coché)
On déselectionne le bouton "mode conception" pour rendre le bouton actif.
Pour que la macro fonctionne et inscrive les moyennes, il faut :
1/ sélectionner la plage de TOUTES les notes à la souris. Donc, de la note 1 du premier élève à la dernière note du dernière élève, absences comprises.
2/ cliquer sur le bouton "calculer moyennes" et laisser faire la magie !
Attention, il n'y a pas de gestion d'erreur, si la valeur est incohérente, exemple la note est 25 alors que le max est 20, la note ne sera pas prise en compte mais l'erreur ne sera pas indiquée.
J'envoie le lien :
https://mon-partage.fr/f/l7MbswN5/