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+
 
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

Membres actuellement en ligne

Statistiques des forums

Discussions
312 504
Messages
2 089 070
Membres
104 018
dernier inscrit
Mzghal