Protection et charts (2007 versus 2003)

  • Initiateur de la discussion Initiateur de la discussion stabilo2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

stabilo2

Guest
Bonjour,

Voici deux petites macro simples représentatives de mon problème.
La première, initChart, crée des valeurs dans la feuille, crée une chart vide et protège la feuille.
Certaines cellules sont déprotégées.

la seconde, Chart, recopie des valeurs dans la feuille et trace une courbe.

Les macro sont ok sous Excel 2003.
J'ai une erreur en 2007 à la ligne "Item.Delete" de la macro "Chart".

Lorsque je commente la ligne de initChart qui protège la feuille, c'est OK.

J'en déduit que les protections concernant les Charts sont traitées différemment sous 2007 que 2003, mais je ne sais pas pourquoi ni comment résoudre mon problème proprement.
J'ai essayé un "ActiveSheet.ChartObjects(1).Locked = False" mais ça ne change rien...

Merci d'avance pour vos eclaircissements,
Stabilo



Sub initChart()

ActiveSheet.Cells(1, 1) = 0
ActiveSheet.Cells(2, 1) = 1
ActiveSheet.Cells(3, 1) = 2

ActiveSheet.Cells(5, 2) = 0
ActiveSheet.Cells(6, 2) = 2
ActiveSheet.Cells(7, 2) = 3

ActiveSheet.Cells(5, 2).Locked = False
ActiveSheet.Cells(6, 2).Locked = False
ActiveSheet.Cells(7, 2).Locked = False

MySheetName = ActiveSheet.name

Range(ActiveSheet.Cells(1, 3), ActiveSheet.Cells(15, 7)).Select
With Selection
.MergeCells = True
End With

Charts.Add

ActiveChart.DisplayBlanksAs = xlZero
ActiveChart.PlotVisibleOnly = False
ActiveChart.ChartType = xlLine

ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
ActiveChart.Location Where:=xlLocationAsObject, name:=MySheetName

areaoffset = 5

size_X_pixel = ActiveSheet.Cells(1, 1).Width * 5 - 2 * areaoffset
size_Y_pixel = ActiveSheet.Cells(1, 1).Height * 15 - 2 * areaoffset

With ActiveSheet.ChartObjects(1)
.Width = size_X_pixel
.Height = size_Y_pixel
.Left = ActiveSheet.Cells(rowpos + 1, 3).Left + areaoffset
.Top = ActiveSheet.Cells(rowpos + 1, 3).Top + areaoffset
End With

ActiveSheet.Protect Contents:=True, Scenarios:=True, UserInterfaceOnly:=True

End Sub

Sub Chart()

ActiveSheet.Cells(1, 2) = ActiveSheet.Cells(5, 2)
ActiveSheet.Cells(2, 2) = ActiveSheet.Cells(6, 2)
ActiveSheet.Cells(3, 2) = ActiveSheet.Cells(7, 2)

MySheetName = ActiveSheet.name

For Each Item In ActiveSheet.ChartObjects(1).Chart.SeriesCollection
Item.Delete
Next

ActiveSheet.ChartObjects(1).Chart.SeriesCollection.NewSeries

ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues = "=" & MySheetName & "!R1C1:R3C1"
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Values = "=" & MySheetName & "!R1C2:R3C2"
ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).name = "My curve"

End Sub
 
Re : Protection et charts (2007 versus 2003)

Bonsoir
Je n'ai pas excel 2007, mais ton programme ne fonctionnait pas sous excel 2000, j'ai changé la ligne
'ActiveSheet.ChartObjects(1).Chart.SeriesCollection .NewSeries
Par
ActiveChart.SeriesCollection.NewSeries

Je ne sais pas si cela peut t'aider et tu devrais mettre ou bloque ta macro
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
306
Réponses
7
Affichages
367
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
452
Réponses
17
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
903
Retour