Je veux à travers cette méthode copier des des rectangles dans l’intérieur sont des bitmaps entre feuilles de calcule.
merci de me répondre,
Cordialement,
Bonjour
Premier exemple pour copier la forme sélectionnée vers Feuille2.A1
sub CopierCollerSelection
dim oClasseur as object, oCopie as object, oFeuilleDest as object, oDestination as object
oClasseur = thisComponent
oCopie = oClasseur.currentController.getTransferable
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")
oClasseur.currentController.select(oDestination)
oClasseur.currentController.insertTransferable(oCopie)
end sub
Deuxième exemple pour copier toutes les formes de Feuille1 vers Feuille2.A1 (elles seront donc superposées)
sub CopierCollerSelectionToutesFormes
dim oClasseur as object, oCopie as object, oFeuilleSource as object, oFeuilleDest as object, oDestination as object
dim i as long
oClasseur = thisComponent
oFeuilleSource = oClasseur.Sheets.getByName("Feuille1")
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")
for i = 0 to oFeuilleSource.DrawPage.count - 1
oClasseur.CurrentController.select(oFeuilleSource.DrawPage.getByIndex(i))
oCopie = oClasseur.currentController.getTransferable
oClasseur.currentController.select(oDestination)
oClasseur.currentController.insertTransferable(oCopie)
next i
end sub
Voir copyShape.ods
[Ajout]
L’index est la “position” de la forme dans la collection. On ne peut donc pas le modifier. Si tu veux accéder à une forme précise le plus simple est de la nommer dans l’interface (clic droit sur la forme). On peut dès lors accéder à ce nom dans la procédure. Dans l’exemple suivant on ne copie que la forme nommée “bleue” :
dim oClasseur as object, oCopie as object, oFeuilleSource as object, oFeuilleDest as object, oDestination as object
dim oShape as object
dim i as long
oClasseur = thisComponent
oFeuilleSource = oClasseur.Sheets.getByName("Feuille1")
oFeuilleDest = oClasseur.Sheets.getByName("Feuille2")
oDestination = oFeuilleDest.GetCellRangeByName("A1")
for i = 0 to oFeuilleSource.DrawPage.count - 1
oShape = oFeuilleSource.DrawPage.getByIndex(i)
if oShape.name = "bleu" then
oClasseur.CurrentController.select(oFeuilleSource.DrawPage.getByIndex(i))
oCopie = oClasseur.currentController.getTransferable
oClasseur.currentController.select(oDestination)
oClasseur.currentController.insertTransferable(oCopie)
end if
next i
Cordialement
Merci, de m’avoir répondu aussi vite et précis, j’ai une petite question, comment connaître le 'index d’un shape ou comment le modifier ? merci encore !
Cher Monsieur, je vous remercie du fond du Cœur. Portez vous bien et à bien tôt.