Bonjour à tous,

J'ai récemment appris comment passer des arguments optionnels ou non à une procédure.

Toutefois je n'ai été confronté à l'appel de ce type de procédure que pour le passage des paramètres de graphiques.

Ici je voudrais savoir comment à chaque appel de la procédure pouvoir à la fois transmettre les paramètres du graphique à créer tout en passant la ou les plage(s) devant alimenter l'argument RowSource d'une ListeBox qui irait chercher systématiquement ses données dans un Bilan, Compte de résultats et une série de ratios (Feuille 3). Graphiques et données financières apparaissant tous en Feulle 1.

En annexe je fourni un document .pdf se composant à la fois de la feuille 1 sur laquelle on peut voir que j'ai appelé le graphique Key Financials et de la feuille 3 dans laquelle se trouve les bilan, compte de résultat et les ratios.

Pour enfoncer le clou je précise donc qu'IDEALEMENT j'aimerais accompagner mon graphique d'une fenêtre affichant les données financières dudit graphique. Cela aide mieux à l'analyse selon moi.

D'avance merci de votre temps et patience.

Ricardo.

PS Ci-dessous les deux procédures clés de ma requête. Celle appelant le graphique Key Financial. Ansi que celle, Chart_PL_Analysis, recevant les arguments et dans laquelle devrait apparaître le code pour l'affichage de la ListBox.

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
Private Sub BTNPLAnalysisRatiosMenuKF_Click()
 
Dim PlageF As Variant
Dim Plage1 As Range
Dim Plage2 As Range
Dim Plage3 As Range
Dim Plage4 As Range
Dim Plage5 As Range
 
Dim Etiquette1 As Variant
Dim Etiquette2 As Variant
Dim Etiquette3 As Variant
Dim Etiquette4 As Variant
Dim Etiquette5 As Variant
 
 
Dim ChartTitleA As String
Dim ChartTypeA As Variant
Dim ChartNameA As Variant
 
ChartTypeA = xlColumnClustered
ChartTitleA = "Key Financials"
ChartNameA = "Key Financials"
 
Set Plage1 = Worksheets(1).Range("I35:K35")
Set Plage2 = Worksheets(1).Range("I37:K37")
Set Plage3 = Worksheets(1).Range("I40:K40")
Set Plage4 = Worksheets(1).Range("I42:K42")
Set Plage5 = Worksheets(1).Range("I44:k44")
 
Etiquette1 = Worksheets(1).Range("G35")
Etiquette2 = Worksheets(1).Range("G37")
Etiquette3 = Worksheets(1).Range("G40")
Etiquette4 = Worksheets(1).Range("G42")
Etiquette5 = Worksheets(1).Range("G44")
 
Call Chart_PL_Analysis(ChartNameA, ChartTypeA, ChartTitleA, Plage1, Etiquette1, Etiquette2, Etiquette3, Etiquette4, Etiquette5, Plage2, Plage3, Plage4, Plage5)
 
End Sub
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
Private Sub Chart_PL_Analysis(CharTNamePLA As Variant, ChartTypePLA As Variant, ChartTitlePLA As String, Plage1 As Range, Optional Etiquette1 As Variant, Optional Etiquette2 As Variant, Optional Etiquette3 As Variant, Optional Etiquette4 As Variant, Optional Etiquette5 As Variant, Optional Plage2 As Variant, Optional Plage3 As Variant, Optional Plage4 As Variant, Optional Plage5 As Variant)
 
Dim Plage As Range
Dim Mon_Graphique As Shape
Dim Ma_Feuille As Worksheet
 
On Error Resume Next
 
Set Plage = Plage1
If Not IsMissing(Plage2) Then Set Plage = Union(Plage, Plage2)
If Not IsMissing(Plage3) Then Set Plage = Union(Plage, Plage3)
If Not IsMissing(Plage4) Then Set Plage = Union(Plage, Plage4)
If Not IsMissing(Plage5) Then Set Plage = Union(Plage, Plage5)
Set Ma_Feuille = ThisWorkbook.Worksheets(1)
Set Mon_Graphique = Ma_Feuille.Shapes.AddChart
 
With Mon_Graphique
    .Top = Range("e12").Top
    .Left = Range("e12").Left
    .Height = Range("e12:h28").Height
    .Width = Range("e12:h28").Width
    .Name = CharTNamePLA
 
    With .Chart
        .SetSourceData Plage, xlRows
        .SeriesCollection(1).XValues = "='Balance Sh. and P&L'!$D$7:$F$7"
        .SeriesCollection(1).Name = Etiquette1
        .SeriesCollection(2).Name = Etiquette2
        .SeriesCollection(3).Name = Etiquette3
        .SeriesCollection(4).Name = Etiquette4
        .SeriesCollection(5).Name = Etiquette5
        .ChartType = ChartTypePLA
        .HasTitle = True
        .ChartTitle.Text = ChartTitlePLA
    End With
 
End With
 
Set Ma_Feuille = Nothing
Set Mon_Graphique = Nothing
Set Plage = Nothing
 
End Sub