Bug 149236 - CALC / MACRO graphics of a sheet messed up after inserting a sheet in a lower index number
Summary: CALC / MACRO graphics of a sheet messed up after inserting a sheet in a lower...
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Calc (show other bugs)
Version:
(earliest affected)
7.3.2.2 release
Hardware: x86-64 (AMD64) Windows (All)
: medium minor
Assignee: Not Assigned
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: Macro
  Show dependency treegraph
 
Reported: 2022-05-22 22:58 UTC by Philippe Lévi
Modified: 2023-03-09 09:29 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:


Attachments
spreadsheet with 2 sheets and a macro Main (97.32 KB, application/vnd.oasis.opendocument.spreadsheet)
2022-05-22 22:58 UTC, Philippe Lévi
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Philippe Lévi 2022-05-22 22:58:17 UTC
Created attachment 180306 [details]
spreadsheet with 2 sheets and a macro Main

using macro. adding a sheet (Calc) at any place but at the end may mess up diagrams of "next" sheet.

In the example I join. The macro (Main) copy a sheet with 4 diagrams to a new one (Test), then create a new sheet (Concentrateur) before the last copied (Test). Comparing "Test" with "Modèle Séquence" on the "Test" sheet diagrams are not at the right position and 3 is missing. 

Note that if you move "Test" sheet the diagrams positions are ok! The same if you close and open the spreadsheet. Before creating the last sheet "Concentrateur" the positions are ok too !

Copy of the macro

Sub Main
dim const nomFeuilleDest = "test"
dim const nomFeuilleModeleSequence = "Modèle Séquence"
dim const nomFeuilleConcentrateur = "Concentrateur"
	with thisComponent
		if .sheets.hasByName( nomFeuilleDest) then _
			.sheets.removeByName( nomFeuilleDest)

		.sheets.copyByName( nomFeuilleModeleSequence, nomFeuilleDest, .sheets.Count)
		
		if not .sheets.hasByName(nomFeuilleConcentrateur) then _
			.sheets.insertNewByName(nomFeuilleConcentrateur, 2) ' NOTE the "2" 
	end with
	msgbox "Done !"
End Sub





Version: 7.3.2.2 (x64) / LibreOffice Community
Build ID: 49f2b1bff42cfccbd8f788c8dc32c1c309559be0
CPU threads: 2; OS: Windows 6.1 Service Pack 1 Build 7601; UI render: Skia/Raster; VCL: win
Locale: fr-FR (pt_BR); UI: pt-BR
Calc: threaded
Comment 1 Kamil Landa 2022-05-23 13:57:25 UTC
Confirmed in Version: 7.3.3.1 (x64) / LibreOffice Community
Build ID: 1688991ca59a3ca1c74bc2176b274fba1b034928
CPU threads: 8; OS: Windows 10.0 Build 17763; UI render: Skia/Raster; VCL: win
Locale: cs-CZ (cs_CZ); UI: cs-CZ
Calc: CL

Another interesting fact is, if new sheet (Concentrateur) is created before the sheet 'test', then it is functional. 

Sub Main
dim const nomFeuilleDest = "test"
dim const nomFeuilleModeleSequence = "Modèle Séquence"
dim const nomFeuilleConcentrateur = "Concentrateur"

	with thisComponent

		if not .sheets.hasByName(nomFeuilleConcentrateur) then .sheets.insertNewByName(nomFeuilleConcentrateur, 2) 'create the Concentrateur sheet firstly

		if .sheets.hasByName( nomFeuilleDest) then .sheets.removeByName( nomFeuilleDest)
		.sheets.copyByName( nomFeuilleModeleSequence, nomFeuilleDest, .sheets.Count)

	end with
	
	msgbox "Done !"

End Sub
Comment 2 Philippe Lévi 2022-05-23 14:06:24 UTC
letting it after, but with .sheets.count (inserting at the end) there is also no problem ...
                if not .sheets.hasByName(nomFeuilleConcentrateur) then
.sheets.insertNewByName(nomFeuilleConcentrateur, .sheets.count)