• Initiateur de la discussion Initiateur de la discussion downloads
  • 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 !

D

downloads

Guest
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

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+
 
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 ?
 
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
 
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+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
4
Affichages
2 K
Morvaxx
M
D
Réponses
4
Affichages
1 K
downloads
D
M
Réponses
3
Affichages
1 K
J
Retour