Hello @tous,
Après avoir été un lecteur assidu du forum pour des questions diverses, c'est à mon tour de venir chercher de l'aide, après avoir fait choux blanc dans ma recherche de problèmes similaires !
Le problème est probablement très bête à résoudre, mais à force de me casser les dents dessus... HELP !
Pour des raisons de confidentialité je ne peux pas partager le classeur (qui comprend beaucoup de feuilles et plusieurs dizaines de milliers de lignes de code!), et le rendre anonyme me prendrait plus de temps que de décrire mon problème.
En pratique : j'ai un graphique (courbe) dont la série de données a une ligne de départ variable (en fonction de la date).
Le graphique est affiché dans une feuille nommée 'PTF_XXX', et les données proviennent d'une feuille nommée 'Temp_Data_H_3'.
Voici le début du code :
L'espion me montre que la valeur String de la série est correctement renvoyée (exemple de la valeur retoutrnée : "=SERIE('[DAM PTF v2.7.4.2 (DEV)-3-b.xlsb]Temp_Data_H_3'!$X$3;'[DAM PTF v2.7.4.2 (DEV)-3-b.xlsb]Temp_Data_H_3'!$A$652:$A$671;'[DAM PTF v2.7.4.2 (DEV)-3-b.xlsb]Temp_Data_H_3'!$X$652:$X$671;1)"
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 Sub MàJGraphPTFVAL(wsPTF As Excel.Worksheet, FeuilleDataHisto As Excel.Worksheet, iLigneMaxUpdate, iNumFonds, DateRef) Dim MPerf As ChartObject, YPerf As ChartObject, HPerf As ChartObject, GAlpha2 As ChartObject, _ ligM%, _ iSeries As Series, YRangeSérie1 As Range, YRangeSérie2 As Range, YRangeSérie3 As Range, XRangeAbs As Range, NSerName1 As Range, NSerName2 As Range, NSerName3 As Range, sFormuleSerie, _ iStartM, iStartY, iStartH, _ sSeries$ Set MPerf = wsPTF.ChartObjects("MPerf") Set YPerf = wsPTF.ChartObjects("YPerf") Set HPerf = wsPTF.ChartObjects("HPerf") iStartM = Application.WorksheetFunction.XLookup(CLng(MtD(CDate(DateRef))), FeuilleDataHisto.[A:A], FeuilleDataHisto.[A:A], 0) If Not iStartM = 0 Then iStartM = Application.WorksheetFunction.Match(CLng(iStartM), FeuilleDataHisto.[A:A], 0) + 1 iStartY = Application.WorksheetFunction.XLookup(CLng(YtD(CDate(DateRef))), FeuilleDataHisto.[A:A], FeuilleDataHisto.[A:A], 0) If Not iStartY = 0 Then iStartY = Application.WorksheetFunction.Match(CLng(iStartY), FeuilleDataHisto.[A:A], 0) + 1 iStartH = 4 If Not iStartM = 0 Then 'Chart perf Monthly With FeuilleDataHisto sSeries = "$A$" & iStartM & ":$A$" & iLigneMaxUpdate Set XRangeAbs = .Range(sSeries) sSeries = "$X$" & iStartM & ":$X$" & iLigneMaxUpdate Set YRangeSérie1 = .Range(sSeries) Set NSerName1 = .Range("X3") End With Set iSeries = MPerf.Chart.SeriesCollection(Index:=1) sFormuleSerie = "=SERIE(" & _ NSerName1.Address(, , , True) & ";" & _ XRangeAbs.Address(, , , True) & ";" & _ YRangeSérie1.Address(, , , True) & ";1)" iSeries.FormulaLocal = sFormuleSerie End If
EN REVANCHE, et c'est là que le bât blesse, l'espion me montre que la valeur du paramètre FormulaLocal change la feuille Temp_Data_H_3 par une autre (celle de ma feuille de paramétrage) ! Voici la valeur du paramètre formulalocal de l'objet iSeries : "=SERIE(PARAM!$X$3;PARAM!$A$652:$A$671;PARAM!$X$652:$X$671;1)"
Par contre, si je remplace la string variable par une string fixe, aucun souci, le graph est bien mappé à la bonne feuille.
je suppose qu'il s'agit d'un format de variable mais lequel et pourquoi..? ça m'échappe totalement
J'en appelle donc à vos lumières et à vot' bon coeur :')
la bise
Partager