![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2007
Messages: 15
|
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 et 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 PS: Problème reproduit sous XP 64 et Vista 32 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 |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: septembre 2007
Localisation: BAGNÈRES DE BIGORRE
Version Excel : Excel 2007 (PC)
Messages: 699
|
bonjour,
ajoute Code:
ActiveSheet.Unprotect Code:
ActiveSheet.protect N'hesite pas à renommer ta macro Chart() par un nom qui n'est pas utiliser par VBA. cordialement
__________________
fred65200 |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2007
Messages: 15
|
Effectivement, c'est un by-pass tout à fait valable, mais je pense qu'il doit être possible de gérer le problème de manière plus élégante en déprotégeant la Chart ou ses composants lors de la création de celle-ci ? (comme les cellules)
Pour le nom, c'est le cas dans mes macro. celle-ci est juste un petit exemple... Merci fred65200. |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Protection et charts (2007 versus 2003) | stabilo2 | Forum Excel | 8 | 09/11/2007 12h29 |
| Adaptation feuille 2003 / 2007 | Chaps | Forum spécial EXCEL 2007 | 3 | 29/06/2007 12h34 |
| excel 200 / 2003 / 2007 et 65536 | mutzik | Le salon de XLD | 1 | 24/05/2007 12h47 |
| Compatibilité 2003 2007 | hester | Forum spécial EXCEL 2007 | 3 | 19/05/2007 21h24 |
| la différence excel 2007 et 2003 ? | eric123 | Forum spécial EXCEL 2007 | 1 | 29/03/2007 19h47 |