cartiers
-
Modifié par cartiers le 23/04/2013 à 10:24
cartiers -
23 avril 2013 à 10:52
Bonjour,
Je viens de creer une fonction permettant de calculer une moyenne ponderee.
J'y fais appel dans deux procédures, l'une s'ouvrant automatiquement à l'activation de la page, l'autre en cliquant sur un bouton actualiser (pour refaire les calculs lors de chaque modification).
Mais excel me renvoie le message "espace pile insuffisant".
J'ai essayé de déboguer et je me suis aperçue que dans la fonction, la ligne reste figée à 4 (première valeur de k) sans arrêt.
Voici mon code, si qulqu'un veut bien prendre un peu de temps pour m'aider.
Merci d'avance (je débute encore en vba)
Private Sub Actualiser_Click()
For k = 4 To 34
Range("B" & k) = Moy_pond(k)
Next
End Sub
Private Sub Worksheet_Activate()
For k = 4 To 34
Sheets("Notes_chap").Range("C" & k) = Sheets("chapitre 1").Range("H" & k + 4).Value
Sheets("Notes_chap").Range("H" & k) = Sheets("chapitre 6").Range("H" & k + 4).Value
Range("B" & k) = Moy_pond(k)
Next
End Sub
Function Moy_pond(ligne)
Set plage = Range(Cells(ligne, 3), Cells(ligne, 26))
Set coef = Range(Cells(2, 3), Cells(2, 26))
somme = Application.WorksheetFunction.SumProduct(plage, coef)
c = 0
For l = 3 To 23
If Cells(ligne, l) <> "" Then
c = Cells(2, l) + c
End If
Next
Moy_pond(ligne) = somme / c
End Function
A voir également:
Probleme d'espace pile insuffisant/ fonction qui ne s'itere pas