Creation de Graphique en Vba
Fermé
Pop16
-
25 févr. 2020 à 20:13
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 27 févr. 2020 à 21:10
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 27 févr. 2020 à 21:10
A voir également:
- Creation de Graphique en Vba
- Creation compte gmail - Guide
- Changer carte graphique - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création graphique excel - Guide
6 réponses
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
25 févr. 2020 à 21:48
25 févr. 2020 à 21:48
bonjour, as-tu cru celui qui t'a dit qu'il était intuitif de programmer et qu'un débutant ne devait pas commencer par s'exercer?
Bonjour,
J'ai besoin de cette macro car je souhaite réaliser des graphiques rapidement sur 9 pages différentes. Les colonnes à mettre en abscisses et en ordonnées sont du même rang sur chacune de ces feuilles.
Voici le code de la macro enregistrée
Sub Test6()
Range("B1:B15,E1:E15").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("'Individuel H'!$B$1:$B$15,'Individuel H'!$E$1:$E$15")
ActiveChart.SetElement (msoElementDataLabelOutSideEnd)
End Sub
Ce code met la colonne B en abscisse (format texte) et E en ordonnée (Valeur).Les premières lignes sont plus facile à comprendre alors que les deux dernières je suis perdu..
Quand je trouve de nombreux code avec des tabLeaux ou array je me dis que c'est ce qu'il me faut mais je n'arrive encore pas à adapter le code selon mon besoin.
Je n'arrive pas à comprendre comment il choisi de mettre soit la colonne B soit la E en abscisse...
J'aimerais en plus que la taille du graphique s'adapte en fonction de la dernière ligne non vide de chaque tableau. Voici comment j'ai modifié le code:
Sub Graphique2()
'
' Test4 Macro
'
Dim L As Integer
Dim nom As String
nom = ActiveSheet.name
L = Sheets(nom).Range("B100").End(xlUp).Row
Range("B2:B"&L", E2:E"&L).Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
(ERREUR ICI) ActiveChart.SetSourceData Source:=Worksheets("Individuel H").Range("B2:B" & L",E1:E" & L)
ActiveChart.SetElement (msoElementDataLabelOutSideEnd)
End Sub
Le message d'erreur est : la méthode range de l'objet global à échouée..
J'ai beau passer par plusieurs méthode rien à faire..
Merci
J'ai besoin de cette macro car je souhaite réaliser des graphiques rapidement sur 9 pages différentes. Les colonnes à mettre en abscisses et en ordonnées sont du même rang sur chacune de ces feuilles.
Voici le code de la macro enregistrée
Sub Test6()
Range("B1:B15,E1:E15").Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("'Individuel H'!$B$1:$B$15,'Individuel H'!$E$1:$E$15")
ActiveChart.SetElement (msoElementDataLabelOutSideEnd)
End Sub
Ce code met la colonne B en abscisse (format texte) et E en ordonnée (Valeur).Les premières lignes sont plus facile à comprendre alors que les deux dernières je suis perdu..
Quand je trouve de nombreux code avec des tabLeaux ou array je me dis que c'est ce qu'il me faut mais je n'arrive encore pas à adapter le code selon mon besoin.
Je n'arrive pas à comprendre comment il choisi de mettre soit la colonne B soit la E en abscisse...
J'aimerais en plus que la taille du graphique s'adapte en fonction de la dernière ligne non vide de chaque tableau. Voici comment j'ai modifié le code:
Sub Graphique2()
'
' Test4 Macro
'
Dim L As Integer
Dim nom As String
nom = ActiveSheet.name
L = Sheets(nom).Range("B100").End(xlUp).Row
Range("B2:B"&L", E2:E"&L).Select
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
(ERREUR ICI) ActiveChart.SetSourceData Source:=Worksheets("Individuel H").Range("B2:B" & L",E1:E" & L)
ActiveChart.SetElement (msoElementDataLabelOutSideEnd)
End Sub
Le message d'erreur est : la méthode range de l'objet global à échouée..
J'ai beau passer par plusieurs méthode rien à faire..
Merci
Autre petit exemple:
With Charts("NomGraphique").Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "NomAxesdesX"
End With
Pour ce code il n'y a pas trop de soucis pour le comprendre et je vois enfin intervenir le Axes(xlCategorie) qui semble pourvoir être une bonne solution bien qu'il ne me permet pas de choisir la valeur des abscisses dans ce cas. Et, encore une fois j'y passe des heures sans succès ^^
With Charts("NomGraphique").Axes(xlCategory)
.HasTitle = True
.AxisTitle.Text = "NomAxesdesX"
End With
Pour ce code il n'y a pas trop de soucis pour le comprendre et je vois enfin intervenir le Axes(xlCategorie) qui semble pourvoir être une bonne solution bien qu'il ne me permet pas de choisir la valeur des abscisses dans ce cas. Et, encore une fois j'y passe des heures sans succès ^^
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
Modifié le 26 févr. 2020 à 19:14
Modifié le 26 févr. 2020 à 19:14
ne peux-tu pas enregistrer une macro pendant que tu crées un graphique tel que tu le souhaites, puis modifier la macro pour en créer 9? cela t'éviterait de chercher comment contrôler le choix des abscisses et des ordonnées, non?
en ce qui concerne la taille des graphiques, moi j'enregistrerais une macro pendant que je modifie la taille d'un graphique, pour découvrir quels attributs contrôlent la taille.
en ce qui concerne l'erreur avec la méthode range, je suis surpris que cela passe deux lignes plus haut, alors que tu devrais avoir une erreur de syntaxe sur chacune de ces lignes. il me semble qu'il faut plutôt
en ce qui concerne la taille des graphiques, moi j'enregistrerais une macro pendant que je modifie la taille d'un graphique, pour découvrir quels attributs contrôlent la taille.
en ce qui concerne l'erreur avec la méthode range, je suis surpris que cela passe deux lignes plus haut, alors que tu devrais avoir une erreur de syntaxe sur chacune de ces lignes. il me semble qu'il faut plutôt
Range("B2:B" & L & ",E1:E" & L).
Pop16
>
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
27 févr. 2020 à 12:59
27 févr. 2020 à 12:59
Bonjour,
Malheureusement j'ai toujours ce même message d'erreur..
Malheureusement j'ai toujours ce même message d'erreur..
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
27 févr. 2020 à 13:15
27 févr. 2020 à 13:15
que vaut L?
il est parfois utile de décomposer les instructions, pour identifier quelle partie pose problème.
par exemple, au lieu de
tu pourrais faire:
il est parfois utile de décomposer les instructions, pour identifier quelle partie pose problème.
par exemple, au lieu de
ActiveChart.SetSourceData Source:=Worksheets("Individuel H").Range("B2:B" & L & ",E1:E" & L),
tu pourrais faire:
dim rg as range, ad as string ad="B2:B" & L & ",E1:E" & L set rg = Worksheets("Individuel H").Range(ad) ActiveChart.SetSourceData Source:=rgcela te permet aussi d'examiner la valeur de la variable ad au moment de l'erreur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci beaucoup ça paraît plus simple comme ça en effet pour la sélection et même super utile pour sélectionner les colonnes dans différentes feuilles!
Mon L correspond au numéro de la dernière ligne non vide. Ce qui me permet de créer tableau dimensionner en fonction de nombre de personnes dans ce tableau.
L = Sheets(nom).Range("B100").End(xlUp).Row
Merci beaucoup
Merci beaucoup ça paraît plus simple comme ça en effet pour la sélection et même super utile pour sélectionner les colonnes dans différentes feuilles!
Mon L correspond au numéro de la dernière ligne non vide. Ce qui me permet de créer tableau dimensionner en fonction de nombre de personnes dans ce tableau.
L = Sheets(nom).Range("B100").End(xlUp).Row
Merci beaucoup
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
27 févr. 2020 à 17:54
27 févr. 2020 à 17:54
j'ai bien vu l'instruction qui assigne une valeur à L. ma question était "que contient L au moment où l'erreur se produit"?
sur quelle ligne se produit-l'erreur après avoir appliqué ma suggestion?
as-tu examiné la valeur de AD?
sur quelle ligne se produit-l'erreur après avoir appliqué ma suggestion?
as-tu examiné la valeur de AD?
Pop16
>
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
27 févr. 2020 à 19:15
27 févr. 2020 à 19:15
C'est rg qui fait planter le code : erreur définie pas l'application ou par l'objet.
Aucune idée de comment je pourrais en plus lire les valeurs des variables avant que le code ne se stoppe
Aucune idée de comment je pourrais en plus lire les valeurs des variables avant que le code ne se stoppe
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
>
Pop16
27 févr. 2020 à 19:53
27 févr. 2020 à 19:53
rg est utilisé dans deux lignes. c'est laquelle qui fait planter?
une façon de voir le contenu des variables:
- choisir "debugger" au moment où le message d'erreur s'affiche
- positionner le curseur sur la variable
une façon de voir le contenu des variables:
- choisir "debugger" au moment où le message d'erreur s'affiche
- positionner le curseur sur la variable
Le premier rg fait bouger. Selon lui la variable doit être dans un With...
J'ai réussi à obtenir ce que je souhaite avec l'ancien code. L'erreur de range est toujours présente sauf si je lance le code en dehors de l'interface vba. Donc depuis une feuille ou bonton..
Ca resoud le problème mais ne m'aide pas forcément à le comprendre ^^
J'ai réussi à obtenir ce que je souhaite avec l'ancien code. L'erreur de range est toujours présente sauf si je lance le code en dehors de l'interface vba. Donc depuis une feuille ou bonton..
Ca resoud le problème mais ne m'aide pas forcément à le comprendre ^^
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
27 févr. 2020 à 21:10
27 févr. 2020 à 21:10
pourquoi écris-tu "Selon lui la variable doit être dans un With"? selon qui?
as-tu essayé de voir le contenu des variables comme expliqué?
je ne suis pas certain de comprendre quelle aide tu demandes.
as-tu essayé de voir le contenu des variables comme expliqué?
je ne suis pas certain de comprendre quelle aide tu demandes.
26 févr. 2020 à 10:06
26 févr. 2020 à 11:03
si tu souhaite de l'aide, montre-nous la macro adaptée, et décris précisément ce que tu souhaites obtenir.
et surtout, explique pourquoi tu as besoin d'une macro, il me semble que Excel permet de faire cela sans macro.