OVH Cloud OVH Cloud

Graphique depuis sélection par macro

3 réponses
Avatar
Caroual
Bonjour,
J'ai une macro qui me sélectionne un certain nombre de données avec
lesquelles je voudrais modifier un graphique. Cette sélection étant variable
je voudrais pouvoir écrire une ligne du genre suivant :

ActiveChart.SetSourceData Source:=Sheets("toto").Selection

J'avais contourné le problème en supprimant ma feuille graph et en la
recréant à chaque fois que j'en avais besoin. Mais cela me supprime la macro
liée à cette feuille qui est activée lorsque je sélectionne l'onglet.
Dans ce cas est-il possible par macro de faire créer une nouvelle feuille
graph et de lui affecter une macro du style :
Private Sub Chart_Activate()
tata
end sub

Merci d'avance
Caroual2@wanadoo.fr

3 réponses

Avatar
Alain CROS
Bonjour.

J'ai une macro qui me sélectionne un certain nombre de données avec
lesquelles je voudrais modifier un graphique. Cette sélection étant variable
je voudrais pouvoir écrire une ligne du genre suivant :

ActiveChart.SetSourceData Source:=Sheets("toto").Selection


Tu peux à la fin de ta macro mettre une ligne comme ça.
Charts("MonGraph").SetSourceData Selection
dans la mesure ou MonGraph est une feuille graphique.
Si ton graphe est incorporé dans la feuille de calcul :
ActiveSheet.ChartObjects(1).Chart.SetSourceData Selection

J'avais contourné le problème en supprimant ma feuille graph et en la
recréant à chaque fois que j'en avais besoin. Mais cela me supprime la macro
liée à cette feuille qui est activée lorsque je sélectionne l'onglet.
Dans ce cas est-il possible par macro de faire créer une nouvelle feuille
graph et de lui affecter une macro du style :
Private Sub Chart_Activate()
tata
end sub


Si tu veux faire comme ça, tu peux lancer ça à la fin de la macro qui effectue la selection.

Sub AjouteGraphSupprimeAncien()
Dim Graph As Chart, MaRange As Range
On Error Resume Next
Application.DisplayAlerts = False
Charts("MonGraph").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Application.ScreenUpdating = False
Set MaRange = Selection
Set Graph = Charts.Add
With Graph
.ChartType = xlColumnClustered
.Location Where:=xlLocationAsNewSheet
.Name = "MonGraph"
.SetSourceData MaRange
End With
MaRange.Parent.Activate
Application.ScreenUpdating = True
Graph.Activate
Set Graph = Nothing
Set MaRange = Nothing
End Sub

Et dans le module ThisWorkbook

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "MonGraph" Then MsgBox "Graphique " & Sh.Name
End Sub

Alain CROS.

Avatar
caroual
Merci c'est ok
Avatar
caroual
Merci c'est ok