Graphique à séries variables
Bonjour à tous,
Pour faire simple, je cherche à faire un graphique de type "colonnes" (avec 2 séries de données pour être précis). Les plages de données pouvant varier, j'utilise des variables string (path1,path2 et noms) pour les définir.
Jusque là tout va bien, elles prennent exactement la valeur souhaitée :
"='Bilan Energies'!$F$23;'Bilan Energies'!$M$23;'Bilan Energies'!$T$23" (par exemple)
Cependant, quand vient le moment de définir la série de donnée, "Erreur d'exécution '1004', Erreur définie par l'application ou par l'objet" sur les lignes:
ActiveChart.SeriesCollection(1).Values = path1
ActiveChart.SeriesCollection(2).Values = path2
ActiveChart.SeriesCollection(1).XValues = noms
Je pense que le problème vient du fait que ces variables soient des string mais quand j'enregistre manuellement la macro, Excel met également un string:
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""kwh/t"""
ActiveChart.SeriesCollection(1).Values = "='Bilan Energies'!$F$23;'Bilan Energies'!$M$23;'Bilan Energies'!$T$23"
Mon fichier comprenant de nombreux modules, vous ne pourrez pas comprendre pourquoi je construit "path1,path2 et noms" ainsi mais je suis sûr de leur valeur et que l'erreur ne vient pas de là.
En espérant avoir été clair, je vous remercie par avance
Sub Graphique_bilan()
Dim letter1 As String
Dim letter2 As String
letter1 = "F"
letter2 = "E"
Dim path1 As String
Dim path2 As String
Dim compt As Integer
compt = 0
path1 = "="
path2 = "="
For i = 1 To 9
If TbBool(i) = True And FeuilleExiste(ThisWorkbook, "Tab " & TbSite(i)) Then
If compt = 0 Then
path1 = path1 + "'Bilan Energies'!$" + letter1 + "$23"
Else
path1 = path1 + ";'Bilan Energies'!$" + letter1 + "$23"
End If
compt = 1
letter1 = Chr(Asc(letter1) + 7)
End If
Next i
compt = 0
For i = 1 To 9
If TbBool(i) = True And FeuilleExiste(ThisWorkbook, "Tab " & TbSite(i)) Then
If compt = 0 Then
path2 = path2 + "'Bilan Energies'!$" + letter2 + "$23"
Else
path2 = path2 + ";'Bilan Energies'!$" + letter2 + "$23"
End If
compt = 1
letter2 = Chr(Asc(letter2) + 7)
End If
Next i
Dim noms As String
noms = "={"
compt = 0
For i = 1 To 9
If TbBool(i) = True And FeuilleExiste(ThisWorkbook, "Tab " & TbSite(i)) Then
If compt = 0 Then
noms = noms + """" + TbSite(i) + """"
Else
noms = noms + ".""" + TbSite(i) + """"
End If
compt = 1
End If
Next i
noms = noms + "}"
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xl3DColumnClustered
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""KWh/T"""
ActiveChart.SeriesCollection(1).Values = path1
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "=""Tonnes produites (*10-2)"""
ActiveChart.SeriesCollection(2).Values = path2
ActiveChart.SeriesCollection(1).XValues = noms
End Sub
Bonjour et bienvenu(e),
Pour commencer, un peu de lecture.
https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html
Porte une attention particulière au point 6.
Cdlt.
N'ayant pas accès à la base de donnée contenant les fichier .cvs, vous ne pourrez pas le faire tourner