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

Moyenne si sous vba

downloads

XLDnaute Nouveau
Bonjour,

J'ai un tableau dans une premiere feuille ou chaque années je viens ajouter les notes des eleves pour différentes matières. Je viendrai tous les ans rajouter des notes donc mon fichier va grossir et evoluer. Je voudrai avoir une seconde feuille récapitulative ou j'ai la moyenne de leur note sur toutes les années.

J'ai fait un code vba ou j'ai defini une fonction "moyennesi" et ensuite une sub"moyenne". Le pb c'est que ca m'indique depacement de capacité.
Je n'ai pas trop de connaissances du coup je ne sais pas à quoi est due mon erreur.

J'ai joint un fichier ou j'ai détaillé un maximum ce que j'ai fait pour que vous poussiez m'aider si le coeur vous en dit.

Merci d'avance
 

Pièces jointes

  • Moyennes.zip
    18.5 KB · Affichages: 107
  • Moyennes.zip
    18.5 KB · Affichages: 94
  • Moyennes.zip
    18.5 KB · Affichages: 106
G

Guest

Guest
Re : Moyenne si sous vba

Bonjour,

1 - Tout dans le même module.

2 - Divison par 0

3 - Quant on traite des lignes et colonnes, déclarer en Long

Code:
Function MoyenneSi(ByVal Plage As Range, ByVal Critere As String, Optional ByVal SommePlage As Range) As Double
    
    Dim Som As Double
    Dim Nb As Double
'----------------- Récupèrations des valeurs par Worksheetfunction----------------------------
    Som = WorksheetFunction.SumIf(Plage, Critere, SommePlage)
    Nb = WorksheetFunction.CountIf(Plage, Critere)
'------------------------------------- Renvoi ------------------------------------------------
  [SIZE=3][COLOR=red]  If Nb > 0 Then MoyenneSi = Som / Nb[/COLOR][/SIZE]
End Function
Sub Moyenne()
    Dim i As Long
    Dim j As Long
    Dim colonnemax As Long
    
    Cells(9, 4).Select
    colonnemax = ActiveCell.Column
    
    For i = 9 To 73
    For j = 4 To colonnemax
    
        Sheets("notes").Cells(i, 4).Value = MoyenneSi(Sheets("notes").Cells(i, j), Sheets("notes").Cells(8, j).Value = pierre, Sheets("bibliothèque de note").Cells(i, 4))
    Next j
    Next i
    
End Sub

A+
 

downloads

XLDnaute Nouveau
Re : Moyenne si sous vba

Tout d'abord merci d'accepter de m'aider. Mais j'ai essayé ton code et ca me met des 0 partout dans ma feuille "notes" sur la colonne pierre ??? Es ce normal ?? le code marche -t-il pour toi ?
 

downloads

XLDnaute Nouveau
Re : Moyenne si sous vba

Ah ok. Merci deja pour ton aide ca m'ai bien utile je vais pouvoir me concentrer sur mon autre erreur qui est que ca me met une moyenne de 0. Mais au moins ca me calcule qqch.

Bonne journée et merci encore
 
G

Guest

Guest
Re : Moyenne si sous vba

Re,

Vérifie l'adresse de 'Plage' et 'SommePlage' par des

Debug.Print "Plage: ",Plage.Address, "SommePlage:", SommePlage.Address

En ayant la fenêtre execution affichée

Ainsi que leur contenu.

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…