Erreur d'exécution 1004 - Impossible de lire la propriété
Bonjour,
Je débute sur Excel VBA et je bloque sur une erreur d'exécution 1004 ! Arriveriez-vous à trouver la source du problème ?
J'ai joint une capture d'écran du problème !
Voici un copier collé de mon code :
Option Base 1
Public Plage_Rentas As Range
Sub Statistiques_Elémentaires()
Dim Tableau_Résultats() As Variant
Dim Ligne_Tableau As Integer
Dim Feuille As Worksheet
Nb_Actions = ThisWorkbook.Worksheets.Count - 1
ReDim Tableau_Résultats(Nb_Actions, 7)
Ligne_Tableau = 0
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name <> " Statistiques " Then
Feuille.Activate
Call Calcule_Rentas
Ligne_Tableau = Ligne_Tableau + 1
Tableau_Résultats = Statistiques(Feuille, Tableau_Résultats, Ligne_Tableau)
End If
Next Feuille
Worksheets("Statistiques").Activate
Range("A2").Select
Range(Selection, Selection.Offset(Nb_Actions - 1, 6)).Value = Tableau_Résultats
End Sub
Function Calcule_Rentas()
Range("C3").Select
Set Plage_Rentas = Range(Selection, Selection.End(xlDown)).Offset(-1, 1)
Plage_Rentas.FormulaR1C1 = "=ln((R[1]C2 + RC3) / RC2)"
Calcule_Rentas = Plage_Rentas
End Function
Function Statistiques(Feuille, Tableau_Résultats, Ligne_Tableau)
Tableau_Résultats(Ligne_Tableau, 1) = Feuille.Name
Tableau_Résultats(Ligne_Tableau, 2) = Plage_Rentas.Cells.Count
Tableau_Résultats(Ligne_Tableau, 3) = WorksheetFunction.Average(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 4) = WorksheetFunction.Median(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 5) = WorksheetFunction.StDev(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 6) = WorksheetFunction.Skew(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 7) = WorksheetFunction.Kurt(Plage_Rentas)
Statistiques = Tableau_Résultats
End Function
Merci beaucoup !
Tom MARTIN
Bonjour,
Sans fichier c'est compliqué
VBA te dit que tu as un problème avec la fonction "moyenne" de ta plage
Essaye d'appliquer manuellement la formule pour voir ce que te dit Excel via la formule
A+
Bonjour !
Merci pour cette réponse rapide ! Malheureusement, je n'arrive pas à te transmettre le fichier excel, il est trop gros !
Je t'envoie, ci-joint, des captures d'écran du dossier excel. C'est assez simple : Chacune des 4 premières feuilles correspond à une action et contient la date, le cours d'ouverture, les dividendes versés et le taux de rentabilité sur les 3 dernières années. (cf capture d'écran 1)
Le taux de rentabilité est censé être calculé par mon code VBA. Il le fait pour la première action mais pas pour les autres.... Le problème doit venir de là pour la moyenne (et donc d'un problème venant de "Calcule_Rentas " du code... ? ) !
La dernière feuille est celle où l'ensemble des statistiques calculées par le code est censé s'afficher.
Manuellement, qu'entends-tu par là ?
Merci encore,
Tom
Bonjour,
1)
Call Calcule_RentasCalcule_Rentas est une fonction, elle doit retourner une valeur que tu affectes à une variable.
a=Calcule_Rentas
2)
Function Statistiques(Feuille, Tableau_Résultats, Ligne_Tableau)
Tableau_Résultats(Ligne_Tableau, 1) = Feuille.Name
Tableau_Résultats(Ligne_Tableau, 2) = Plage_Rentas.Cells.Count
Tableau_Résultats(Ligne_Tableau, 3) = WorksheetFunction.Average(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 4) = WorksheetFunction.Median(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 5) = WorksheetFunction.StDev(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 6) = WorksheetFunction.Skew(Plage_Rentas)
Tableau_Résultats(Ligne_Tableau, 7) = WorksheetFunction.Kurt(Plage_Rentas)
Statistiques = Tableau_Résultats
End Functionmets un point d'arrêt sur cette ligne :
Tableau_Résultats(Ligne_Tableau, 3) = WorksheetFunction.Average(Plage_Rentas)
à quoi est égal Plage_Rentas ? Ca doit être un range valide. Et pourquoi ne pas la passer en paramètre puisque s'en est un ?
eric