Macros sur graphiques
Dernière réponse : dans Programmation
Bonjour,
J'essaie d'effectuer une macro sur un graphique excel. Le but de la macro est de faire évoluer le graphique en fonction des données sources qui diffèrent.
Voici ma macro
Dim a, b, c As String
Dim Z_NAT02 As Long
Dim Z_NAT07 As Long
a = CStr(ThisWorkbook.Sheets("Données").Cells(1, 1).Value)
b = CStr(ThisWorkbook.Sheets("Données").Cells(2, 1).Value)
c = a & "\CRS" & b & ".xls"
Workbooks.Open (c)
Workbooks("CRS" & b & ".xls").Sheets("CACE").Activate
Sheets("CACE").Range("U4:U12").Select
ActiveSelection = Z_NAT02
Sheets("CACE").Range("U28:U36").Select
ActiveSelection = Z_NAT07
Workbooks("Graphiques.xls").Sheets("Feuil1").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
With ActiveChart
.SeriesCollection(1).Values = Z_NAT02
.SeriesCollection(2).Values = Z_NAT07
End With
End Sub
Dans cette macro, la variable a et b me permettent d'ouvrir un autre fichier excel où je retrouve ma plage de données.
Les plages de données Z_NAT02 et Z_NAT07 varient en fonction du fichier ouvert.
Dans mon fichier "Graphiques", le graphique est déjà construit mais sans valeur dans les plages de données.
Je ne comprend pas, excel n'arrive paas à me prendre les valeurs souhaitées.
Je ne sais pas comment ça marche réellement les macros pour les graphiques. Faut il que j'affecte forcément la macro au graphique ou pas ??
Merci d'avance pour vos éclaircissements.
J'essaie d'effectuer une macro sur un graphique excel. Le but de la macro est de faire évoluer le graphique en fonction des données sources qui diffèrent.
Voici ma macro
Dim a, b, c As String
Dim Z_NAT02 As Long
Dim Z_NAT07 As Long
a = CStr(ThisWorkbook.Sheets("Données").Cells(1, 1).Value)
b = CStr(ThisWorkbook.Sheets("Données").Cells(2, 1).Value)
c = a & "\CRS" & b & ".xls"
Workbooks.Open (c)
Workbooks("CRS" & b & ".xls").Sheets("CACE").Activate
Sheets("CACE").Range("U4:U12").Select
ActiveSelection = Z_NAT02
Sheets("CACE").Range("U28:U36").Select
ActiveSelection = Z_NAT07
Workbooks("Graphiques.xls").Sheets("Feuil1").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
With ActiveChart
.SeriesCollection(1).Values = Z_NAT02
.SeriesCollection(2).Values = Z_NAT07
End With
End Sub
Dans cette macro, la variable a et b me permettent d'ouvrir un autre fichier excel où je retrouve ma plage de données.
Les plages de données Z_NAT02 et Z_NAT07 varient en fonction du fichier ouvert.
Dans mon fichier "Graphiques", le graphique est déjà construit mais sans valeur dans les plages de données.
Je ne comprend pas, excel n'arrive paas à me prendre les valeurs souhaitées.
Je ne sais pas comment ça marche réellement les macros pour les graphiques. Faut il que j'affecte forcément la macro au graphique ou pas ??
Merci d'avance pour vos éclaircissements.
Autres pages sur : macros graphiques
Lassé par la pub ? Créez un compte
Lis les règles de publication et rajoute donc les balises code là ou il faut.
Ensuite as tu mis le code suivant au début de ton module.
Ensuite je comprends pas bien l'utilisation de Z_NAT... Déjà c'est des variables donc pas de majuscule (c'est beurk...)
Ensuite tu dis qu'elle sont variables mais tu affectes une plage de données fixe (U4U12 dans un cas)
Seriescollection est une collection qui contient les plages de données des différentes courbe qui apparaissent, et non pas les entiers.
Ensuite as tu mis le code suivant au début de ton module.
Option Explicit
Ensuite je comprends pas bien l'utilisation de Z_NAT... Déjà c'est des variables donc pas de majuscule (c'est beurk...)
Ensuite tu dis qu'elle sont variables mais tu affectes une plage de données fixe (U4U12 dans un cas)
Seriescollection est une collection qui contient les plages de données des différentes courbe qui apparaissent, et non pas les entiers.
mimasis a dit :
Pardon pour les codes...
je remets ma macro avec les codes
je changerai aussi les majuscules de mes variables.
Option Explicit
Dim a, b, c As String
Dim Z_NAT02 As Long
Dim Z_NAT07 As Long
a = CStr(ThisWorkbook.Sheets("Données").Cells(1, 1).Value)
b = CStr(ThisWorkbook.Sheets("Données").Cells(2, 1).Value)
c = a & "\CRS" & b & ".xls"
Workbooks.Open (c)
Workbooks("CRS" & b & ".xls").Sheets("CACE").Activate
Sheets("CACE").Range("U4:U12").Select
ActiveSelection = Z_NAT02
Sheets("CACE").Range("U28:U36").Select
ActiveSelection = Z_NAT07
Workbooks("Graphiques.xls").Sheets("Feuil1").Activate
ActiveSheet.ChartObjects("Graphique 1").Activate
With ActiveChart
.SeriesCollection(1).Values = Z_NAT02
.SeriesCollection(2).Values = Z_NAT07
End With
End Sub
Concernant les variables, je ne sais pas comment faire comprendre à excel que je veux prendre une plage de données dans un fichier qui sera différent a chaque fois. Je voulais juste dire que Z_NAT.. correspond à une plage de données qu'il doit prendre comme donnée sources. Cette plage de données sera toujours la même mais dans des feuilles ou des classeurs différents.
Je pense que ça ne doit pas être la meilleure solution!!!
PS : rajouter Option Explicit me sert à quoi concrètement ?
Merci Freeman23
Option explicit, ca permet une meilleur vérification quand tu compiles le code.
Si la plage est constante il n'y a rien de compliquer.
Voilà ca me semble plus judicieux comme ca meme si j'ai pu mal comprendre.
Si la plage est constante il n'y a rien de compliquer.
Dim a, b, c As String
Dim wbfile as workbook
a = CStr(ThisWorkbook.Sheets("Données" ).Cells(1, 1).Value)
b = CStr(ThisWorkbook.Sheets("Données" ).Cells(2, 1).Value)
c = a & "\CRS" & b & ".xls"
set wbfile = Workbooks.Open (c)
wbfile.Sheets("CACE" ).Activate
Workbooks("Graphiques.xls" ).Sheets("Feuil1" ).Activate
ActiveSheet.ChartObjects("Graphique 1" ).Activate
With ActiveChart
.SeriesCollection(1).Values = wbfile.Sheets("CACE" ).Range("U4:U12" )
.SeriesCollection(2).Values = wbfile.Sheets("CACE" ).Range("U28:U36" )
End With
End Sub
Voilà ca me semble plus judicieux comme ca meme si j'ai pu mal comprendre.
Lassé par la pub ? Créez un compte
Merci