Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Procédure de création de Graphique qui beug

2 réponses
Avatar
2Pierres
Salut,

J'aimerais avoir un conseil de votre part. J'ai utilis=E9 le=20
mode Macro pour cr=E9er un graphique. J'ai ins=E9r=E9 cette=20
macro dans la page de code de ma feuil1. J'ai ins=E9r=E9 le=20
nom de ma proc=E9dure dans Worksheet_Activate et d=E8s que je=20
clique sur mon onglet de ma feuil1, alors ma proc=E9dure ce=20
reg=E9n=E9re constamment. Ma proc=E9dure s'ex=E9cute en boucle et=20
je n'arrive pas =E0 l'arr=EAter. Comment faire pour=20
l'exc=E9cuter qu'une seul fois lors de l'ouverture de ma=20
feuille dans mon classeur?.

D'autre part, est-il possible de supprimer tous les=20
graphique lors de la fermeture d'un fichier Excel. Je=20
connais Workbook_Open mais il n'existe pas Workbook_Close.=20
Est ce qu'il existe une technique?.


Sub WorkSheet_Activate()
CreerGraphique
End Sub

Sub CreerGraphique()
Charts.Add
ActiveChart.ChartType =3D xl3DColumnClustered
ActiveChart.SetSourceData Source:=3DSheets("Menu=20
General").Range( _
"A12:B13,A26:B27"), PlotBy:=3DxlRows
ActiveChart.Location Where:=3DxlLocationAsObject,=20
Name:=3D"Menu General"
With ActiveChart
.Parent.Name =3D "LeParc"
.HasTitle =3D True
.ChartTitle.Characters.Text =3D "Les Parc"
.Axes(xlCategory).HasTitle =3D False
.Axes(xlSeries).HasTitle =3D False
.Axes(xlValue).HasTitle =3D False
End With
With ActiveChart
.HasAxis(xlCategory) =3D False
.HasAxis(xlSeries) =3D False
.HasAxis(xlValue) =3D True
End With
ActiveChart.Axes(xlCategory).CategoryType =3D xlAutomatic
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines =3D False
.HasMinorGridlines =3D False
End With
With ActiveChart.Axes(xlSeries)
.HasMajorGridlines =3D False
.HasMinorGridlines =3D False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines =3D True
.HasMinorGridlines =3D False
End With
ActiveChart.WallsAndGridlines2D =3D False
ActiveChart.ApplyDataLabels=20
Type:=3DxlDataLabelsShowNone, LegendKey:=3DFalse

End Sub

Merci de votre aide

2Pierres

2 réponses

Avatar
Philippe.R
Bonjour,
Il me semble que ta sub CreerGraphique serait mieux dans un module ordinaire
Tu peux modifier ensuite ta procédure Activate de cette manière, déclaration de la variable en tête de
module de feuille :

Public mavar As Boolean

Private Sub Worksheet_Activate()
If mavar = True Then Exit Sub
CreerGraphique
mavar = True
End Sub


Par ailleurs, le pendant de la procédure Open est BeforeClose
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"2Pierres" a écrit dans le message de
news:098601c3a12d$f6f16000$

Salut,

J'aimerais avoir un conseil de votre part. J'ai utilisé le
mode Macro pour créer un graphique. J'ai inséré cette
macro dans la page de code de ma feuil1. J'ai inséré le
nom de ma procédure dans Worksheet_Activate et dès que je
clique sur mon onglet de ma feuil1, alors ma procédure ce
regénére constamment. Ma procédure s'exécute en boucle et
je n'arrive pas à l'arrêter. Comment faire pour
l'excécuter qu'une seul fois lors de l'ouverture de ma
feuille dans mon classeur?.

D'autre part, est-il possible de supprimer tous les
graphique lors de la fermeture d'un fichier Excel. Je
connais Workbook_Open mais il n'existe pas Workbook_Close.
Est ce qu'il existe une technique?.


Sub WorkSheet_Activate()
CreerGraphique
End Sub

Sub CreerGraphique()
Charts.Add
ActiveChart.ChartType = xl3DColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Menu
General").Range( _
"A12:B13,A26:B27"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject,
Name:="Menu General"
With ActiveChart
.Parent.Name = "LeParc"
.HasTitle = True
.ChartTitle.Characters.Text = "Les Parc"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType = xlAutomatic
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlSeries)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.WallsAndGridlines2D = False
ActiveChart.ApplyDataLabels
Type:=xlDataLabelsShowNone, LegendKey:úlse

End Sub

Merci de votre aide

2Pierres
Avatar
Merci Philippe, je vais essayer ton conseil dès que je
peux.

2Pierres
-----Message d'origine-----
Bonjour,
Il me semble que ta sub CreerGraphique serait mieux dans
un module ordinaire

Tu peux modifier ensuite ta procédure Activate de cette
manière, déclaration de la variable en tête de

module de feuille :

Public mavar As Boolean

Private Sub Worksheet_Activate()
If mavar = True Then Exit Sub
CreerGraphique
mavar = True
End Sub


Par ailleurs, le pendant de la procédure Open est
BeforeClose

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"2Pierres" a écrit
dans le message de

news:098601c3a12d$f6f16000$

Salut,

J'aimerais avoir un conseil de votre part. J'ai utilisé le
mode Macro pour créer un graphique. J'ai inséré cette
macro dans la page de code de ma feuil1. J'ai inséré le
nom de ma procédure dans Worksheet_Activate et dès que je
clique sur mon onglet de ma feuil1, alors ma procédure ce
regénére constamment. Ma procédure s'exécute en boucle et
je n'arrive pas à l'arrêter. Comment faire pour
l'excécuter qu'une seul fois lors de l'ouverture de ma
feuille dans mon classeur?.

D'autre part, est-il possible de supprimer tous les
graphique lors de la fermeture d'un fichier Excel. Je
connais Workbook_Open mais il n'existe pas Workbook_Close.
Est ce qu'il existe une technique?.


Sub WorkSheet_Activate()
CreerGraphique
End Sub

Sub CreerGraphique()
Charts.Add
ActiveChart.ChartType = xl3DColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Menu
General").Range( _
"A12:B13,A26:B27"), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject,
Name:="Menu General"
With ActiveChart
.Parent.Name = "LeParc"
.HasTitle = True
.ChartTitle.Characters.Text = "Les Parc"
.Axes(xlCategory).HasTitle = False
.Axes(xlSeries).HasTitle = False
.Axes(xlValue).HasTitle = False
End With
With ActiveChart
.HasAxis(xlCategory) = False
.HasAxis(xlSeries) = False
.HasAxis(xlValue) = True
End With
ActiveChart.Axes(xlCategory).CategoryType =
xlAutomatic

With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlSeries)
.HasMajorGridlines = False
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.WallsAndGridlines2D = False
ActiveChart.ApplyDataLabels
Type:=xlDataLabelsShowNone, LegendKey:úlse

End Sub

Merci de votre aide

2Pierres


.