Bonjour,

lors de lexecution de la macro suivante, un message d'erreur s'affiche en me disant ainsi "variable objet ou variable de bloc with non définie" ( pour la ligne Tableau_resultats(Ligne_tableau, 2) = Plage_Rentabilites.Cells.Count 'nombre des taux de rentabilités) sauriez vous m'aider à identifier le probléme ? (j'en profite pour vous demander si il y aurait, selon vous, la possibilité d'effectuer la fonction et les procédures en meme temps de telle sorte que tous s'affiche au meme instant ? j'ai essayé un "call statistiques" pour la fonction mais celui ci m'affiche : argument non facultatif) un grand merci à vous !!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Option Base 1
Public Plage_Rentabilites As Range
 
 
Sub Statistiques_Rentabilites()
 
Dim Tableau_resultats() As Variant
Dim Ligne_tableau As Integer
Dim Feuille As Worksheet
Nb_Actions = ThisWorkbook.Worksheets.Count - 1
ReDim Tableau_resultats(Nb_Actions, 7)
Ligne_tableau = 0
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name <> "STATISTIQUES" Then
Feuille.Activate
Call Calcule_Rentabilites
 
Ligne_tableau = Ligne_tableau + 1
Tableau_resultats = Statistiques(Feuille, Tableau_resultats, Ligne_tableau)
End If
Next Feuille
Worksheets("STATISTIQUES").Activate
Range("A2").Select
Range(Selection, Selection.Offset(Nb_Actions - 1, 6)).Value = Tableau_resultats
 
End Sub
 
'Calcul des taux de rentabilités
Sub Calcule_Rentabilites()
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name <> "STATISTIQUES" Then
Feuille.Activate
Dim Plage_Rentabilites&
'jusqu'à la derniere ligne non vide
Plage_Rentabilites = Cells(Rows.Count, 1).End(xlUp).Row
Columns(7).Delete '<- ligne à supprimer aprés le test
With Range("G1")
.Value = "Taux de rentabilité": .Interior.Color = 55: .Font.Bold = -1: .Font.Color = 255
End With
'formule
Range("G2").Resize(Plage_Rentabilites - 1) = "=ln((R[1]C2+RC3)/RC2)"
End If
Next Feuille
Worksheets("STATISTIQUES").Activate
End Sub
 
Function Statistiques(Feuille, Tableau_resultats, Ligne_tableau)
 
'mise en forme
Sheets("STATISTIQUES").Range("A1:G1").Interior.Color = 55
Sheets("STATISTIQUES").Range("A1:A7").Interior.Color = 55
Sheets("STATISTIQUES").Range("A1:G1").Font.Color = 255
Sheets("STATISTIQUES").Range("A1:A7").Font.Color = 255
Sheets("STATISTIQUES").Range("A1").Value = "Nombre des taux"
Sheets("STATISTIQUES").Range("B1").Value = "titres"
Sheets("STATISTIQUES").Range("C1").Value = "moyenne"
Sheets("STATISTIQUES").Range("D1").Value = "Mediane"
Sheets("STATISTIQUES").Range("E1").Value = "Ecart-type"
Sheets("STATISTIQUES").Range("F1").Value = "Skewness"
Sheets("STATISTIQUES").Range("G1").Value = "kurtosis"
 
Tableau_resultats(Ligne_tableau, 1) = Feuille.Name
Tableau_resultats(Ligne_tableau, 2) = Plage_Rentabilites.Cells.Count 'nombre des taux de rentabilités
Tableau_resultats(Ligne_tableau, 3) = WorksheetFunction.Average(Plage_Rentabilites) 'la moyenne
Tableau_resultats(Ligne_tableau, 4) = WorksheetFunction.Median(Plage_Rentabilites) ' la mediane
Tableau_resultats(Ligne_tableau, 5) = WorksheetFunction.StDev(Plage_Rentabilites) ' Ecart-type
Tableau_resultats(Ligne_tableau, 6) = WorksheetFunction.Skew(Plage_Rentabilites) ' la Skewness
Tableau_resultats(Ligne_tableau, 7) = WorksheetFunction.Kurt(Plage_Rentabilites) ' la kurtosis
Statistiques = Tableau_resultats
 
End Function