Erreur 438 avec, je pense, l'objet : FullSeriesCollections
jeremayb
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
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 :
Merci pour votre aide,
Jeremy
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
A voir également:
- Erreur 438 avec, je pense, l'objet : FullSeriesCollections
- Vente objet occasion entre particulier - Guide
- Trouver objet avec photo - Guide
- Objet interdit en cabine ryanair - Guide
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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:
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
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.
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.
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 !
Si quelqu'un a un complément de réponse a me fournir,
Merci d'avance !
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.
En espérant que cela réponde tant bien que mal à votre question.
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
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
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
peut-être préférable:
sinon, créer le chart en VBA, plutôt que de passer à un vieil Excel un chart créé par un plus jeune.
.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.