Créer un graphique sur VBA à partir d'Excel
Bonjour à tous !
Je dois créer un graphique à partir d'un tableau excel, et je souhaiterai le faire sous VBA.
J'ai rédigé une macro qui fonctionne à partir d'un cours sur internet.
J'ai toutefois quelques interrogations :
En exécutant ma macro, deux classeurs apparaissent avec deux graphiques : l'un est un diagramme groupé, l'autre un diagramme empilé.
Je souhaite avoir uniquement un diagramme groupé.
Ma première question est donc la suivante : Comment se fait-il que ce deuxième digramme apparaissent, et comment le supprimer de ma macro ?
Deuxièmement, le nombre de colonnes de mon tableau est variable, je souhaiterais donc que ma macro sélectionne tout mon tableau sans que j'ai à indiquer la dernière cellule de ma plage. Existe-t-il une formule permettant de sélectionner directement la "fin" du tableau ?
Enfin, mon diagramme empilé a les lignes et les colonnes inversées. Je dois donc cliquer sur le bouton "invertir les lignes et les colonnes" pour avoir le graphique voulu. Existe-t-il un code pour faire cette manipulation automatiquement sur VBA ?
Et une dernière question moins importantes : mon graphique apparaît dans un nouveau classeur, est-il possible de demander à ma macro qu'il apparaissent dans ma feuille où figurent mes données sources ?
Je vous remercie tous d'avance !!!
Bonjour,
Teste ce code. La cellule de base pour le tableau est la cellule B34 (cellule qui est située la plus à gauche et la plus en haut du tableau). Ton tableau peut donc évoluer vers le bas et vers la droite :
Public Sub Graphique()
Dim WsD As Worksheet
Dim objChart As Chart
Dim Plage As Range
Set WsD = Worksheets("Données") 'Feuille Source
'point de départ, cellule B34 (en haut à gauche de la plage)
With WsD
Set Plage = .Range(.Cells(34, 2), .Cells(.Cells(34, 2).End(xlDown).Row, .Columns.Count).End(xlToLeft))
End With
Set objChart = ThisWorkbook.Charts.Add
objChart.ChartType = xlColumnStacked 'création d'un histogramme empilé
objChart.SetSourceData Plage, xlRows
End SubHervé.
Bonjour Hervé,
J'ai testé ta solution qui marche parfaitement !
Merci infiniment c'est hyper gentil de ta part de m'avoir aidée !
Très bon week-end et encore merci beaucoup !
Marie