Erreur 438 avec, je pense, l'objet : FullSeriesCollections

Fermé
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020 - Modifié le 13 avril 2020 à 13:44
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 - 14 avril 2020 à 17:49
Bonjour,

J'ai écris un code en vba qui, "rempli" un graphique déjà créer mais vide, en récupérant le nom de ce graphique ainsi que sa plage source. La ligne .SetSourceData sert à récupérer la 1er colonne de valeur et la ligne .FullSeriesCollection sert a ajouter la 2e colonne de valeur (je n'ai pas réussi a faire autrement).

Tout fonctionne parfaitement sur mon PC et ma version d'excel qui est la plus récente, mais sur les machines de mes collègues un bug persiste au niveau du FullSeriesCollection (voir code ci dessous). Mon collègues utilise la version d'excel 2007 et obtient l'erreur 438 sur cette même ligne. Voici le code :
Sub adapter_graph(nom_graph As String, PlageSourceD1 As String, PlageSourceF1 As String, PlageSourceD2 As String, PlageSourceF2 As String)
    
With Workbooks("Carte cours d'eau de france Beta.xlsm").ActiveSheet.ChartObjects(nom_graph + " GRAPH").Chart
        .ChartType = xlLine
        .SetSourceData Source:=Workbooks("Carte cours d'eau de france Beta.xlsm").ActiveSheet.Range(PlageSourceD1 + ":" + PlageSourceF1), PlotBy:=xlColumns
        .FullSeriesCollection(1).XValues = Workbooks("Carte cours d'eau de france Beta.xlsm").ActiveSheet.Range(PlageSourceD2 + ":" + PlageSourceF2)
        .HasTitle = True
        .ChartTitle.Characters.Text = "Débit spécifique / années (" + nom_graph + ")"
        .ChartTitle.Font.Size = 11
    End With
End Sub


Merci pour votre aide,

Jeremy

Configuration: Windows / Chrome 80.0.3987.163

4 réponses

yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
13 avril 2020 à 13:22
bonjour, aucun texte explicatif affiché en même temps que l'erreur?
pour faciliter la compréhension, et déterminer quelle partie de la ligne pose problème, je ferais ainsi:
Sub adapter_graph(nom_graph As String, PlageSourceD1 As String, PlageSourceF1 As String, PlageSourceD2 As String, PlageSourceF2 As String)
dim rg as range
With Workbooks("Carte cours d'eau de france Beta.xlsm").ActiveSheet.ChartObjects(nom_graph + " GRAPH").Chart
.ChartType = xlLine
.SetSourceData Source:=Workbooks("Carte cours d'eau de france Beta.xlsm").ActiveSheet.Range(PlageSourceD1 + ":" + PlageSourceF1), PlotBy:=xlColumns
set rg = Workbooks("Carte cours d'eau de france Beta.xlsm").ActiveSheet.Range(PlageSourceD2 + ":" + PlageSourceF2)
.FullSeriesCollection(1).XValues = rg
.HasTitle = True
.ChartTitle.Characters.Text = "Débit spécifique / années (" + nom_graph + ")"
.ChartTitle.Font.Size = 11
End With
End Sub
0
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020
13 avril 2020 à 14:15
Alors merci tout d'abord pour votre réponse, le texte explicatif est "Propriété ou méthode non gérée par cet objet"

Le problème est que je ne peux pas déboguer ca depuis mon ordi vu que tout marche parfaitement chez moi (en confinement du coup).

Je vais demander à mon collègue de tester le code sur son PC avec votre modification.

Si vous avez des compléments de réponse en attendant n'hésitez pas,

Je reviens vers vous.
0
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020
13 avril 2020 à 15:45
Update, mon collègue viens de me répondre et obtient le même code erreur sur le FullSerieCollection avec la modification suggérer par yg_be.

Si quelqu'un a un complément de réponse a me fournir,

Merci d'avance !
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
13 avril 2020 à 16:05
pourrais-tu partager le fichier de ton collègue?
0
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
13 avril 2020 à 18:01
Le fichier est malheureusement confidentiel, je peux vous dire qu'il est le même que le mien avec une extension différente xls au lieu de xlsm due a sa version 2007. J'ai essayé de convertir mon fichier en xls et de le lancer et tout fonctionne normalement également sur mon PC.
En espérant que cela réponde tant bien que mal à votre question.
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474 > jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020
14 avril 2020 à 13:12
je n'ai bien sûr pas besoin de vraies données, du moment que le code VBA peut fonctionner.
0
jeremayb Messages postés 18 Date d'inscription lundi 13 avril 2020 Statut Membre Dernière intervention 26 juin 2020 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
14 avril 2020 à 13:36
Le code récupère des données dans d'autres fichiers en local, et s'en sert pour remplir les graphes avec. Voila un exemple de la partie buggué en fonctionnement avec un jeu de données en dur. Il faut bien sur au préalable dans sa feuille de calcul créer un graphique vide et le nommé (dans le cas présent) : YES

Function test()
Call adapter_graph("YES", "A1", "A21", "B2", "B21")
End Function

Sub adapter_graph(nom_graph As String, PlageSourceD1 As String, PlageSourceF1 As String, PlageSourceD2 As String, PlageSourceF2 As String)

With ThisWorkbook.ActiveSheet.ChartObjects(nom_graph).Chart
.ChartType = xlLine
.SetSourceData Source:=ThisWorkbook.ActiveSheet.Range(PlageSourceD1 + ":" + PlageSourceF1), PlotBy:=xlColumns
Set rg = ThisWorkbook.ActiveSheet.Range(PlageSourceD2 + ":" + PlageSourceF2)
.FullSeriesCollection(1).XValues = rg
.HasTitle = True
.ChartTitle.Characters.Text = "D?bit sp?cifique / ann?es (" + nom_graph + ")"
.ChartTitle.Font.Size = 11
End With
End Sub
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
14 avril 2020 à 17:49
peut-être préférable:
.SeriesCollection(1).XValues = ThisWorkbook.ActiveSheet.Range(PlageSourceD2 + ":" + PlageSourceF2)
.SeriesCollection(1).Values = ThisWorkbook.ActiveSheet.Range(PlageSourceD1 + ":" + PlageSourceF1)

sinon, créer le chart en VBA, plutôt que de passer à un vieil Excel un chart créé par un plus jeune.
0