je cherche à mettre à jour un graphique à partir d'une macro.
mon graphique est déjà créé.
Je supprime la série de mon graphique
Je supprime les données vers lesquelles pointaient la série
Je met de nouvelles données
Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message :
"une des formules de cette feuille de calcul contient une ou plusieurs
références externes non valides \n Vérifiez que le chemin d'accès, le
classeur, le nom de la plage et les références de cellules de toutes les
formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo :
Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate
Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2")
sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre
qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate
Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série
str = "=F2!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row
ActiveChart.SeriesCollection(1).XValues = str
str = "=F2!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row
ActiveChart.SeriesCollection(1).Values = str
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Misange
Bonjour à la main ou par VBA, excel déteste qu'on supprime des données qui sont reliées à un graphique. Pourquoi ne pas tout simplement enregistrer le premier graphique comme modèle (pour garder le bon format) et détruire le graphique pour le recréer ?
Misange migrateuse XlWiki : Participez à un travail collaboratif sur excel ! http://xlwiki.free.fr/wiki http://www.excelabo.net
bcar a écrit :
Bonjour,
je cherche à mettre à jour un graphique à partir d'une macro. mon graphique est déjà créé. Je supprime la série de mon graphique Je supprime les données vers lesquelles pointaient la série Je met de nouvelles données Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message : "une des formules de cette feuille de calcul contient une ou plusieurs références externes non valides n Vérifiez que le chemin d'accès, le classeur, le nom de la plage et les références de cellules de toutes les formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo : Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2") sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série str = "ò!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).XValues = str str = "ò!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).Values = str
Merci
Bonjour
à la main ou par VBA, excel déteste qu'on supprime des données qui sont
reliées à un graphique.
Pourquoi ne pas tout simplement enregistrer le premier graphique comme
modèle (pour garder le bon format) et détruire le graphique pour le
recréer ?
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net
bcar a écrit :
Bonjour,
je cherche à mettre à jour un graphique à partir d'une macro.
mon graphique est déjà créé.
Je supprime la série de mon graphique
Je supprime les données vers lesquelles pointaient la série
Je met de nouvelles données
Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message :
"une des formules de cette feuille de calcul contient une ou plusieurs
références externes non valides n Vérifiez que le chemin d'accès, le
classeur, le nom de la plage et les références de cellules de toutes les
formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo :
Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate
Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2")
sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre
qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate
Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série
str = "ò!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row
ActiveChart.SeriesCollection(1).XValues = str
str = "ò!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row
ActiveChart.SeriesCollection(1).Values = str
Bonjour à la main ou par VBA, excel déteste qu'on supprime des données qui sont reliées à un graphique. Pourquoi ne pas tout simplement enregistrer le premier graphique comme modèle (pour garder le bon format) et détruire le graphique pour le recréer ?
Misange migrateuse XlWiki : Participez à un travail collaboratif sur excel ! http://xlwiki.free.fr/wiki http://www.excelabo.net
bcar a écrit :
Bonjour,
je cherche à mettre à jour un graphique à partir d'une macro. mon graphique est déjà créé. Je supprime la série de mon graphique Je supprime les données vers lesquelles pointaient la série Je met de nouvelles données Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message : "une des formules de cette feuille de calcul contient une ou plusieurs références externes non valides n Vérifiez que le chemin d'accès, le classeur, le nom de la plage et les références de cellules de toutes les formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo : Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2") sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série str = "ò!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).XValues = str str = "ò!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).Values = str
Merci
michdenis
Je n'ai pas vu ton application... mais tu semble prendre pour acquis que ce message est relié à la mise à jour de ton graphe ! En es-tu certain ?
Concernant la mise à jour de ton graphe, Pourquoi n'utilise pas des plages nommées définies au niveau de la feuille pour définir tes séries de données ? Pour mettre à jour ton graphe, tu n'auras qu'à redéfinir tes "Plages nommées" En vba, il y a une façon simple de réaffecter une plage à un nom. voici un exemple
Redéfinir le nom "Feuil1!toto" après la mise à jour With Feuil1 .range("A2:A" & .Range("A65536").End(xlup).row).Name = .name & "!Toto" End With
Pour ce qui est du message, sans voir l'application, il est plus difficile de "deviner" ce qui pourrait clocher !
"bcar" a écrit dans le message de groupe de discussion : gnbiae$r4u$ Bonjour,
je cherche à mettre à jour un graphique à partir d'une macro. mon graphique est déjà créé. Je supprime la série de mon graphique Je supprime les données vers lesquelles pointaient la série Je met de nouvelles données Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message : "une des formules de cette feuille de calcul contient une ou plusieurs références externes non valides n Vérifiez que le chemin d'accès, le classeur, le nom de la plage et les références de cellules de toutes les formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo : Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2") sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série str = "ò!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).XValues = str str = "ò!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).Values = str
Merci
Je n'ai pas vu ton application... mais tu semble prendre pour acquis
que ce message est relié à la mise à jour de ton graphe ! En es-tu certain ?
Concernant la mise à jour de ton graphe, Pourquoi n'utilise pas des plages
nommées définies au niveau de la feuille pour définir tes séries de données ?
Pour mettre à jour ton graphe, tu n'auras qu'à redéfinir tes "Plages nommées"
En vba, il y a une façon simple de réaffecter une plage à un nom. voici un exemple
Redéfinir le nom "Feuil1!toto" après la mise à jour
With Feuil1
.range("A2:A" & .Range("A65536").End(xlup).row).Name = .name & "!Toto"
End With
Pour ce qui est du message, sans voir l'application, il est plus difficile
de "deviner" ce qui pourrait clocher !
"bcar" <bcar44@laposte.net> a écrit dans le message de groupe de discussion :
gnbiae$r4u$1@writer.imaginet.fr...
Bonjour,
je cherche à mettre à jour un graphique à partir d'une macro.
mon graphique est déjà créé.
Je supprime la série de mon graphique
Je supprime les données vers lesquelles pointaient la série
Je met de nouvelles données
Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message :
"une des formules de cette feuille de calcul contient une ou plusieurs
références externes non valides n Vérifiez que le chemin d'accès, le
classeur, le nom de la plage et les références de cellules de toutes les
formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo :
Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate
Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2")
sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre
qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate
Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série
str = "ò!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row
ActiveChart.SeriesCollection(1).XValues = str
str = "ò!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row
ActiveChart.SeriesCollection(1).Values = str
Je n'ai pas vu ton application... mais tu semble prendre pour acquis que ce message est relié à la mise à jour de ton graphe ! En es-tu certain ?
Concernant la mise à jour de ton graphe, Pourquoi n'utilise pas des plages nommées définies au niveau de la feuille pour définir tes séries de données ? Pour mettre à jour ton graphe, tu n'auras qu'à redéfinir tes "Plages nommées" En vba, il y a une façon simple de réaffecter une plage à un nom. voici un exemple
Redéfinir le nom "Feuil1!toto" après la mise à jour With Feuil1 .range("A2:A" & .Range("A65536").End(xlup).row).Name = .name & "!Toto" End With
Pour ce qui est du message, sans voir l'application, il est plus difficile de "deviner" ce qui pourrait clocher !
"bcar" a écrit dans le message de groupe de discussion : gnbiae$r4u$ Bonjour,
je cherche à mettre à jour un graphique à partir d'une macro. mon graphique est déjà créé. Je supprime la série de mon graphique Je supprime les données vers lesquelles pointaient la série Je met de nouvelles données Je recrée la série.
Jusqu'ici tout va bien ça marche plutôt bien.
Mais à la sauvegarde du fichier Excel j'ai maintenant le message : "une des formules de cette feuille de calcul contient une ou plusieurs références externes non valides n Vérifiez que le chemin d'accès, le classeur, le nom de la plage et les références de cellules de toutes les formules sont corrects."
Sauriez vous comment éviter ce message.
En code ça donne grosso modo : Call ThisWorkbook.Worksheets("F1").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection(1).Delete ' Suppression de la série
sh = ThisWorkbook.Worksheets("F2") sh.Range(sh.Cells(i, 1), sh.Cells(i, x) ' effacement des données
call fillData ' remplissage des données (pas forcément le même nombre qu'auparavant)
Call ThisWorkbook.Worksheets("F").ChartObjects("Graph_1").Activate Call ActiveChart.SeriesCollection.NewSeries ' Création de la nouvelle série
' Paramétrage de la nouvelle série str = "ò!$A$3:$A$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).XValues = str str = "ò!$B$3:$B$" & sh.Cells(2, 1).End(xlDown).Row ActiveChart.SeriesCollection(1).Values = str
Merci
bcar
Merci pour votre soutien,
Alors effectivement michdenis, c'est la solution que j'avais essayé au début mais j'avais malheureusement oublié de spécifier le nom de la feuille ou se trouvaient les données donc j'avais abandonné. J'emploie donc maintenant cette méthode.
Par contre pour information, le problème venait bien de la destruction reconstruction de la série. En fait si je supprime la série à la main et que je met la "plage de données du graphique" à vide la reconstruction de la série se passe très bien. Le problème c'est que je ne sais pas en vba mettre cette "plage de données du graphique" à vide. (en passant par l'enregistreur de macro, l'on obtient juste la sélection du controle, pas sa mise à jour). Je trouve pas tout ça très normal a première vue.
pour ce qui est de la solution de misange cela ne me convient pas trop car je ne désire pas avoir des dizaines de modèles a trimballer avec mon fichier.
Merci encore à vous.
michdenis a écrit :
Je n'ai pas vu ton application... mais tu semble prendre pour acquis que ce message est relié à la mise à jour de ton graphe ! En es-tu certain ?
Concernant la mise à jour de ton graphe, Pourquoi n'utilise pas des plages nommées définies au niveau de la feuille pour définir tes séries de données ? Pour mettre à jour ton graphe, tu n'auras qu'à redéfinir tes "Plages nommées" En vba, il y a une façon simple de réaffecter une plage à un nom. voici un exemple
Redéfinir le nom "Feuil1!toto" après la mise à jour With Feuil1 .range("A2:A" & .Range("A65536").End(xlup).row).Name = .name & "!Toto" End With
Pour ce qui est du message, sans voir l'application, il est plus difficile de "deviner" ce qui pourrait clocher !
"bcar" a écrit dans le message de groupe de discussion : gnbiae$r4u$ Bonjour,
Merci pour votre soutien,
Alors effectivement michdenis, c'est la solution que j'avais essayé au
début mais j'avais malheureusement oublié de spécifier le nom de la
feuille ou se trouvaient les données donc j'avais abandonné.
J'emploie donc maintenant cette méthode.
Par contre pour information, le problème venait bien de la destruction
reconstruction de la série. En fait si je supprime la série à la main et
que je met la "plage de données du graphique" à vide la reconstruction
de la série se passe très bien. Le problème c'est que je ne sais pas en
vba mettre cette "plage de données du graphique" à vide. (en passant par
l'enregistreur de macro, l'on obtient juste la sélection du controle,
pas sa mise à jour). Je trouve pas tout ça très normal a première vue.
pour ce qui est de la solution de misange cela ne me convient pas trop
car je ne désire pas avoir des dizaines de modèles a trimballer avec mon
fichier.
Merci encore à vous.
michdenis a écrit :
Je n'ai pas vu ton application... mais tu semble prendre pour acquis
que ce message est relié à la mise à jour de ton graphe ! En es-tu certain ?
Concernant la mise à jour de ton graphe, Pourquoi n'utilise pas des plages
nommées définies au niveau de la feuille pour définir tes séries de données ?
Pour mettre à jour ton graphe, tu n'auras qu'à redéfinir tes "Plages nommées"
En vba, il y a une façon simple de réaffecter une plage à un nom. voici un exemple
Redéfinir le nom "Feuil1!toto" après la mise à jour
With Feuil1
.range("A2:A" & .Range("A65536").End(xlup).row).Name = .name & "!Toto"
End With
Pour ce qui est du message, sans voir l'application, il est plus difficile
de "deviner" ce qui pourrait clocher !
"bcar" <bcar44@laposte.net> a écrit dans le message de groupe de discussion :
gnbiae$r4u$1@writer.imaginet.fr...
Bonjour,
Alors effectivement michdenis, c'est la solution que j'avais essayé au début mais j'avais malheureusement oublié de spécifier le nom de la feuille ou se trouvaient les données donc j'avais abandonné. J'emploie donc maintenant cette méthode.
Par contre pour information, le problème venait bien de la destruction reconstruction de la série. En fait si je supprime la série à la main et que je met la "plage de données du graphique" à vide la reconstruction de la série se passe très bien. Le problème c'est que je ne sais pas en vba mettre cette "plage de données du graphique" à vide. (en passant par l'enregistreur de macro, l'on obtient juste la sélection du controle, pas sa mise à jour). Je trouve pas tout ça très normal a première vue.
pour ce qui est de la solution de misange cela ne me convient pas trop car je ne désire pas avoir des dizaines de modèles a trimballer avec mon fichier.
Merci encore à vous.
michdenis a écrit :
Je n'ai pas vu ton application... mais tu semble prendre pour acquis que ce message est relié à la mise à jour de ton graphe ! En es-tu certain ?
Concernant la mise à jour de ton graphe, Pourquoi n'utilise pas des plages nommées définies au niveau de la feuille pour définir tes séries de données ? Pour mettre à jour ton graphe, tu n'auras qu'à redéfinir tes "Plages nommées" En vba, il y a une façon simple de réaffecter une plage à un nom. voici un exemple
Redéfinir le nom "Feuil1!toto" après la mise à jour With Feuil1 .range("A2:A" & .Range("A65536").End(xlup).row).Name = .name & "!Toto" End With
Pour ce qui est du message, sans voir l'application, il est plus difficile de "deviner" ce qui pourrait clocher !
"bcar" a écrit dans le message de groupe de discussion : gnbiae$r4u$ Bonjour,